From c82ca563638660bb51807276fd2d1dc34d92deb3 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Tue, 3 Mar 2020 10:15:33 -0800 Subject: [PATCH 001/230] Initial setup and overview --- README.md | 14 ++++++++++++++ document/core/index.rst | 2 +- document/core/util/macros.def | 8 ++++---- proposals/memory64/Overview.md | 13 +++++++++++++ 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 proposals/memory64/Overview.md diff --git a/README.md b/README.md index 26d58a3a5..9ceb7a1df 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,17 @@ +[![Build Status](https://travis-ci.org/WebAssembly/memory64.svg?branch=master)](https://travis-ci.org/WebAssembly/memory64) + +# Memory64 Proposal for WebAssembly + +This repository is a clone of [github.com/WebAssembly/spec/](https://github.com/WebAssembly/spec/). +It is meant for discussion, prototype specification and implementation of a proposal to +add support for 64-bit memory indexes to WebAssembly. + +* See the [overview](proposals/memory64/Overview.md) for a summary of the proposal. + +* See the [modified spec](https://webassembly.github.io/memory64/) for details. + +Original `README` from upstream repository follows... + [![Build Status](https://travis-ci.org/WebAssembly/spec.svg?branch=master)](https://travis-ci.org/WebAssembly/spec) # spec diff --git a/document/core/index.rst b/document/core/index.rst index 1d8d6a4aa..2e97f51ec 100644 --- a/document/core/index.rst +++ b/document/core/index.rst @@ -3,7 +3,7 @@ WebAssembly Specification .. only:: html - | Release |release| (Draft, |today|) + | Release |release| + memory64 (Draft, |today|) | Editor: Andreas Rossberg diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 0354e12a0..a4e3d8836 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -3,11 +3,11 @@ .. External Standards .. ------------------ -.. |WasmDraft| replace:: http://webassembly.github.io/spec/core/ -.. _WasmDraft: http://webassembly.github.io/spec/core/ +.. |WasmDraft| replace:: http://webassembly.github.io/memory64/core/ +.. _WasmDraft: http://webassembly.github.io/memory64/core/ -.. |WasmIssues| replace:: http://github.com/webassembly/spec/issues/ -.. _WasmIssues: http://github.com/webassembly/spec/issues/ +.. |WasmIssues| replace:: http://github.com/webassembly/memory64/issues/ +.. _WasmIssues: http://github.com/webassembly/memory64/issues/ .. |IEEE754| replace:: IEEE 754-2019 .. _IEEE754: https://ieeexplore.ieee.org/document/8766229 diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md new file mode 100644 index 000000000..eb582fb69 --- /dev/null +++ b/proposals/memory64/Overview.md @@ -0,0 +1,13 @@ +# Memory64 + +## Summary + +This proposal extends WebAssembly with 64-bit indexes to linear memory. + +## Motivation + +TODO + +## Overview + +TODO From 35b3ac48fde7da67f3f3b9fed50b96bdd4939631 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 13 Mar 2020 16:59:02 -0700 Subject: [PATCH 002/230] Initial Overview --- proposals/memory64/Overview.md | 151 ++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 3 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index eb582fb69..d6a7d5703 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -2,12 +2,157 @@ ## Summary -This proposal extends WebAssembly with 64-bit indexes to linear memory. +This page describes a proposal to support linear memory of sizes larger than +232 bits. It provides no new instructions, but instead extends the +currently existing instructions to allow 64-bit indexes. ## Motivation -TODO +[WebAssembly linear memory objects][memory object] have sizes measured in +[pages][memory page]. Each page is 65536 (216) bytes. In WebAssembly +version 1, a linear memory can have at most 65536 pages, for a total of +232 bytes (4 [gibibytes][gibibyte]). + +In addition to this page limit, all [memory instructions][] currently use the +[`i32` type][i32] as a memory index. This means they can address at most +232 bytes as well. + +For many applications, 4 gibibytes of memory is enough. Using 32-bit memory +indexes is sufficient in this case, and has the additional benefit that +pointers in the producer language are smaller, which can yield memory savings. +However, for applications that need more memory than this, there are no easy +workarounds given the current WebAssembly feature set. Allowing the WebAssembly +module to choose between 32-bit and 64-bit memory indexes addresses both +concerns. + +Similarly, since WebAssembly is a Virtual [Instruction Set Architecture][ISA] +(ISA), some hosts may want to use the WebAssembly binary format as a portable +executable format, in addition to supporting other non-virtual ISAs. Nearly all +ISAs have support for 64-bit memory addresses now, and a host may not want to +have to support 32-bit memory addresses in their ABI. ## Overview -TODO +### Structure + +* The [limits][syntax limits] structure is changed to use `u64` + - `limits ::= {min u64, max u64?} + +* The [memory type][syntax memtype] structure is extended to have an index type + - `memtype ::= limits valtype` + +* The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset + - `memarg ::= {offset u64, align u32} + + +### Validation + +* [Memory page limits][valid limits] are extended for `i64` indexes + - ```⊦ limits : 216 + ⊦ limits i32 ok``` + - ```⊦ limits : 248 + ⊦ limits i64 ok``` + +* All [memory instructions][valid meminst] are changed to use the index type, + and the offset must also be in range of the index type + - t.load memarg + - ```C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| + C ⊦ t.load memarg : [it] → [t]``` + - t.loadN_sx memarg + - ```C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| + C ⊦ t.loadN_sx memarg : [it] → [t]``` + - t.store memarg + - ```C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| + C ⊦ t.store memarg : [it t] → []``` + - t.storeN_sx memarg + - ```C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| + C ⊦ t.storeN_sx memarg : [it t] → []``` + - memory.size + - ```C.mems[0] = limits it + C ⊦ memory.size : [] → [it]``` + - memory.grow + - ```C.mems[0] = limits it + C ⊦ memory.grow : [it] → [it]``` + - (and similar for memory instructions from other proposals) + +* The memarg immediate's offset now must be validated, depending on the index + type + - ```memarg.offset <= i_N + +* [Data segment validation][valid data] uses the index type + - ```C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const + C ⊦ {data x, offset expr, init b*} ok``` + + +### Execution + +* [Memory instances][exec mem] are extended to have 64-bit vectors and a `u64` + max size + - `meminst ::= { data vec64(byte), max u64? }` + +* [Memory instructions][exec meminst] use the index type instead of `i32` + - `t.load memarg` + - `t.loadN_sx memarg` + - `t.store memarg` + - `t.storeN memarg` + - `memory.size` + - `memory.grow` + - (spec text omitted) + +* [memory.grow][exec memgrow] is changed to check for a size greater than + 264 - 1, and to return 264-1 when `memory.grow` fails. + +* [Memory import matching][exec memmatch] requires that the index type matches + - ``` ⊦ limits_1 <= limits_2 it_1 = it_2 + ⊦ mem limits_1 it_1 <= mem limits_2 it_2 + ``` + + +### Binary format + +* The [limits][binary limits] structure also encodes an additional value to + indicate the index type + - ```limits ::= 0x00 n:u32 ⇒ {min n, max ϵ}, 0 + | 0x01 n:u32 m:u32 ⇒ {min n, max ϵ}, 0 + | 0x02 n:u32 ⇒ {min n, max ϵ}, 1 ;; from threads proposal + | 0x03 n:u32 m:u32 ⇒ {min n, max n}, 1 ;; from threads proposal + | 0x04 n:u64 ⇒ {min n, max ϵ}, 2 + | 0x05 n:u64 m:u64 ⇒ {min n, max n}, 2``` + +* The [memory type][binary memtype] structure is extended to use this limits + encoding + - ```memtype ::= lim, 0:limits ⇒ lim i32 + | lim, 2:limits ⇒ lim i64``` + +* The [memarg][binary memarg]'s offset is read as `u64` + - `memarg ::= a:u32 o:u64` + +### Text format + +* The [memory type][text memtype] definition is extended to allow an optional + index type, which must be either `i32` or `i64` + - ```memtype ::= lim:limits ⇒ lim i32 + | 'i32' lim:limits ⇒ lim i32 + | 'i64' lim:limits ⇒ lim i64``` + + +[memory object]: https://webassembly.github.io/spec/core/syntax/modules.html#memories +[memory page]: https://webassembly.github.io/spec/core/exec/runtime.html#page-size +[gibibyte]: https://en.wikipedia.org/wiki/Gibibyte +[i32]: https://webassembly.github.io/spec/core/syntax/types.html#syntax-valtype +[memory instructions]: https://webassembly.github.io/spec/core/syntax/instructions.html#memory-instructions +[ISA]: https://en.wikipedia.org/wiki/Instruction_set_architecture +[syntax limits]: https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits +[syntax memtype]: https://webassembly.github.io/spec/core/syntax/types.html#memory-types +[syntax memarg]: https://webassembly.github.io/spec/core/syntax/instructions.html#syntax-memarg +[valid limits]: https://webassembly.github.io/spec/core/valid/types.html#limits +[valid meminst]: https://webassembly.github.io/spec/core/valid/instructions.html#memory-instructions +[valid data]: https://webassembly.github.io/spec/core/valid/modules.html#data-segments +[exec mem]: https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances +[exec meminst]: https://webassembly.github.io/spec/core/exec/instructions.html#memory-instructions +[exec memgrow]: https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow +[exec memmatch]: https://webassembly.github.io/spec/core/exec/modules.html#memories +[binary limits]: https://webassembly.github.io/spec/core/binary/types.html#limits +[binary memtype]: https://webassembly.github.io/spec/core/binary/types.html#memory-types +[binary memarg]: https://webassembly.github.io/spec/core/binary/instructions.html#binary-memarg +[text memtype]: https://webassembly.github.io/spec/core/text/types.html#text-memtype From a97b7561281053ea683eee604d0ca32a09fa6188 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 13 Mar 2020 17:10:57 -0700 Subject: [PATCH 003/230] Fix markdown --- proposals/memory64/Overview.md | 95 +++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 37 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index d6a7d5703..4f6a0f19b 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -36,52 +36,66 @@ have to support 32-bit memory addresses in their ABI. ### Structure * The [limits][syntax limits] structure is changed to use `u64` - - `limits ::= {min u64, max u64?} + - `limits ::= {min u64, max u64?}` * The [memory type][syntax memtype] structure is extended to have an index type - `memtype ::= limits valtype` * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset - - `memarg ::= {offset u64, align u32} + - `memarg ::= {offset u64, align u32}` ### Validation * [Memory page limits][valid limits] are extended for `i64` indexes - - ```⊦ limits : 216 - ⊦ limits i32 ok``` - - ```⊦ limits : 248 - ⊦ limits i64 ok``` + - ``` + ⊦ limits : 216 + ⊦ limits i32 ok + ``` + - ``` + ⊦ limits : 248 + ⊦ limits i64 ok + ``` * All [memory instructions][valid meminst] are changed to use the index type, and the offset must also be in range of the index type - t.load memarg - - ```C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| - C ⊦ t.load memarg : [it] → [t]``` + - ``` + C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| + C ⊦ t.load memarg : [it] → [t] + ``` - t.loadN_sx memarg - - ```C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| - C ⊦ t.loadN_sx memarg : [it] → [t]``` + - ``` + C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| + C ⊦ t.loadN_sx memarg : [it] → [t] + ``` - t.store memarg - - ```C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| - C ⊦ t.store memarg : [it t] → []``` + - ``` + C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| + C ⊦ t.store memarg : [it t] → [] + ``` - t.storeN_sx memarg - - ```C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| - C ⊦ t.storeN_sx memarg : [it t] → []``` + - ``` + C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| + C ⊦ t.storeN_sx memarg : [it t] → [] + ``` - memory.size - - ```C.mems[0] = limits it - C ⊦ memory.size : [] → [it]``` + - ``` + C.mems[0] = limits it + C ⊦ memory.size : [] → [it] + ``` - memory.grow - - ```C.mems[0] = limits it - C ⊦ memory.grow : [it] → [it]``` + - ``` + C.mems[0] = limits it + C ⊦ memory.grow : [it] → [it] + ``` - (and similar for memory instructions from other proposals) -* The memarg immediate's offset now must be validated, depending on the index - type - - ```memarg.offset <= i_N - * [Data segment validation][valid data] uses the index type - - ```C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const - C ⊦ {data x, offset expr, init b*} ok``` + - ``` + C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const + C ⊦ {data x, offset expr, init b*} ok + ``` ### Execution @@ -103,8 +117,9 @@ have to support 32-bit memory addresses in their ABI. 264 - 1, and to return 264-1 when `memory.grow` fails. * [Memory import matching][exec memmatch] requires that the index type matches - - ``` ⊦ limits_1 <= limits_2 it_1 = it_2 - ⊦ mem limits_1 it_1 <= mem limits_2 it_2 + - ``` + ⊦ limits_1 <= limits_2 it_1 = it_2 + ⊦ mem limits_1 it_1 <= mem limits_2 it_2 ``` @@ -112,17 +127,21 @@ have to support 32-bit memory addresses in their ABI. * The [limits][binary limits] structure also encodes an additional value to indicate the index type - - ```limits ::= 0x00 n:u32 ⇒ {min n, max ϵ}, 0 - | 0x01 n:u32 m:u32 ⇒ {min n, max ϵ}, 0 - | 0x02 n:u32 ⇒ {min n, max ϵ}, 1 ;; from threads proposal - | 0x03 n:u32 m:u32 ⇒ {min n, max n}, 1 ;; from threads proposal - | 0x04 n:u64 ⇒ {min n, max ϵ}, 2 - | 0x05 n:u64 m:u64 ⇒ {min n, max n}, 2``` + - ``` + limits ::= 0x00 n:u32 ⇒ {min n, max ϵ}, 0 + | 0x01 n:u32 m:u32 ⇒ {min n, max ϵ}, 0 + | 0x02 n:u32 ⇒ {min n, max ϵ}, 1 ;; from threads proposal + | 0x03 n:u32 m:u32 ⇒ {min n, max n}, 1 ;; from threads proposal + | 0x04 n:u64 ⇒ {min n, max ϵ}, 2 + | 0x05 n:u64 m:u64 ⇒ {min n, max n}, 2 + ``` * The [memory type][binary memtype] structure is extended to use this limits encoding - - ```memtype ::= lim, 0:limits ⇒ lim i32 - | lim, 2:limits ⇒ lim i64``` + - ``` + memtype ::= lim, 0:limits ⇒ lim i32 + | lim, 2:limits ⇒ lim i64 + ``` * The [memarg][binary memarg]'s offset is read as `u64` - `memarg ::= a:u32 o:u64` @@ -131,9 +150,11 @@ have to support 32-bit memory addresses in their ABI. * The [memory type][text memtype] definition is extended to allow an optional index type, which must be either `i32` or `i64` - - ```memtype ::= lim:limits ⇒ lim i32 - | 'i32' lim:limits ⇒ lim i32 - | 'i64' lim:limits ⇒ lim i64``` + - ``` + memtype ::= lim:limits ⇒ lim i32 + | 'i32' lim:limits ⇒ lim i32 + | 'i64' lim:limits ⇒ lim i64 + ``` [memory object]: https://webassembly.github.io/spec/core/syntax/modules.html#memories From c650d3927ad208554e875f28a082532efc60b2a3 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 13 Mar 2020 17:15:07 -0700 Subject: [PATCH 004/230] Remove in ``` blocks; use underline --- proposals/memory64/Overview.md | 40 +++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 4f6a0f19b..9527d59de 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -49,11 +49,13 @@ have to support 32-bit memory addresses in their ABI. * [Memory page limits][valid limits] are extended for `i64` indexes - ``` - ⊦ limits : 216 + ⊦ limits : 2**16 + ---------------- ⊦ limits i32 ok ``` - ``` - ⊦ limits : 248 + ⊦ limits : 2**48 + ---------------- ⊦ limits i64 ok ``` @@ -61,32 +63,38 @@ have to support 32-bit memory addresses in their ABI. and the offset must also be in range of the index type - t.load memarg - ``` - C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| - C ⊦ t.load memarg : [it] → [t] + C.mems[0] = limits it 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + -------------------------------------------------------------------------- + C ⊦ t.load memarg : [it] → [t] ``` - t.loadN_sx memarg - ``` - C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| - C ⊦ t.loadN_sx memarg : [it] → [t] + C.mems[0] = limits it 2**memarg.align <= N/8 memarg.offset < 2**|it| + ------------------------------------------------------------------------ + C ⊦ t.loadN_sx memarg : [it] → [t] ``` - t.store memarg - ``` - C.mems[0] = limits it 2memarg.align <= |t|/8 memarg.offset < 2|it| - C ⊦ t.store memarg : [it t] → [] + C.mems[0] = limits it 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + -------------------------------------------------------------------------- + C ⊦ t.store memarg : [it t] → [] ``` - t.storeN_sx memarg - ``` - C.mems[0] = limits it 2memarg.align <= N/8 memarg.offset < 2|it| - C ⊦ t.storeN_sx memarg : [it t] → [] + C.mems[0] = limits it 2**memarg.align <= N/8 memarg.offset < 2**|it| + ------------------------------------------------------------------------ + C ⊦ t.storeN_sx memarg : [it t] → [] ``` - memory.size - ``` - C.mems[0] = limits it + C.mems[0] = limits it + --------------------------- C ⊦ memory.size : [] → [it] ``` - memory.grow - ``` - C.mems[0] = limits it + C.mems[0] = limits it + ----------------------------- C ⊦ memory.grow : [it] → [it] ``` - (and similar for memory instructions from other proposals) @@ -94,7 +102,8 @@ have to support 32-bit memory addresses in their ABI. * [Data segment validation][valid data] uses the index type - ``` C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const - C ⊦ {data x, offset expr, init b*} ok + ------------------------------------------------------- + C ⊦ {data x, offset expr, init b*} ok ``` @@ -118,7 +127,8 @@ have to support 32-bit memory addresses in their ABI. * [Memory import matching][exec memmatch] requires that the index type matches - ``` - ⊦ limits_1 <= limits_2 it_1 = it_2 + ⊦ limits_1 <= limits_2 it_1 = it_2 + ---------------------------------------- ⊦ mem limits_1 it_1 <= mem limits_2 it_2 ``` @@ -151,7 +161,7 @@ have to support 32-bit memory addresses in their ABI. * The [memory type][text memtype] definition is extended to allow an optional index type, which must be either `i32` or `i64` - ``` - memtype ::= lim:limits ⇒ lim i32 + memtype ::= lim:limits ⇒ lim i32 | 'i32' lim:limits ⇒ lim i32 | 'i64' lim:limits ⇒ lim i64 ``` From 63537077a732f522eb4540cd3e7ef305aec29c1f Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Mon, 16 Mar 2020 11:16:23 -0700 Subject: [PATCH 005/230] . --- proposals/memory64/Overview.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 9527d59de..688348893 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -38,8 +38,11 @@ have to support 32-bit memory addresses in their ABI. * The [limits][syntax limits] structure is changed to use `u64` - `limits ::= {min u64, max u64?}` +* A new `idxtype` can be either `i32` or `i64` + - `idxtype ::= i32 | i64` + * The [memory type][syntax memtype] structure is extended to have an index type - - `memtype ::= limits valtype` + - `memtype ::= limits idxtype` * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset - `memarg ::= {offset u64, align u32}` @@ -122,8 +125,10 @@ have to support 32-bit memory addresses in their ABI. - `memory.grow` - (spec text omitted) -* [memory.grow][exec memgrow] is changed to check for a size greater than - 264 - 1, and to return 264-1 when `memory.grow` fails. +* [memory.grow][exec memgrow] has behavior that depends on the index type: + - for `i32`: no change + - for `i64`: check for a size greater than 264 - 1, and return + 264 - 1 when `memory.grow` fails. * [Memory import matching][exec memmatch] requires that the index type matches - ``` From f23e5e9f7317c8a36232a3716996348d51956a43 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Wed, 5 Aug 2020 10:26:54 -0700 Subject: [PATCH 006/230] Update overview (#7) Includes changes for bulk memory instructions and memory abbreviations. See https://github.com/WebAssembly/memory64/issues/5 and https://github.com/WebAssembly/memory64/issues/6. --- proposals/memory64/Overview.md | 62 ++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 688348893..a68cf46fe 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -100,8 +100,52 @@ have to support 32-bit memory addresses in their ABI. ----------------------------- C ⊦ memory.grow : [it] → [it] ``` + - memory.fill + - ``` + C.mems[0] = limits it + ----------------------------- + C ⊦ memory.fill : [it i32 it] → [] + ``` + - memory.copy + - ``` + C.mems[0] = limits it + ----------------------------- + C ⊦ memory.copy : [it it it] → [] + ``` + - memory.init x + - ``` + C.mems[0] = limits it C.datas[x] = ok + ------------------------------------------- + C ⊦ memory.init : [it i32 i32] → [] + ``` - (and similar for memory instructions from other proposals) +* The [Multi-memory proposal][multi memory] extends each of these instructions + with one or two memory index immediates. The index type for that memory will + be used. For example, + - memory.size x + - ``` + C.mems[x] = limits it + --------------------------- + C ⊦ memory.size x : [] → [it] + ``` + + `memory.copy` has two memory index immediates, so will have multiple possible + signatures: + - memory.copy d s + - ``` + C.mems[d] = limits it_d C.mems[s] = limits it_s + -------------------------------------------------------- + C ⊦ memory.copy d s : [it_d it_s f(it_d, it_s)] → [] + + where: + + f(i32, i32) = i32 + f(i64, i32) = i32 + f(i32, i64) = i32 + f(i64, i64) = i64 + ``` + * [Data segment validation][valid data] uses the index type - ``` C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const @@ -163,14 +207,24 @@ have to support 32-bit memory addresses in their ABI. ### Text format +* There is a new index type: + - ``` + indextype ::= 'i32' | 'i64' + ``` + * The [memory type][text memtype] definition is extended to allow an optional index type, which must be either `i32` or `i64` - ``` - memtype ::= lim:limits ⇒ lim i32 - | 'i32' lim:limits ⇒ lim i32 - | 'i64' lim:limits ⇒ lim i64 + memtype ::= lim:limits ⇒ lim i32 + | it:indextype lim:limits ⇒ lim it ``` +* The [memory abbreviation][text memabbrev] definition is extended to allow an + optional index type too, which must be either `i32` or `i64` + - ``` + '(' 'memory' id? index_type? '(' 'data' b_n:datastring ')' ')' === ... + ``` + [memory object]: https://webassembly.github.io/spec/core/syntax/modules.html#memories [memory page]: https://webassembly.github.io/spec/core/exec/runtime.html#page-size @@ -192,3 +246,5 @@ have to support 32-bit memory addresses in their ABI. [binary memtype]: https://webassembly.github.io/spec/core/binary/types.html#memory-types [binary memarg]: https://webassembly.github.io/spec/core/binary/instructions.html#binary-memarg [text memtype]: https://webassembly.github.io/spec/core/text/types.html#text-memtype +[text memabbrev]: https://webassembly.github.io/spec/core/text/modules.html#text-mem-abbrev +[multi memory]: https://github.com/webassembly/multi-memory From a1753441ff6724792b7eb719abce96aaf683d401 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Mon, 28 Sep 2020 09:01:39 -0700 Subject: [PATCH 007/230] New spec tests (#8) These are copied from the ones initially added to Binaryen --- test/core/address64.wast | 589 ++++++++++++++++++++ test/core/align64.wast | 866 +++++++++++++++++++++++++++++ test/core/bulk64.wast | 179 ++++++ test/core/endianness64.wast | 217 ++++++++ test/core/float_memory64.wast | 157 ++++++ test/core/load64.wast | 567 +++++++++++++++++++ test/core/memory64.wast | 188 +++++++ test/core/memory_grow64.wast | 95 ++++ test/core/memory_redundancy64.wast | 65 +++ test/core/memory_trap64.wast | 269 +++++++++ 10 files changed, 3192 insertions(+) create mode 100644 test/core/address64.wast create mode 100644 test/core/align64.wast create mode 100644 test/core/bulk64.wast create mode 100644 test/core/endianness64.wast create mode 100644 test/core/float_memory64.wast create mode 100644 test/core/load64.wast create mode 100644 test/core/memory64.wast create mode 100644 test/core/memory_grow64.wast create mode 100644 test/core/memory_redundancy64.wast create mode 100644 test/core/memory_trap64.wast diff --git a/test/core/address64.wast b/test/core/address64.wast new file mode 100644 index 000000000..0003e5d00 --- /dev/null +++ b/test/core/address64.wast @@ -0,0 +1,589 @@ +;; Load i32 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "8u_good1") (param $i i64) (result i32) + (i32.load8_u offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good2") (param $i i64) (result i32) + (i32.load8_u align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good3") (param $i i64) (result i32) + (i32.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8u_good4") (param $i i64) (result i32) + (i32.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8u_good5") (param $i i64) (result i32) + (i32.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "8s_good1") (param $i i64) (result i32) + (i32.load8_s offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good2") (param $i i64) (result i32) + (i32.load8_s align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good3") (param $i i64) (result i32) + (i32.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8s_good4") (param $i i64) (result i32) + (i32.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8s_good5") (param $i i64) (result i32) + (i32.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "16u_good1") (param $i i64) (result i32) + (i32.load16_u offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good2") (param $i i64) (result i32) + (i32.load16_u align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good3") (param $i i64) (result i32) + (i32.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16u_good4") (param $i i64) (result i32) + (i32.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16u_good5") (param $i i64) (result i32) + (i32.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "16s_good1") (param $i i64) (result i32) + (i32.load16_s offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good2") (param $i i64) (result i32) + (i32.load16_s align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good3") (param $i i64) (result i32) + (i32.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16s_good4") (param $i i64) (result i32) + (i32.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16s_good5") (param $i i64) (result i32) + (i32.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "32_good1") (param $i i64) (result i32) + (i32.load offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32_good2") (param $i i64) (result i32) + (i32.load align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32_good3") (param $i i64) (result i32) + (i32.load offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32_good4") (param $i i64) (result i32) + (i32.load offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32_good5") (param $i i64) (result i32) + (i32.load offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "8u_bad") (param $i i64) + (drop (i32.load8_u offset=4294967295 (local.get $i))) + ) + (func (export "8s_bad") (param $i i64) + (drop (i32.load8_s offset=4294967295 (local.get $i))) + ) + (func (export "16u_bad") (param $i i64) + (drop (i32.load16_u offset=4294967295 (local.get $i))) + ) + (func (export "16s_bad") (param $i i64) + (drop (i32.load16_s offset=4294967295 (local.get $i))) + ) + (func (export "32_bad") (param $i i64) + (drop (i32.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "8u_good1" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8u_good2" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8u_good3" (i64.const 0)) (i32.const 98)) +(assert_return (invoke "8u_good4" (i64.const 0)) (i32.const 99)) +(assert_return (invoke "8u_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "8s_good1" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8s_good2" (i64.const 0)) (i32.const 97)) +(assert_return (invoke "8s_good3" (i64.const 0)) (i32.const 98)) +(assert_return (invoke "8s_good4" (i64.const 0)) (i32.const 99)) +(assert_return (invoke "8s_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "16u_good1" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16u_good2" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16u_good3" (i64.const 0)) (i32.const 25442)) +(assert_return (invoke "16u_good4" (i64.const 0)) (i32.const 25699)) +(assert_return (invoke "16u_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "16s_good1" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16s_good2" (i64.const 0)) (i32.const 25185)) +(assert_return (invoke "16s_good3" (i64.const 0)) (i32.const 25442)) +(assert_return (invoke "16s_good4" (i64.const 0)) (i32.const 25699)) +(assert_return (invoke "16s_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "32_good1" (i64.const 0)) (i32.const 1684234849)) +(assert_return (invoke "32_good2" (i64.const 0)) (i32.const 1684234849)) +(assert_return (invoke "32_good3" (i64.const 0)) (i32.const 1701077858)) +(assert_return (invoke "32_good4" (i64.const 0)) (i32.const 1717920867)) +(assert_return (invoke "32_good5" (i64.const 0)) (i32.const 122)) + +(assert_return (invoke "8u_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "32_good1" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good2" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good3" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good4" (i64.const 65507)) (i32.const 0)) +(assert_return (invoke "32_good5" (i64.const 65507)) (i32.const 0)) + +(assert_return (invoke "8u_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65508)) (i32.const 0)) + +(assert_return (invoke "32_good1" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good2" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good3" (i64.const 65508)) (i32.const 0)) +(assert_return (invoke "32_good4" (i64.const 65508)) (i32.const 0)) +(assert_trap (invoke "32_good5" (i64.const 65508)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access") + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (drop (i32.load offset=4294967296 (i64.const 0))))" + ) + "i32 constant" +) + +;; Load i64 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + + (func (export "8u_good1") (param $i i64) (result i64) + (i64.load8_u offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good2") (param $i i64) (result i64) + (i64.load8_u align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8u_good3") (param $i i64) (result i64) + (i64.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8u_good4") (param $i i64) (result i64) + (i64.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8u_good5") (param $i i64) (result i64) + (i64.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "8s_good1") (param $i i64) (result i64) + (i64.load8_s offset=0 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good2") (param $i i64) (result i64) + (i64.load8_s align=1 (local.get $i)) ;; 97 'a' + ) + (func (export "8s_good3") (param $i i64) (result i64) + (i64.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b' + ) + (func (export "8s_good4") (param $i i64) (result i64) + (i64.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c' + ) + (func (export "8s_good5") (param $i i64) (result i64) + (i64.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z' + ) + + (func (export "16u_good1") (param $i i64) (result i64) + (i64.load16_u offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good2") (param $i i64) (result i64) + (i64.load16_u align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16u_good3") (param $i i64) (result i64) + (i64.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16u_good4") (param $i i64) (result i64) + (i64.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16u_good5") (param $i i64) (result i64) + (i64.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "16s_good1") (param $i i64) (result i64) + (i64.load16_s offset=0 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good2") (param $i i64) (result i64) + (i64.load16_s align=1 (local.get $i)) ;; 25185 'ab' + ) + (func (export "16s_good3") (param $i i64) (result i64) + (i64.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc' + ) + (func (export "16s_good4") (param $i i64) (result i64) + (i64.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd' + ) + (func (export "16s_good5") (param $i i64) (result i64) + (i64.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0' + ) + + (func (export "32u_good1") (param $i i64) (result i64) + (i64.load32_u offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32u_good2") (param $i i64) (result i64) + (i64.load32_u align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32u_good3") (param $i i64) (result i64) + (i64.load32_u offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32u_good4") (param $i i64) (result i64) + (i64.load32_u offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32u_good5") (param $i i64) (result i64) + (i64.load32_u offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "32s_good1") (param $i i64) (result i64) + (i64.load32_s offset=0 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32s_good2") (param $i i64) (result i64) + (i64.load32_s align=1 (local.get $i)) ;; 1684234849 'abcd' + ) + (func (export "32s_good3") (param $i i64) (result i64) + (i64.load32_s offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde' + ) + (func (export "32s_good4") (param $i i64) (result i64) + (i64.load32_s offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef' + ) + (func (export "32s_good5") (param $i i64) (result i64) + (i64.load32_s offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0' + ) + + (func (export "64_good1") (param $i i64) (result i64) + (i64.load offset=0 (local.get $i)) ;; 0x6867666564636261 'abcdefgh' + ) + (func (export "64_good2") (param $i i64) (result i64) + (i64.load align=1 (local.get $i)) ;; 0x6867666564636261 'abcdefgh' + ) + (func (export "64_good3") (param $i i64) (result i64) + (i64.load offset=1 align=1 (local.get $i)) ;; 0x6968676665646362 'bcdefghi' + ) + (func (export "64_good4") (param $i i64) (result i64) + (i64.load offset=2 align=2 (local.get $i)) ;; 0x6a69686766656463 'cdefghij' + ) + (func (export "64_good5") (param $i i64) (result i64) + (i64.load offset=25 align=8 (local.get $i)) ;; 122 'z\0\0\0\0\0\0\0' + ) + + (func (export "8u_bad") (param $i i64) + (drop (i64.load8_u offset=4294967295 (local.get $i))) + ) + (func (export "8s_bad") (param $i i64) + (drop (i64.load8_s offset=4294967295 (local.get $i))) + ) + (func (export "16u_bad") (param $i i64) + (drop (i64.load16_u offset=4294967295 (local.get $i))) + ) + (func (export "16s_bad") (param $i i64) + (drop (i64.load16_s offset=4294967295 (local.get $i))) + ) + (func (export "32u_bad") (param $i i64) + (drop (i64.load32_u offset=4294967295 (local.get $i))) + ) + (func (export "32s_bad") (param $i i64) + (drop (i64.load32_s offset=4294967295 (local.get $i))) + ) + (func (export "64_bad") (param $i i64) + (drop (i64.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "8u_good1" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8u_good2" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8u_good3" (i64.const 0)) (i64.const 98)) +(assert_return (invoke "8u_good4" (i64.const 0)) (i64.const 99)) +(assert_return (invoke "8u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "8s_good1" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8s_good2" (i64.const 0)) (i64.const 97)) +(assert_return (invoke "8s_good3" (i64.const 0)) (i64.const 98)) +(assert_return (invoke "8s_good4" (i64.const 0)) (i64.const 99)) +(assert_return (invoke "8s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "16u_good1" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16u_good2" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16u_good3" (i64.const 0)) (i64.const 25442)) +(assert_return (invoke "16u_good4" (i64.const 0)) (i64.const 25699)) +(assert_return (invoke "16u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "16s_good1" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16s_good2" (i64.const 0)) (i64.const 25185)) +(assert_return (invoke "16s_good3" (i64.const 0)) (i64.const 25442)) +(assert_return (invoke "16s_good4" (i64.const 0)) (i64.const 25699)) +(assert_return (invoke "16s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "32u_good1" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32u_good2" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32u_good3" (i64.const 0)) (i64.const 1701077858)) +(assert_return (invoke "32u_good4" (i64.const 0)) (i64.const 1717920867)) +(assert_return (invoke "32u_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "32s_good1" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32s_good2" (i64.const 0)) (i64.const 1684234849)) +(assert_return (invoke "32s_good3" (i64.const 0)) (i64.const 1701077858)) +(assert_return (invoke "32s_good4" (i64.const 0)) (i64.const 1717920867)) +(assert_return (invoke "32s_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "64_good1" (i64.const 0)) (i64.const 0x6867666564636261)) +(assert_return (invoke "64_good2" (i64.const 0)) (i64.const 0x6867666564636261)) +(assert_return (invoke "64_good3" (i64.const 0)) (i64.const 0x6968676665646362)) +(assert_return (invoke "64_good4" (i64.const 0)) (i64.const 0x6a69686766656463)) +(assert_return (invoke "64_good5" (i64.const 0)) (i64.const 122)) + +(assert_return (invoke "8u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "32u_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32u_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "32s_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "32s_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "64_good1" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good2" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good3" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good4" (i64.const 65503)) (i64.const 0)) +(assert_return (invoke "64_good5" (i64.const 65503)) (i64.const 0)) + +(assert_return (invoke "8u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "8s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "8s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "16u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "16s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "16s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "32u_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32u_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "32s_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good4" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "32s_good5" (i64.const 65504)) (i64.const 0)) + +(assert_return (invoke "64_good1" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good2" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good3" (i64.const 65504)) (i64.const 0)) +(assert_return (invoke "64_good4" (i64.const 65504)) (i64.const 0)) +(assert_trap (invoke "64_good5" (i64.const 65504)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access") + +(assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access") +(assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access") + +;; Load f32 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f") + + (func (export "32_good1") (param $i i64) (result f32) + (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good2") (param $i i64) (result f32) + (f32.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good3") (param $i i64) (result f32) + (f32.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good4") (param $i i64) (result f32) + (f32.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00' + ) + (func (export "32_good5") (param $i i64) (result f32) + (f32.load offset=8 align=4 (local.get $i)) ;; nan:0x500001 '\01\00\d0\7f' + ) + (func (export "32_bad") (param $i i64) + (drop (f32.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "32_good1" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 0)) (f32.const 0.0)) +(assert_return (invoke "32_good5" (i64.const 0)) (f32.const nan:0x500001)) + +(assert_return (invoke "32_good1" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 65524)) (f32.const 0.0)) +(assert_return (invoke "32_good5" (i64.const 65524)) (f32.const 0.0)) + +(assert_return (invoke "32_good1" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good2" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good3" (i64.const 65525)) (f32.const 0.0)) +(assert_return (invoke "32_good4" (i64.const 65525)) (f32.const 0.0)) +(assert_trap (invoke "32_good5" (i64.const 65525)) "out of bounds memory access") + +(assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access") + +;; Load f64 data with different offset/align arguments + +(module + (memory i64 1) + (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4\7f\01\00\00\00\00\00\fc\7f") + + (func (export "64_good1") (param $i i64) (result f64) + (f64.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good2") (param $i i64) (result f64) + (f64.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good3") (param $i i64) (result f64) + (f64.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good4") (param $i i64) (result f64) + (f64.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' + ) + (func (export "64_good5") (param $i i64) (result f64) + (f64.load offset=18 align=8 (local.get $i)) ;; nan:0xc000000000001 '\01\00\00\00\00\00\fc\7f' + ) + (func (export "64_bad") (param $i i64) + (drop (f64.load offset=4294967295 (local.get $i))) + ) +) + +(assert_return (invoke "64_good1" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 0)) (f64.const 0.0)) +(assert_return (invoke "64_good5" (i64.const 0)) (f64.const nan:0xc000000000001)) + +(assert_return (invoke "64_good1" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 65510)) (f64.const 0.0)) +(assert_return (invoke "64_good5" (i64.const 65510)) (f64.const 0.0)) + +(assert_return (invoke "64_good1" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good2" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good3" (i64.const 65511)) (f64.const 0.0)) +(assert_return (invoke "64_good4" (i64.const 65511)) (f64.const 0.0)) +(assert_trap (invoke "64_good5" (i64.const 65511)) "out of bounds memory access") + +(assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access") diff --git a/test/core/align64.wast b/test/core/align64.wast new file mode 100644 index 000000000..da34947f6 --- /dev/null +++ b/test/core/align64.wast @@ -0,0 +1,866 @@ +;; Test alignment annotation rules + +(module (memory i64 0) (func (drop (i32.load8_s align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load8_u align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load16_s align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load16_u align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i32.load align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load8_s align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load8_u align=1 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load16_s align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load16_u align=2 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load32_s align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load32_u align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (i64.load align=8 (i64.const 0))))) +(module (memory i64 0) (func (drop (f32.load align=4 (i64.const 0))))) +(module (memory i64 0) (func (drop (f64.load align=8 (i64.const 0))))) +(module (memory i64 0) (func (i32.store8 align=1 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i32.store16 align=2 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i32.store align=4 (i64.const 0) (i32.const 1)))) +(module (memory i64 0) (func (i64.store8 align=1 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store16 align=2 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store32 align=4 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (i64.store align=8 (i64.const 0) (i64.const 1)))) +(module (memory i64 0) (func (f32.store align=4 (i64.const 0) (f32.const 1.0)))) +(module (memory i64 0) (func (f64.store align=8 (i64.const 0) (f64.const 1.0)))) + +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load8_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load16_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i32.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load8_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load16_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_s align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_s align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_u align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load32_u align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (i64.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f32.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f32.load align=7 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f64.load align=0 (i64.const 0)))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (drop (f64.load align=7 (i64.const 0)))))" + ) + "alignment" +) + +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store8 align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store8 align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store16 align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store16 align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store align=0 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i32.store align=7 (i64.const 0) (i32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store8 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store8 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store16 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store16 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store32 align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store32 align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store align=0 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (i64.store align=7 (i64.const 0) (i64.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f32.store align=0 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f32.store align=7 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f64.store align=0 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) +(assert_malformed + (module quote + "(module (memory i64 0) (func (f64.store align=7 (i64.const 0) (f32.const 0))))" + ) + "alignment" +) + +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_s align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_u align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) + +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_s align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load8_u align=2 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_s align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load16_u align=4 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_s align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load32_u align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (i64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f32.load align=8 (i64.const 0))))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (drop (f64.load align=16 (i64.const 0))))) + "alignment must not be larger than natural" +) + +(assert_invalid + (module (memory i64 0) (func (i32.store8 align=2 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i32.store16 align=4 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i32.store align=8 (i64.const 0) (i32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store8 align=2 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store16 align=4 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store32 align=8 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (i64.store align=16 (i64.const 0) (i64.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (f32.store align=8 (i64.const 0) (f32.const 0)))) + "alignment must not be larger than natural" +) +(assert_invalid + (module (memory i64 0) (func (f64.store align=16 (i64.const 0) (f64.const 0)))) + "alignment must not be larger than natural" +) + +;; Test aligned and unaligned read/write + +(module + (memory i64 1) + + ;; $default: natural alignment, $1: align=1, $2: align=2, $4: align=4, $8: align=8 + + (func (export "f32_align_switch") (param i32) (result f32) + (local f32 f32) + (local.set 1 (f32.const 10.0)) + (block $4 + (block $2 + (block $1 + (block $default + (block $0 + (br_table $0 $default $1 $2 $4 (local.get 0)) + ) ;; 0 + (f32.store (i64.const 0) (local.get 1)) + (local.set 2 (f32.load (i64.const 0))) + (br $4) + ) ;; default + (f32.store align=1 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=1 (i64.const 0))) + (br $4) + ) ;; 1 + (f32.store align=2 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=2 (i64.const 0))) + (br $4) + ) ;; 2 + (f32.store align=4 (i64.const 0) (local.get 1)) + (local.set 2 (f32.load align=4 (i64.const 0))) + ) ;; 4 + (local.get 2) + ) + + (func (export "f64_align_switch") (param i32) (result f64) + (local f64 f64) + (local.set 1 (f64.const 10.0)) + (block $8 + (block $4 + (block $2 + (block $1 + (block $default + (block $0 + (br_table $0 $default $1 $2 $4 $8 (local.get 0)) + ) ;; 0 + (f64.store (i64.const 0) (local.get 1)) + (local.set 2 (f64.load (i64.const 0))) + (br $8) + ) ;; default + (f64.store align=1 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=1 (i64.const 0))) + (br $8) + ) ;; 1 + (f64.store align=2 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=2 (i64.const 0))) + (br $8) + ) ;; 2 + (f64.store align=4 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=4 (i64.const 0))) + (br $8) + ) ;; 4 + (f64.store align=8 (i64.const 0) (local.get 1)) + (local.set 2 (f64.load align=8 (i64.const 0))) + ) ;; 8 + (local.get 2) + ) + + ;; $8s: i32/i64.load8_s, $8u: i32/i64.load8_u, $16s: i32/i64.load16_s, $16u: i32/i64.load16_u, $32: i32.load + ;; $32s: i64.load32_s, $32u: i64.load32_u, $64: i64.load + + (func (export "i32_align_switch") (param i32 i32) (result i32) + (local i32 i32) + (local.set 2 (i32.const 10)) + (block $32 + (block $16u + (block $16s + (block $8u + (block $8s + (block $0 + (br_table $0 $8s $8u $16s $16u $32 (local.get 0)) + ) ;; 0 + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_s align=1 (i64.const 0))) + ) + ) + (br $32) + ) ;; 8s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load8_u align=1 (i64.const 0))) + ) + ) + (br $32) + ) ;; 8u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_s align=2 (i64.const 0))) + ) + ) + (br $32) + ) ;; 16s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load16_u align=2 (i64.const 0))) + ) + ) + (br $32) + ) ;; 16u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i32.store (i64.const 0) (local.get 2)) + (local.set 3 (i32.load (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i32.store align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i32.store align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i32.store align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i32.load align=4 (i64.const 0))) + ) + ) + ) ;; 32 + (local.get 3) + ) + + (func (export "i64_align_switch") (param i32 i32) (result i64) + (local i64 i64) + (local.set 2 (i64.const 10)) + (block $64 + (block $32u + (block $32s + (block $16u + (block $16s + (block $8u + (block $8s + (block $0 + (br_table $0 $8s $8u $16s $16u $32s $32u $64 (local.get 0)) + ) ;; 0 + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_s align=1 (i64.const 0))) + ) + ) + (br $64) + ) ;; 8s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store8 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load8_u align=1 (i64.const 0))) + ) + ) + (br $64) + ) ;; 8u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_s align=2 (i64.const 0))) + ) + ) + (br $64) + ) ;; 16s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store16 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store16 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store16 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load16_u align=2 (i64.const 0))) + ) + ) + (br $64) + ) ;; 16u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store32 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store32 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store32 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store32 align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_s align=4 (i64.const 0))) + ) + ) + (br $64) + ) ;; 32s + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store32 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store32 align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store32 align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store32 align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load32_u align=4 (i64.const 0))) + ) + ) + (br $64) + ) ;; 32u + (if (i32.eq (local.get 1) (i32.const 0)) + (then + (i64.store (i64.const 0) (local.get 2)) + (local.set 3 (i64.load (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 1)) + (then + (i64.store align=1 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=1 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 2)) + (then + (i64.store align=2 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=2 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 4)) + (then + (i64.store align=4 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=4 (i64.const 0))) + ) + ) + (if (i32.eq (local.get 1) (i32.const 8)) + (then + (i64.store align=8 (i64.const 0) (local.get 2)) + (local.set 3 (i64.load align=8 (i64.const 0))) + ) + ) + ) ;; 64 + (local.get 3) + ) +) + +(assert_return (invoke "f32_align_switch" (i32.const 0)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 1)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 2)) (f32.const 10.0)) +(assert_return (invoke "f32_align_switch" (i32.const 3)) (f32.const 10.0)) + +(assert_return (invoke "f64_align_switch" (i32.const 0)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 1)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 2)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 3)) (f64.const 10.0)) +(assert_return (invoke "f64_align_switch" (i32.const 4)) (f64.const 10.0)) + +(assert_return (invoke "i32_align_switch" (i32.const 0) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 0) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 1) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 1) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 2) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 3) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 0)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 1)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 2)) (i32.const 10)) +(assert_return (invoke "i32_align_switch" (i32.const 4) (i32.const 4)) (i32.const 10)) + +(assert_return (invoke "i64_align_switch" (i32.const 0) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 0) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 1) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 1) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 2) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 3) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 4) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 5) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 0)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 1)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 2)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 4)) (i64.const 10)) +(assert_return (invoke "i64_align_switch" (i32.const 6) (i32.const 8)) (i64.const 10)) + +;; Test that an i64 store with 4-byte alignment that's 4 bytes out of bounds traps without storing anything + +(module + (memory i64 1) + (func (export "store") (param i64 i64) + (i64.store align=4 (local.get 0) (local.get 1)) + ) + (func (export "load") (param i64) (result i32) + (i32.load (local.get 0)) + ) +) + +(assert_trap (invoke "store" (i64.const 65532) (i64.const -1)) "out of bounds memory access") +;; No memory was changed +(assert_return (invoke "load" (i64.const 65532)) (i32.const 0)) diff --git a/test/core/bulk64.wast b/test/core/bulk64.wast new file mode 100644 index 000000000..e407301f6 --- /dev/null +++ b/test/core/bulk64.wast @@ -0,0 +1,179 @@ +;; segment syntax +(module + (memory i64 1) + (data "foo")) + +;; memory.fill +(module + (memory i64 1) + + (func (export "fill") (param i64 i32 i64) + (memory.fill + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +;; Basic fill test. +(invoke "fill" (i64.const 1) (i32.const 0xff) (i64.const 3)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 0xff)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 0)) + +;; Fill value is stored as a byte. +(invoke "fill" (i64.const 0) (i32.const 0xbbaa) (i64.const 2)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xaa)) + +;; Fill all of memory +(invoke "fill" (i64.const 0) (i32.const 0) (i64.const 0x10000)) + +;; Succeed when writing 0 bytes at the end of the region. +(invoke "fill" (i64.const 0x10000) (i32.const 0) (i64.const 0)) + +;; Writing 0 bytes outside of memory limit is NOT allowed. +(assert_trap + (invoke "fill" (i64.const 0x10001) (i32.const 0) (i64.const 0)) + "out of bounds") + +;; memory.copy +(module + (memory i64 1 1) + (data (i32.const 0) "\aa\bb\cc\dd") + + (func (export "copy") (param i64 i64 i64) + (memory.copy + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +;; Non-overlapping copy. +(invoke "copy" (i64.const 10) (i64.const 0) (i64.const 4)) + +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0)) + +;; Overlap, source > dest +(invoke "copy" (i64.const 8) (i64.const 10) (i64.const 4)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xdd)) + +;; Overlap, source < dest +(invoke "copy" (i64.const 10) (i64.const 7) (i64.const 6)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0)) + +;; Overlap, source < dest but size is out of bounds +(assert_trap + (invoke "copy" (i64.const 13) (i64.const 11) (i64.const -1)) + "out of bounds") +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0xaa)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0xdd)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0)) + +;; Copy ending at memory limit is ok. +(invoke "copy" (i64.const 0xff00) (i64.const 0) (i64.const 0x100)) +(invoke "copy" (i64.const 0xfe00) (i64.const 0xff00) (i64.const 0x100)) + +;; Succeed when copying 0 bytes at the end of the region. +(invoke "copy" (i64.const 0x10000) (i64.const 0) (i64.const 0)) +(invoke "copy" (i64.const 0) (i64.const 0x10000) (i64.const 0)) + +;; Copying 0 bytes outside of memory limit is NOT allowed. +(assert_trap + (invoke "copy" (i64.const 0x10001) (i64.const 0) (i64.const 0)) + "out of bounds") +(assert_trap + (invoke "copy" (i64.const 0) (i64.const 0x10001) (i64.const 0)) + "out of bounds") + +;; memory.init +(module + (memory i64 1) + (data "\aa\bb\cc\dd") + + (func (export "init") (param i64 i32 i32) + (memory.init 0 + (local.get 0) + (local.get 1) + (local.get 2))) + + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0))) +) + +(invoke "init" (i64.const 0) (i32.const 1) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0xbb)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 0)) + +;; Init ending at memory limit and segment limit is ok. +(invoke "init" (i64.const 0xfffc) (i32.const 0) (i32.const 4)) + +;; Out-of-bounds writes trap, and no partial writes has been made. +(assert_trap (invoke "init" (i64.const 0xfffe) (i32.const 0) (i32.const 3)) + "out of bounds") +(assert_return (invoke "load8_u" (i64.const 0xfffe)) (i32.const 0xcc)) +(assert_return (invoke "load8_u" (i64.const 0xffff)) (i32.const 0xdd)) + +;; Succeed when writing 0 bytes at the end of either region. +(invoke "init" (i64.const 0x10000) (i32.const 0) (i32.const 0)) +(invoke "init" (i64.const 0) (i32.const 4) (i32.const 0)) + +;; Writing 0 bytes outside of memory / segment limit is NOT allowed. +(assert_trap + (invoke "init" (i64.const 0x10001) (i32.const 0) (i32.const 0)) + "out of bounds") +(assert_trap + (invoke "init" (i64.const 0) (i32.const 5) (i32.const 0)) + "out of bounds") + +;; OK to access 0 bytes at offset 0 in a dropped segment. +(invoke "init" (i64.const 0) (i32.const 0) (i32.const 0)) + +;; data.drop +(module + (memory i64 1) + (data "") + (data (i32.const 0) "") + + (func (export "drop_passive") (data.drop 0)) + (func (export "init_passive") + (memory.init 0 (i64.const 0) (i32.const 0) (i32.const 0))) + + (func (export "drop_active") (data.drop 1)) + (func (export "init_active") + (memory.init 1 (i64.const 0) (i32.const 0) (i32.const 0))) +) + +;; OK to drop the same segment multiple times or drop an active segment. +(invoke "init_passive") +(invoke "drop_passive") +(invoke "drop_passive") +(invoke "drop_active") diff --git a/test/core/endianness64.wast b/test/core/endianness64.wast new file mode 100644 index 000000000..e583ea9b4 --- /dev/null +++ b/test/core/endianness64.wast @@ -0,0 +1,217 @@ +(module + (memory i64 1) + + ;; Stores an i16 value in little-endian-format + (func $i16_store_little (param $address i64) (param $value i32) + (i32.store8 (local.get $address) (local.get $value)) + (i32.store8 (i64.add (local.get $address) (i64.const 1)) (i32.shr_u (local.get $value) (i32.const 8))) + ) + + ;; Stores an i32 value in little-endian format + (func $i32_store_little (param $address i64) (param $value i32) + (call $i16_store_little (local.get $address) (local.get $value)) + (call $i16_store_little (i64.add (local.get $address) (i64.const 2)) (i32.shr_u (local.get $value) (i32.const 16))) + ) + + ;; Stores an i64 value in little-endian format + (func $i64_store_little (param $address i64) (param $value i64) + (call $i32_store_little (local.get $address) (i32.wrap_i64 (local.get $value))) + (call $i32_store_little (i64.add (local.get $address) (i64.const 4)) (i32.wrap_i64 (i64.shr_u (local.get $value) (i64.const 32)))) + ) + + ;; Loads an i16 value in little-endian format + (func $i16_load_little (param $address i64) (result i32) + (i32.or + (i32.load8_u (local.get $address)) + (i32.shl (i32.load8_u (i64.add (local.get $address) (i64.const 1))) (i32.const 8)) + ) + ) + + ;; Loads an i32 value in little-endian format + (func $i32_load_little (param $address i64) (result i32) + (i32.or + (call $i16_load_little (local.get $address)) + (i32.shl (call $i16_load_little (i64.add (local.get $address) (i64.const 2))) (i32.const 16)) + ) + ) + + ;; Loads an i64 value in little-endian format + (func $i64_load_little (param $address i64) (result i64) + (i64.or + (i64.extend_i32_u (call $i32_load_little (local.get $address))) + (i64.shl (i64.extend_i32_u (call $i32_load_little (i64.add (local.get $address) (i64.const 4)))) (i64.const 32)) + ) + ) + + (func (export "i32_load16_s") (param $value i32) (result i32) + (call $i16_store_little (i64.const 0) (local.get $value)) + (i32.load16_s (i64.const 0)) + ) + + (func (export "i32_load16_u") (param $value i32) (result i32) + (call $i16_store_little (i64.const 0) (local.get $value)) + (i32.load16_u (i64.const 0)) + ) + + (func (export "i32_load") (param $value i32) (result i32) + (call $i32_store_little (i64.const 0) (local.get $value)) + (i32.load (i64.const 0)) + ) + + (func (export "i64_load16_s") (param $value i64) (result i64) + (call $i16_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load16_s (i64.const 0)) + ) + + (func (export "i64_load16_u") (param $value i64) (result i64) + (call $i16_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load16_u (i64.const 0)) + ) + + (func (export "i64_load32_s") (param $value i64) (result i64) + (call $i32_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load32_s (i64.const 0)) + ) + + (func (export "i64_load32_u") (param $value i64) (result i64) + (call $i32_store_little (i64.const 0) (i32.wrap_i64 (local.get $value))) + (i64.load32_u (i64.const 0)) + ) + + (func (export "i64_load") (param $value i64) (result i64) + (call $i64_store_little (i64.const 0) (local.get $value)) + (i64.load (i64.const 0)) + ) + + (func (export "f32_load") (param $value f32) (result f32) + (call $i32_store_little (i64.const 0) (i32.reinterpret_f32 (local.get $value))) + (f32.load (i64.const 0)) + ) + + (func (export "f64_load") (param $value f64) (result f64) + (call $i64_store_little (i64.const 0) (i64.reinterpret_f64 (local.get $value))) + (f64.load (i64.const 0)) + ) + + + (func (export "i32_store16") (param $value i32) (result i32) + (i32.store16 (i64.const 0) (local.get $value)) + (call $i16_load_little (i64.const 0)) + ) + + (func (export "i32_store") (param $value i32) (result i32) + (i32.store (i64.const 0) (local.get $value)) + (call $i32_load_little (i64.const 0)) + ) + + (func (export "i64_store16") (param $value i64) (result i64) + (i64.store16 (i64.const 0) (local.get $value)) + (i64.extend_i32_u (call $i16_load_little (i64.const 0))) + ) + + (func (export "i64_store32") (param $value i64) (result i64) + (i64.store32 (i64.const 0) (local.get $value)) + (i64.extend_i32_u (call $i32_load_little (i64.const 0))) + ) + + (func (export "i64_store") (param $value i64) (result i64) + (i64.store (i64.const 0) (local.get $value)) + (call $i64_load_little (i64.const 0)) + ) + + (func (export "f32_store") (param $value f32) (result f32) + (f32.store (i64.const 0) (local.get $value)) + (f32.reinterpret_i32 (call $i32_load_little (i64.const 0))) + ) + + (func (export "f64_store") (param $value f64) (result f64) + (f64.store (i64.const 0) (local.get $value)) + (f64.reinterpret_i64 (call $i64_load_little (i64.const 0))) + ) +) + +(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load16_s" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_load16_s" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_s" (i32.const 0x3210)) (i32.const 0x3210)) + +(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_load16_u" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_load16_u" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_load16_u" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_load" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load" (i32.const -42424242)) (i32.const -42424242)) +(assert_return (invoke "i32_load" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_load" (i32.const 0xABAD1DEA)) (i32.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load16_s" (i64.const -4242)) (i64.const -4242)) +(assert_return (invoke "i64_load16_s" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_s" (i64.const 0x3210)) (i64.const 0x3210)) + +(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_load16_u" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_load16_u" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_load16_u" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load32_s" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_s" (i64.const 0x12345678)) (i64.const 0x12345678)) + +(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_load32_u" (i64.const -42424242)) (i64.const 4252543054)) +(assert_return (invoke "i64_load32_u" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_load32_u" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) + +(assert_return (invoke "i64_load" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_load" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_load" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_load" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_load" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_load" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_load" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_load" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_load" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_load" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_load" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) + + +(assert_return (invoke "i32_store16" (i32.const -1)) (i32.const 0xFFFF)) +(assert_return (invoke "i32_store16" (i32.const -4242)) (i32.const 61294)) +(assert_return (invoke "i32_store16" (i32.const 42)) (i32.const 42)) +(assert_return (invoke "i32_store16" (i32.const 0xCAFE)) (i32.const 0xCAFE)) + +(assert_return (invoke "i32_store" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_store" (i32.const -4242)) (i32.const -4242)) +(assert_return (invoke "i32_store" (i32.const 42424242)) (i32.const 42424242)) +(assert_return (invoke "i32_store" (i32.const 0xDEADCAFE)) (i32.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store16" (i64.const -1)) (i64.const 0xFFFF)) +(assert_return (invoke "i64_store16" (i64.const -4242)) (i64.const 61294)) +(assert_return (invoke "i64_store16" (i64.const 42)) (i64.const 42)) +(assert_return (invoke "i64_store16" (i64.const 0xCAFE)) (i64.const 0xCAFE)) + +(assert_return (invoke "i64_store32" (i64.const -1)) (i64.const 0xFFFFFFFF)) +(assert_return (invoke "i64_store32" (i64.const -4242)) (i64.const 4294963054)) +(assert_return (invoke "i64_store32" (i64.const 42424242)) (i64.const 42424242)) +(assert_return (invoke "i64_store32" (i64.const 0xDEADCAFE)) (i64.const 0xDEADCAFE)) + +(assert_return (invoke "i64_store" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_store" (i64.const -42424242)) (i64.const -42424242)) +(assert_return (invoke "i64_store" (i64.const 0xABAD1DEA)) (i64.const 0xABAD1DEA)) +(assert_return (invoke "i64_store" (i64.const 0xABADCAFEDEAD1DEA)) (i64.const 0xABADCAFEDEAD1DEA)) + +(assert_return (invoke "f32_store" (f32.const -1)) (f32.const -1)) +(assert_return (invoke "f32_store" (f32.const 1234e-5)) (f32.const 1234e-5)) +(assert_return (invoke "f32_store" (f32.const 4242.4242)) (f32.const 4242.4242)) +(assert_return (invoke "f32_store" (f32.const 0x1.fffffep+127)) (f32.const 0x1.fffffep+127)) + +(assert_return (invoke "f64_store" (f64.const -1)) (f64.const -1)) +(assert_return (invoke "f64_store" (f64.const 123456789e-5)) (f64.const 123456789e-5)) +(assert_return (invoke "f64_store" (f64.const 424242.424242)) (f64.const 424242.424242)) +(assert_return (invoke "f64_store" (f64.const 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) diff --git a/test/core/float_memory64.wast b/test/core/float_memory64.wast new file mode 100644 index 000000000..674b254f5 --- /dev/null +++ b/test/core/float_memory64.wast @@ -0,0 +1,157 @@ +;; Test that floating-point load and store are bit-preserving. + +;; Test that load and store do not canonicalize NaNs as x87 does. + +(module + (memory i64 (data "\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 0))) + (func (export "i32.load") (result i32) (i32.load (i64.const 0))) + (func (export "f32.store") (f32.store (i64.const 0) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i64.const 0) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i64.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory i64 (data "\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 0))) + (func (export "i64.load") (result i64) (i64.load (i64.const 0))) + (func (export "f64.store") (f64.store (i64.const 0) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i64.const 0) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i64.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that unaligned load and store do not canonicalize NaNs. + +(module + (memory i64 (data "\00\00\00\a0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 1))) + (func (export "i32.load") (result i32) (i32.load (i64.const 1))) + (func (export "f32.store") (f32.store (i64.const 1) (f32.const nan:0x200000))) + (func (export "i32.store") (i32.store (i64.const 1) (i32.const 0x7fa00000))) + (func (export "reset") (i32.store (i64.const 1) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fa00000)) +(assert_return (invoke "f32.load") (f32.const nan:0x200000)) + +(module + (memory i64 (data "\00\00\00\00\00\00\00\f4\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 1))) + (func (export "i64.load") (result i64) (i64.load (i64.const 1))) + (func (export "f64.store") (f64.store (i64.const 1) (f64.const nan:0x4000000000000))) + (func (export "i64.store") (i64.store (i64.const 1) (i64.const 0x7ff4000000000000))) + (func (export "reset") (i64.store (i64.const 1) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ff4000000000000)) +(assert_return (invoke "f64.load") (f64.const nan:0x4000000000000)) + +;; Test that load and store do not canonicalize NaNs as some JS engines do. + +(module + (memory i64 (data "\01\00\d0\7f")) + + (func (export "f32.load") (result f32) (f32.load (i64.const 0))) + (func (export "i32.load") (result i32) (i32.load (i64.const 0))) + (func (export "f32.store") (f32.store (i64.const 0) (f32.const nan:0x500001))) + (func (export "i32.store") (i32.store (i64.const 0) (i32.const 0x7fd00001))) + (func (export "reset") (i32.store (i64.const 0) (i32.const 0))) +) + +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "f32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) +(invoke "reset") +(assert_return (invoke "i32.load") (i32.const 0x0)) +(assert_return (invoke "f32.load") (f32.const 0.0)) +(invoke "i32.store") +(assert_return (invoke "i32.load") (i32.const 0x7fd00001)) +(assert_return (invoke "f32.load") (f32.const nan:0x500001)) + +(module + (memory i64 (data "\01\00\00\00\00\00\fc\7f")) + + (func (export "f64.load") (result f64) (f64.load (i64.const 0))) + (func (export "i64.load") (result i64) (i64.load (i64.const 0))) + (func (export "f64.store") (f64.store (i64.const 0) (f64.const nan:0xc000000000001))) + (func (export "i64.store") (i64.store (i64.const 0) (i64.const 0x7ffc000000000001))) + (func (export "reset") (i64.store (i64.const 0) (i64.const 0))) +) + +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "f64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) +(invoke "reset") +(assert_return (invoke "i64.load") (i64.const 0x0)) +(assert_return (invoke "f64.load") (f64.const 0.0)) +(invoke "i64.store") +(assert_return (invoke "i64.load") (i64.const 0x7ffc000000000001)) +(assert_return (invoke "f64.load") (f64.const nan:0xc000000000001)) diff --git a/test/core/load64.wast b/test/core/load64.wast new file mode 100644 index 000000000..e4a6a9833 --- /dev/null +++ b/test/core/load64.wast @@ -0,0 +1,567 @@ +;; Load operator as the argument of control constructs and instructions + +(module + (memory i64 1) + + (func (export "as-br-value") (result i32) + (block (result i32) (br 0 (i32.load (i64.const 0)))) + ) + + (func (export "as-br_if-cond") + (block (br_if 0 (i32.load (i64.const 0)))) + ) + (func (export "as-br_if-value") (result i32) + (block (result i32) + (drop (br_if 0 (i32.load (i64.const 0)) (i32.const 1))) (i32.const 7) + ) + ) + (func (export "as-br_if-value-cond") (result i32) + (block (result i32) + (drop (br_if 0 (i32.const 6) (i32.load (i64.const 0)))) (i32.const 7) + ) + ) + + (func (export "as-br_table-index") + (block (br_table 0 0 0 (i32.load (i64.const 0)))) + ) + (func (export "as-br_table-value") (result i32) + (block (result i32) + (br_table 0 0 0 (i32.load (i64.const 0)) (i32.const 1)) (i32.const 7) + ) + ) + (func (export "as-br_table-value-index") (result i32) + (block (result i32) + (br_table 0 0 (i32.const 6) (i32.load (i64.const 0))) (i32.const 7) + ) + ) + + (func (export "as-return-value") (result i32) + (return (i32.load (i64.const 0))) + ) + + (func (export "as-if-cond") (result i32) + (if (result i32) (i32.load (i64.const 0)) + (then (i32.const 0)) (else (i32.const 1)) + ) + ) + (func (export "as-if-then") (result i32) + (if (result i32) (i32.const 1) + (then (i32.load (i64.const 0))) (else (i32.const 0)) + ) + ) + (func (export "as-if-else") (result i32) + (if (result i32) (i32.const 0) + (then (i32.const 0)) (else (i32.load (i64.const 0))) + ) + ) + + (func (export "as-select-first") (param i32 i32) (result i32) + (select (i32.load (i64.const 0)) (local.get 0) (local.get 1)) + ) + (func (export "as-select-second") (param i32 i32) (result i32) + (select (local.get 0) (i32.load (i64.const 0)) (local.get 1)) + ) + (func (export "as-select-cond") (result i32) + (select (i32.const 0) (i32.const 1) (i32.load (i64.const 0))) + ) + + (func $f (param i32 i32 i32) (result i32) (i32.const -1)) + (func (export "as-call-first") (result i32) + (call $f (i32.load (i64.const 0)) (i32.const 2) (i32.const 3)) + ) + (func (export "as-call-mid") (result i32) + (call $f (i32.const 1) (i32.load (i64.const 0)) (i32.const 3)) + ) + (func (export "as-call-last") (result i32) + (call $f (i32.const 1) (i32.const 2) (i32.load (i64.const 0))) + ) + + (type $sig (func (param i32 i32 i32) (result i32))) + (table funcref (elem $f)) + (func (export "as-call_indirect-first") (result i32) + (call_indirect (type $sig) + (i32.load (i64.const 0)) (i32.const 2) (i32.const 3) (i32.const 0) + ) + ) + (func (export "as-call_indirect-mid") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.load (i64.const 0)) (i32.const 3) (i32.const 0) + ) + ) + (func (export "as-call_indirect-last") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.const 2) (i32.load (i64.const 0)) (i32.const 0) + ) + ) + (func (export "as-call_indirect-index") (result i32) + (call_indirect (type $sig) + (i32.const 1) (i32.const 2) (i32.const 3) (i32.load (i64.const 0)) + ) + ) + + (func (export "as-local.set-value") (local i32) + (local.set 0 (i32.load (i64.const 0))) + ) + (func (export "as-local.tee-value") (result i32) (local i32) + (local.tee 0 (i32.load (i64.const 0))) + ) + (global $g (mut i32) (i32.const 0)) + (func (export "as-global.set-value") (local i32) + (global.set $g (i32.load (i64.const 0))) + ) + + (func (export "as-load-address") (result i32) + (i32.load (i64.load (i64.const 0))) + ) + (func (export "as-loadN-address") (result i32) + (i32.load8_s (i64.load (i64.const 0))) + ) + + (func (export "as-store-address") + (i32.store (i64.load (i64.const 0)) (i32.const 7)) + ) + (func (export "as-store-value") + (i32.store (i64.const 2) (i32.load (i64.const 0))) + ) + + (func (export "as-storeN-address") + (i32.store8 (i64.load8_s (i64.const 0)) (i32.const 7)) + ) + (func (export "as-storeN-value") + (i32.store16 (i64.const 2) (i32.load (i64.const 0))) + ) + + (func (export "as-unary-operand") (result i32) + (i32.clz (i32.load (i64.const 100))) + ) + + (func (export "as-binary-left") (result i32) + (i32.add (i32.load (i64.const 100)) (i32.const 10)) + ) + (func (export "as-binary-right") (result i32) + (i32.sub (i32.const 10) (i32.load (i64.const 100))) + ) + + (func (export "as-test-operand") (result i32) + (i32.eqz (i32.load (i64.const 100))) + ) + + (func (export "as-compare-left") (result i32) + (i32.le_s (i32.load (i64.const 100)) (i32.const 10)) + ) + (func (export "as-compare-right") (result i32) + (i32.ne (i32.const 10) (i32.load (i64.const 100))) + ) + + (func (export "as-memory.grow-size") (result i64) + (memory.grow (i64.load (i64.const 100))) + ) +) + +(assert_return (invoke "as-br-value") (i32.const 0)) + +(assert_return (invoke "as-br_if-cond")) +(assert_return (invoke "as-br_if-value") (i32.const 0)) +(assert_return (invoke "as-br_if-value-cond") (i32.const 7)) + +(assert_return (invoke "as-br_table-index")) +(assert_return (invoke "as-br_table-value") (i32.const 0)) +(assert_return (invoke "as-br_table-value-index") (i32.const 6)) + +(assert_return (invoke "as-return-value") (i32.const 0)) + +(assert_return (invoke "as-if-cond") (i32.const 1)) +(assert_return (invoke "as-if-then") (i32.const 0)) +(assert_return (invoke "as-if-else") (i32.const 0)) + +(assert_return (invoke "as-select-first" (i32.const 0) (i32.const 1)) (i32.const 0)) +(assert_return (invoke "as-select-second" (i32.const 0) (i32.const 0)) (i32.const 0)) +(assert_return (invoke "as-select-cond") (i32.const 1)) + +(assert_return (invoke "as-call-first") (i32.const -1)) +(assert_return (invoke "as-call-mid") (i32.const -1)) +(assert_return (invoke "as-call-last") (i32.const -1)) + +(assert_return (invoke "as-call_indirect-first") (i32.const -1)) +(assert_return (invoke "as-call_indirect-mid") (i32.const -1)) +(assert_return (invoke "as-call_indirect-last") (i32.const -1)) +(assert_return (invoke "as-call_indirect-index") (i32.const -1)) + +(assert_return (invoke "as-local.set-value")) +(assert_return (invoke "as-local.tee-value") (i32.const 0)) +(assert_return (invoke "as-global.set-value")) + +(assert_return (invoke "as-load-address") (i32.const 0)) +(assert_return (invoke "as-loadN-address") (i32.const 0)) +(assert_return (invoke "as-store-address")) +(assert_return (invoke "as-store-value")) +(assert_return (invoke "as-storeN-address")) +(assert_return (invoke "as-storeN-value")) + +(assert_return (invoke "as-unary-operand") (i32.const 32)) + +(assert_return (invoke "as-binary-left") (i32.const 10)) +(assert_return (invoke "as-binary-right") (i32.const 10)) + +(assert_return (invoke "as-test-operand") (i32.const 1)) + +(assert_return (invoke "as-compare-left") (i32.const 1)) +(assert_return (invoke "as-compare-right") (i32.const 1)) + +(assert_return (invoke "as-memory.grow-size") (i64.const 1)) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load32_s (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i32) (i32.load64_s (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64_u (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result i64) (i64.load64_s (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f32) (f32.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f32) (f32.load64 (local.get 0)))" + ) + "unknown operator" +) + +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f64) (f64.load32 (local.get 0)))" + ) + "unknown operator" +) +(assert_malformed + (module quote + "(memory i64 1)" + "(func (param i64) (result f64) (f64.load64 (local.get 0)))" + ) + "unknown operator" +) + + +;; load should have retval + +(assert_invalid + (module (memory i64 1) (func $load_i32 (i32.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_s_i32 (i32.load8_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_u_i32 (i32.load8_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_s_i32 (i32.load16_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_u_i32 (i32.load16_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_i64 (i64.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_s_i64 (i64.load8_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load8_u_i64 (i64.load8_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_s_i64 (i64.load16_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load16_u_i64 (i64.load16_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load32_s_i64 (i64.load32_s (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load32_u_i64 (i64.load32_u (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_f32 (f32.load (i64.const 0)))) + "type mismatch" +) +(assert_invalid + (module (memory i64 1) (func $load_f64 (f64.load (i64.const 0)))) + "type mismatch" +) + + +;; Type check + +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i32) (i32.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load8_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load8_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load16_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load16_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load32_s (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result i64) (i64.load32_u (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result f32) (f32.load (f32.const 0)))) "type mismatch") +(assert_invalid (module (memory i64 1) (func (result f64) (f64.load (f32.const 0)))) "type mismatch") + + +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty + (i32.load) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-block + (i32.const 0) + (block (i32.load) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-loop + (i32.const 0) + (loop (i32.load) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-then + (i32.const 0) (i32.const 0) + (if (then (i32.load) (drop))) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-else + (i32.const 0) (i32.const 0) + (if (result i32) (then (i32.const 0)) (else (i32.load))) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br + (i32.const 0) + (block (br 0 (i32.load)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br_if + (i32.const 0) + (block (br_if 0 (i32.load) (i32.const 1)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-br_table + (i32.const 0) + (block (br_table 0 (i32.load)) (drop)) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-return + (return (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-select + (select (i32.load) (i32.const 1) (i32.const 2)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-call + (call 1 (i32.load)) (drop) + ) + (func (param i32) (result i32) (local.get 0)) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $f (param i32) (result i32) (local.get 0)) + (type $sig (func (param i32) (result i32))) + (table funcref (elem $f)) + (func $type-address-empty-in-call_indirect + (block (result i32) + (call_indirect (type $sig) + (i32.load) (i32.const 0) + ) + (drop) + ) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-local.set + (local i32) + (local.set 0 (i32.load)) (local.get 0) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-local.tee + (local i32) + (local.tee 0 (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (global $x (mut i32) (i32.const 0)) + (func $type-address-empty-in-global.set + (global.set $x (i32.load)) (global.get $x) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-memory.grow + (memory.grow (i64.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 0) + (func $type-address-empty-in-load + (i32.load (i32.load)) (drop) + ) + ) + "type mismatch" +) +(assert_invalid + (module + (memory i64 1) + (func $type-address-empty-in-store + (i32.store (i32.load) (i32.const 1)) + ) + ) + "type mismatch" +) diff --git a/test/core/memory64.wast b/test/core/memory64.wast new file mode 100644 index 000000000..8424e0c0e --- /dev/null +++ b/test/core/memory64.wast @@ -0,0 +1,188 @@ +;; Test memory section structure + +(module (memory i64 0 0)) +(module (memory i64 0 1)) +(module (memory i64 1 256)) +(module (memory i64 0 65536)) + +(assert_invalid (module (memory i64 0) (memory i64 0)) "multiple memories") +(assert_invalid (module (memory (import "spectest" "memory") i64 0) (memory i64 0)) "multiple memories") + +(module (memory i64 (data)) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 0)) +(module (memory i64 (data "")) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 0)) +(module (memory i64 (data "x")) (func (export "memsize") (result i64) (memory.size))) +(assert_return (invoke "memsize") (i64.const 1)) + +(assert_invalid (module (data (i32.const 0))) "unknown memory") +(assert_invalid (module (data (i32.const 0) "")) "unknown memory") +(assert_invalid (module (data (i32.const 0) "x")) "unknown memory") + +(assert_invalid + (module (func (drop (f32.load (i64.const 0))))) + "unknown memory" +) +(assert_invalid + (module (func (f32.store (i64.const 0) (f32.const 0)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (i32.load8_s (i64.const 0))))) + "unknown memory" +) +(assert_invalid + (module (func (i32.store8 (i64.const 0) (i32.const 0)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (memory.size)))) + "unknown memory" +) +(assert_invalid + (module (func (drop (memory.grow (i64.const 0))))) + "unknown memory" +) + + +(assert_invalid + (module (memory i64 1 0)) + "size minimum must not be greater than maximum" +) + +(module + (memory i64 1) + (data (i32.const 0) "ABC\a7D") (data (i32.const 20) "WASM") + + ;; Data section + (func (export "data") (result i32) + (i32.and + (i32.and + (i32.and + (i32.eq (i32.load8_u (i64.const 0)) (i32.const 65)) + (i32.eq (i32.load8_u (i64.const 3)) (i32.const 167)) + ) + (i32.and + (i32.eq (i32.load8_u (i64.const 6)) (i32.const 0)) + (i32.eq (i32.load8_u (i64.const 19)) (i32.const 0)) + ) + ) + (i32.and + (i32.and + (i32.eq (i32.load8_u (i64.const 20)) (i32.const 87)) + (i32.eq (i32.load8_u (i64.const 23)) (i32.const 77)) + ) + (i32.and + (i32.eq (i32.load8_u (i64.const 24)) (i32.const 0)) + (i32.eq (i32.load8_u (i64.const 1023)) (i32.const 0)) + ) + ) + ) + ) + + ;; Memory cast + (func (export "cast") (result f64) + (i64.store (i64.const 8) (i64.const -12345)) + (if + (f64.eq + (f64.load (i64.const 8)) + (f64.reinterpret_i64 (i64.const -12345)) + ) + (then (return (f64.const 0))) + ) + (i64.store align=1 (i64.const 9) (i64.const 0)) + (i32.store16 align=1 (i64.const 15) (i32.const 16453)) + (f64.load align=1 (i64.const 9)) + ) + + ;; Sign and zero extending memory loads + (func (export "i32_load8_s") (param $i i32) (result i32) + (i32.store8 (i64.const 8) (local.get $i)) + (i32.load8_s (i64.const 8)) + ) + (func (export "i32_load8_u") (param $i i32) (result i32) + (i32.store8 (i64.const 8) (local.get $i)) + (i32.load8_u (i64.const 8)) + ) + (func (export "i32_load16_s") (param $i i32) (result i32) + (i32.store16 (i64.const 8) (local.get $i)) + (i32.load16_s (i64.const 8)) + ) + (func (export "i32_load16_u") (param $i i32) (result i32) + (i32.store16 (i64.const 8) (local.get $i)) + (i32.load16_u (i64.const 8)) + ) + (func (export "i64_load8_s") (param $i i64) (result i64) + (i64.store8 (i64.const 8) (local.get $i)) + (i64.load8_s (i64.const 8)) + ) + (func (export "i64_load8_u") (param $i i64) (result i64) + (i64.store8 (i64.const 8) (local.get $i)) + (i64.load8_u (i64.const 8)) + ) + (func (export "i64_load16_s") (param $i i64) (result i64) + (i64.store16 (i64.const 8) (local.get $i)) + (i64.load16_s (i64.const 8)) + ) + (func (export "i64_load16_u") (param $i i64) (result i64) + (i64.store16 (i64.const 8) (local.get $i)) + (i64.load16_u (i64.const 8)) + ) + (func (export "i64_load32_s") (param $i i64) (result i64) + (i64.store32 (i64.const 8) (local.get $i)) + (i64.load32_s (i64.const 8)) + ) + (func (export "i64_load32_u") (param $i i64) (result i64) + (i64.store32 (i64.const 8) (local.get $i)) + (i64.load32_u (i64.const 8)) + ) +) + +(assert_return (invoke "data") (i32.const 1)) +(assert_return (invoke "cast") (f64.const 42.0)) + +(assert_return (invoke "i32_load8_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load8_u" (i32.const -1)) (i32.const 255)) +(assert_return (invoke "i32_load16_s" (i32.const -1)) (i32.const -1)) +(assert_return (invoke "i32_load16_u" (i32.const -1)) (i32.const 65535)) + +(assert_return (invoke "i32_load8_s" (i32.const 100)) (i32.const 100)) +(assert_return (invoke "i32_load8_u" (i32.const 200)) (i32.const 200)) +(assert_return (invoke "i32_load16_s" (i32.const 20000)) (i32.const 20000)) +(assert_return (invoke "i32_load16_u" (i32.const 40000)) (i32.const 40000)) + +(assert_return (invoke "i32_load8_s" (i32.const 0xfedc6543)) (i32.const 0x43)) +(assert_return (invoke "i32_load8_s" (i32.const 0x3456cdef)) (i32.const 0xffffffef)) +(assert_return (invoke "i32_load8_u" (i32.const 0xfedc6543)) (i32.const 0x43)) +(assert_return (invoke "i32_load8_u" (i32.const 0x3456cdef)) (i32.const 0xef)) +(assert_return (invoke "i32_load16_s" (i32.const 0xfedc6543)) (i32.const 0x6543)) +(assert_return (invoke "i32_load16_s" (i32.const 0x3456cdef)) (i32.const 0xffffcdef)) +(assert_return (invoke "i32_load16_u" (i32.const 0xfedc6543)) (i32.const 0x6543)) +(assert_return (invoke "i32_load16_u" (i32.const 0x3456cdef)) (i32.const 0xcdef)) + +(assert_return (invoke "i64_load8_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load8_u" (i64.const -1)) (i64.const 255)) +(assert_return (invoke "i64_load16_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load16_u" (i64.const -1)) (i64.const 65535)) +(assert_return (invoke "i64_load32_s" (i64.const -1)) (i64.const -1)) +(assert_return (invoke "i64_load32_u" (i64.const -1)) (i64.const 4294967295)) + +(assert_return (invoke "i64_load8_s" (i64.const 100)) (i64.const 100)) +(assert_return (invoke "i64_load8_u" (i64.const 200)) (i64.const 200)) +(assert_return (invoke "i64_load16_s" (i64.const 20000)) (i64.const 20000)) +(assert_return (invoke "i64_load16_u" (i64.const 40000)) (i64.const 40000)) +(assert_return (invoke "i64_load32_s" (i64.const 20000)) (i64.const 20000)) +(assert_return (invoke "i64_load32_u" (i64.const 40000)) (i64.const 40000)) + +(assert_return (invoke "i64_load8_s" (i64.const 0xfedcba9856346543)) (i64.const 0x43)) +(assert_return (invoke "i64_load8_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffffef)) +(assert_return (invoke "i64_load8_u" (i64.const 0xfedcba9856346543)) (i64.const 0x43)) +(assert_return (invoke "i64_load8_u" (i64.const 0x3456436598bacdef)) (i64.const 0xef)) +(assert_return (invoke "i64_load16_s" (i64.const 0xfedcba9856346543)) (i64.const 0x6543)) +(assert_return (invoke "i64_load16_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffffffffcdef)) +(assert_return (invoke "i64_load16_u" (i64.const 0xfedcba9856346543)) (i64.const 0x6543)) +(assert_return (invoke "i64_load16_u" (i64.const 0x3456436598bacdef)) (i64.const 0xcdef)) +(assert_return (invoke "i64_load32_s" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543)) +(assert_return (invoke "i64_load32_s" (i64.const 0x3456436598bacdef)) (i64.const 0xffffffff98bacdef)) +(assert_return (invoke "i64_load32_u" (i64.const 0xfedcba9856346543)) (i64.const 0x56346543)) +(assert_return (invoke "i64_load32_u" (i64.const 0x3456436598bacdef)) (i64.const 0x98bacdef)) diff --git a/test/core/memory_grow64.wast b/test/core/memory_grow64.wast new file mode 100644 index 000000000..90d8de607 --- /dev/null +++ b/test/core/memory_grow64.wast @@ -0,0 +1,95 @@ +(module + (memory i64 0) + + (func (export "load_at_zero") (result i32) (i32.load (i64.const 0))) + (func (export "store_at_zero") (i32.store (i64.const 0) (i32.const 2))) + + (func (export "load_at_page_size") (result i32) (i32.load (i64.const 0x10000))) + (func (export "store_at_page_size") (i32.store (i64.const 0x10000) (i32.const 3))) + + (func (export "grow") (param $sz i64) (result i64) (memory.grow (local.get $sz))) + (func (export "size") (result i64) (memory.size)) +) + +(assert_return (invoke "size") (i64.const 0)) +(assert_trap (invoke "store_at_zero") "out of bounds memory access") +(assert_trap (invoke "load_at_zero") "out of bounds memory access") +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "size") (i64.const 1)) +(assert_return (invoke "load_at_zero") (i32.const 0)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_trap (invoke "store_at_page_size") "out of bounds memory access") +(assert_trap (invoke "load_at_page_size") "out of bounds memory access") +(assert_return (invoke "grow" (i64.const 4)) (i64.const 1)) +(assert_return (invoke "size") (i64.const 5)) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "store_at_zero")) +(assert_return (invoke "load_at_zero") (i32.const 2)) +(assert_return (invoke "load_at_page_size") (i32.const 0)) +(assert_return (invoke "store_at_page_size")) +(assert_return (invoke "load_at_page_size") (i32.const 3)) + + +(module + (memory i64 0) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 800)) (i64.const 3)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 803)) + +(module + (memory i64 0 10) + (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0))) +) + +(assert_return (invoke "grow" (i64.const 0)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "grow" (i64.const 2)) (i64.const 2)) +(assert_return (invoke "grow" (i64.const 6)) (i64.const 4)) +(assert_return (invoke "grow" (i64.const 0)) (i64.const 10)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const -1)) +(assert_return (invoke "grow" (i64.const 0x10000)) (i64.const -1)) + +;; Test that newly allocated memory (program start and memory.grow) is zeroed + +(module + (memory i64 1) + (func (export "grow") (param i64) (result i64) + (memory.grow (local.get 0)) + ) + (func (export "check-memory-zero") (param i64 i64) (result i32) + (local i32) + (local.set 2 (i32.const 1)) + (block + (loop + (local.set 2 (i32.load8_u (local.get 0))) + (br_if 1 (i32.ne (local.get 2) (i32.const 0))) + (br_if 1 (i64.ge_u (local.get 0) (local.get 1))) + (local.set 0 (i64.add (local.get 0) (i64.const 1))) + (br_if 0 (i64.le_u (local.get 0) (local.get 1))) + ) + ) + (local.get 2) + ) +) + +(assert_return (invoke "check-memory-zero" (i64.const 0) (i64.const 0xffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 1)) +(assert_return (invoke "check-memory-zero" (i64.const 0x10000) (i64.const 0x1_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 2)) +(assert_return (invoke "check-memory-zero" (i64.const 0x20000) (i64.const 0x2_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 3)) +(assert_return (invoke "check-memory-zero" (i64.const 0x30000) (i64.const 0x3_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 4)) +(assert_return (invoke "check-memory-zero" (i64.const 0x40000) (i64.const 0x4_ffff)) (i32.const 0)) +(assert_return (invoke "grow" (i64.const 1)) (i64.const 5)) +(assert_return (invoke "check-memory-zero" (i64.const 0x50000) (i64.const 0x5_ffff)) (i32.const 0)) diff --git a/test/core/memory_redundancy64.wast b/test/core/memory_redundancy64.wast new file mode 100644 index 000000000..4aa1ebac1 --- /dev/null +++ b/test/core/memory_redundancy64.wast @@ -0,0 +1,65 @@ +;; Test that optimizers don't do redundant-load, store-to-load, or dead-store +;; optimizations when there are interfering stores, even of different types +;; and to non-identical addresses. + +(module + (memory i64 1 1) + + (func (export "zero_everything") + (i32.store (i64.const 0) (i32.const 0)) + (i32.store (i64.const 4) (i32.const 0)) + (i32.store (i64.const 8) (i32.const 0)) + (i32.store (i64.const 12) (i32.const 0)) + ) + + (func (export "test_store_to_load") (result i32) + (i32.store (i64.const 8) (i32.const 0)) + (f32.store (i64.const 5) (f32.const -0.0)) + (i32.load (i64.const 8)) + ) + + (func (export "test_redundant_load") (result i32) + (local $t i32) + (local $s i32) + (local.set $t (i32.load (i64.const 8))) + (i32.store (i64.const 5) (i32.const 0x80000000)) + (local.set $s (i32.load (i64.const 8))) + (i32.add (local.get $t) (local.get $s)) + ) + + (func (export "test_dead_store") (result f32) + (local $t f32) + (i32.store (i64.const 8) (i32.const 0x23232323)) + (local.set $t (f32.load (i64.const 11))) + (i32.store (i64.const 8) (i32.const 0)) + (local.get $t) + ) + + ;; A function named "malloc" which implementations nonetheless shouldn't + ;; assume behaves like C malloc. + (func $malloc (export "malloc") + (param $size i64) + (result i64) + (i64.const 16) + ) + + ;; Call malloc twice, but unlike C malloc, we don't get non-aliasing pointers. + (func (export "malloc_aliasing") + (result i32) + (local $x i64) + (local $y i64) + (local.set $x (call $malloc (i64.const 4))) + (local.set $y (call $malloc (i64.const 4))) + (i32.store (local.get $x) (i32.const 42)) + (i32.store (local.get $y) (i32.const 43)) + (i32.load (local.get $x)) + ) +) + +(assert_return (invoke "test_store_to_load") (i32.const 0x00000080)) +(invoke "zero_everything") +(assert_return (invoke "test_redundant_load") (i32.const 0x00000080)) +(invoke "zero_everything") +(assert_return (invoke "test_dead_store") (f32.const 0x1.18p-144)) +(invoke "zero_everything") +(assert_return (invoke "malloc_aliasing") (i32.const 43)) diff --git a/test/core/memory_trap64.wast b/test/core/memory_trap64.wast new file mode 100644 index 000000000..77e802ae3 --- /dev/null +++ b/test/core/memory_trap64.wast @@ -0,0 +1,269 @@ +(module + (memory i64 1) + + (func $addr_limit (result i64) + (i64.mul (memory.size) (i64.const 0x10000)) + ) + + (func (export "store") (param $i i64) (param $v i32) + (i32.store (i64.add (call $addr_limit) (local.get $i)) (local.get $v)) + ) + + (func (export "load") (param $i i64) (result i32) + (i32.load (i64.add (call $addr_limit) (local.get $i))) + ) + + (func (export "memory.grow") (param i64) (result i64) + (memory.grow (local.get 0)) + ) +) + +(assert_return (invoke "store" (i64.const -4) (i32.const 42))) +(assert_return (invoke "load" (i64.const -4)) (i32.const 42)) +(assert_trap (invoke "store" (i64.const -3) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const -2) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const -1) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const 0) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "store" (i64.const 0x80000000) (i32.const 13)) "out of bounds memory access") +(assert_trap (invoke "load" (i64.const 0x80000000)) "out of bounds memory access") + +(module + (memory i64 1) + (data (i32.const 0) "abcdefgh") + (data (i32.const 0xfff8) "abcdefgh") + + (func (export "i32.load") (param $a i64) (result i32) + (i32.load (local.get $a)) + ) + (func (export "i64.load") (param $a i64) (result i64) + (i64.load (local.get $a)) + ) + (func (export "f32.load") (param $a i64) (result f32) + (f32.load (local.get $a)) + ) + (func (export "f64.load") (param $a i64) (result f64) + (f64.load (local.get $a)) + ) + (func (export "i32.load8_s") (param $a i64) (result i32) + (i32.load8_s (local.get $a)) + ) + (func (export "i32.load8_u") (param $a i64) (result i32) + (i32.load8_u (local.get $a)) + ) + (func (export "i32.load16_s") (param $a i64) (result i32) + (i32.load16_s (local.get $a)) + ) + (func (export "i32.load16_u") (param $a i64) (result i32) + (i32.load16_u (local.get $a)) + ) + (func (export "i64.load8_s") (param $a i64) (result i64) + (i64.load8_s (local.get $a)) + ) + (func (export "i64.load8_u") (param $a i64) (result i64) + (i64.load8_u (local.get $a)) + ) + (func (export "i64.load16_s") (param $a i64) (result i64) + (i64.load16_s (local.get $a)) + ) + (func (export "i64.load16_u") (param $a i64) (result i64) + (i64.load16_u (local.get $a)) + ) + (func (export "i64.load32_s") (param $a i64) (result i64) + (i64.load32_s (local.get $a)) + ) + (func (export "i64.load32_u") (param $a i64) (result i64) + (i64.load32_u (local.get $a)) + ) + (func (export "i32.store") (param $a i64) (param $v i32) + (i32.store (local.get $a) (local.get $v)) + ) + (func (export "i64.store") (param $a i64) (param $v i64) + (i64.store (local.get $a) (local.get $v)) + ) + (func (export "f32.store") (param $a i64) (param $v f32) + (f32.store (local.get $a) (local.get $v)) + ) + (func (export "f64.store") (param $a i64) (param $v f64) + (f64.store (local.get $a) (local.get $v)) + ) + (func (export "i32.store8") (param $a i64) (param $v i32) + (i32.store8 (local.get $a) (local.get $v)) + ) + (func (export "i32.store16") (param $a i64) (param $v i32) + (i32.store16 (local.get $a) (local.get $v)) + ) + (func (export "i64.store8") (param $a i64) (param $v i64) + (i64.store8 (local.get $a) (local.get $v)) + ) + (func (export "i64.store16") (param $a i64) (param $v i64) + (i64.store16 (local.get $a) (local.get $v)) + ) + (func (export "i64.store32") (param $a i64) (param $v i64) + (i64.store32 (local.get $a) (local.get $v)) + ) +) + +(assert_trap (invoke "i32.store" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xfffe) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const 0xfffd) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -2) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -3) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store" (i64.const -4) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffc) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffb) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfffa) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const 0xfff9) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -3) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -4) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -5) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -6) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -7) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store" (i64.const -8) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0x10000) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xffff) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xfffe) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const 0xfffd) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -1) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -2) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -3) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f32.store" (i64.const -4) (f32.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0x10000) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xffff) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffe) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffd) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffc) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffb) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfffa) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const 0xfff9) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -1) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -2) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -3) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -4) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -5) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -6) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -7) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "f64.store" (i64.const -8) (f64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store8" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store8" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const -1) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.store16" (i64.const -2) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store8" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store8" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store16" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -1) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -2) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -3) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i64.store32" (i64.const -4) (i64.const 0)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i32.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffc)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffb)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfffa)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const 0xfff9)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -5)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -6)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -7)) "out of bounds memory access") +(assert_trap (invoke "i64.load" (i64.const -8)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "f32.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffc)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffb)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfffa)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const 0xfff9)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -5)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -6)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -7)) "out of bounds memory access") +(assert_trap (invoke "f64.load" (i64.const -8)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load8_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i32.load16_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load8_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load16_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_s" (i64.const -4)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0x10000)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xffff)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xfffe)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const 0xfffd)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -1)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -2)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -3)) "out of bounds memory access") +(assert_trap (invoke "i64.load32_u" (i64.const -4)) "out of bounds memory access") + +;; No memory was changed +(assert_return (invoke "i64.load" (i64.const 0xfff8)) (i64.const 0x6867666564636261)) +(assert_return (invoke "i64.load" (i64.const 0)) (i64.const 0x6867666564636261)) From a1697ad6e4fb6777564066cb17812a959d6eb0fc Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Sun, 29 Nov 2020 11:37:27 -0800 Subject: [PATCH 008/230] FIx typos in overview (#11) See https://github.com/WebAssembly/memory64/issues/9 --- proposals/memory64/Overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index a68cf46fe..a81c39559 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -188,11 +188,11 @@ have to support 32-bit memory addresses in their ABI. indicate the index type - ``` limits ::= 0x00 n:u32 ⇒ {min n, max ϵ}, 0 - | 0x01 n:u32 m:u32 ⇒ {min n, max ϵ}, 0 + | 0x01 n:u32 m:u32 ⇒ {min n, max m}, 0 | 0x02 n:u32 ⇒ {min n, max ϵ}, 1 ;; from threads proposal - | 0x03 n:u32 m:u32 ⇒ {min n, max n}, 1 ;; from threads proposal + | 0x03 n:u32 m:u32 ⇒ {min n, max m}, 1 ;; from threads proposal | 0x04 n:u64 ⇒ {min n, max ϵ}, 2 - | 0x05 n:u64 m:u64 ⇒ {min n, max n}, 2 + | 0x05 n:u64 m:u64 ⇒ {min n, max m}, 2 ``` * The [memory type][binary memtype] structure is extended to use this limits From a4819423152e776b7462ce09b3978ae2ef5096bf Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 15 Jan 2021 21:00:02 +0100 Subject: [PATCH 009/230] Editorial tweaks to spec rules (#13) A few minor refactorings of the proposed spec rules: * Change abstract syntax of memtype to have idxtype before limits (envisioning the general structure `idxtype limits elemtype`, e.g., should we once have Table64 as well). * Parameterise syntax of limits over index syntax to accommodate tabletype. * Classify limits by index type instead of having an extra wrapper rule. * Added modified rule for memory type validation. * Factorise binary encoding for limits to make shared i64 memtypes expressible. --- proposals/memory64/Overview.md | 103 +++++++++++++++++++-------------- 1 file changed, 60 insertions(+), 43 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index a81c39559..fda344970 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -35,14 +35,23 @@ have to support 32-bit memory addresses in their ABI. ### Structure -* The [limits][syntax limits] structure is changed to use `u64` - - `limits ::= {min u64, max u64?}` - * A new `idxtype` can be either `i32` or `i64` - `idxtype ::= i32 | i64` +* The [limits][syntax limits] structure is parameterised by index syntax + - `limits_iv ::= {min iv, max iv?}` + The parameter is omitted where it is immaterial. + +* The [table type][syntax tabletype] continues to use i32 indices + - `tabletype ::= limits_i32 elemtype` + * The [memory type][syntax memtype] structure is extended to have an index type - - `memtype ::= limits idxtype` + - `memtype ::= idxtype limits_iv (iff idxtype = type(iv))` + - where + ``` + type(\i32) = \I32 + type(\i64) = \I64 + ``` * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset - `memarg ::= {offset u64, align u32}` @@ -50,71 +59,83 @@ have to support 32-bit memory addresses in their ABI. ### Validation -* [Memory page limits][valid limits] are extended for `i64` indexes +* Index types are classified by their value range: - ``` - ⊦ limits : 2**16 ---------------- - ⊦ limits i32 ok + ⊦ i32 : 2**16 ``` - ``` - ⊦ limits : 2**48 ---------------- - ⊦ limits i64 ok + ⊦ i64 : 2**48 + ``` + +* [Memory page limits][valid limits] are classified by their index types + - ``` + ⊦ it : k n <= k (m <= k)? (n < m)? + ------------------------------------------- + ⊦ { min n, max m? } : it + ``` + +* Memory types are validated accordingly: + - ``` + ⊦ limits : it + -------------- + ⊦ it limits ok ``` * All [memory instructions][valid meminst] are changed to use the index type, and the offset must also be in range of the index type - t.load memarg - ``` - C.mems[0] = limits it 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + C.mems[0] = it limits 2**memarg.align <= |t|/8 memarg.offset < 2**|it| -------------------------------------------------------------------------- C ⊦ t.load memarg : [it] → [t] ``` - t.loadN_sx memarg - ``` - C.mems[0] = limits it 2**memarg.align <= N/8 memarg.offset < 2**|it| + C.mems[0] = it limits 2**memarg.align <= N/8 memarg.offset < 2**|it| ------------------------------------------------------------------------ C ⊦ t.loadN_sx memarg : [it] → [t] ``` - t.store memarg - ``` - C.mems[0] = limits it 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + C.mems[0] = it limits 2**memarg.align <= |t|/8 memarg.offset < 2**|it| -------------------------------------------------------------------------- C ⊦ t.store memarg : [it t] → [] ``` - t.storeN_sx memarg - ``` - C.mems[0] = limits it 2**memarg.align <= N/8 memarg.offset < 2**|it| + C.mems[0] = it limits 2**memarg.align <= N/8 memarg.offset < 2**|it| ------------------------------------------------------------------------ C ⊦ t.storeN_sx memarg : [it t] → [] ``` - memory.size - ``` - C.mems[0] = limits it + C.mems[0] = it limits --------------------------- C ⊦ memory.size : [] → [it] ``` - memory.grow - ``` - C.mems[0] = limits it + C.mems[0] = it limits ----------------------------- C ⊦ memory.grow : [it] → [it] ``` - memory.fill - ``` - C.mems[0] = limits it + C.mems[0] = it limits ----------------------------- C ⊦ memory.fill : [it i32 it] → [] ``` - memory.copy - ``` - C.mems[0] = limits it + C.mems[0] = it limits ----------------------------- C ⊦ memory.copy : [it it it] → [] ``` - memory.init x - ``` - C.mems[0] = limits it C.datas[x] = ok + C.mems[0] = it limits C.datas[x] = ok ------------------------------------------- C ⊦ memory.init : [it i32 i32] → [] ``` @@ -125,7 +146,7 @@ have to support 32-bit memory addresses in their ABI. be used. For example, - memory.size x - ``` - C.mems[x] = limits it + C.mems[x] = it limits --------------------------- C ⊦ memory.size x : [] → [it] ``` @@ -134,21 +155,14 @@ have to support 32-bit memory addresses in their ABI. signatures: - memory.copy d s - ``` - C.mems[d] = limits it_d C.mems[s] = limits it_s - -------------------------------------------------------- - C ⊦ memory.copy d s : [it_d it_s f(it_d, it_s)] → [] - - where: - - f(i32, i32) = i32 - f(i64, i32) = i32 - f(i32, i64) = i32 - f(i64, i64) = i64 + C.mems[d] = iN limits C.mems[s] = iM limits K = min {N, M} + --------------------------------------------------------------- + C ⊦ memory.copy d s : [iN iM iK] → [] ``` * [Data segment validation][valid data] uses the index type - ``` - C.mems[0] = limits it C ⊦ expr: [it] C ⊦ expr const + C.mems[0] = it limits C ⊦ expr: [it] C ⊦ expr const ------------------------------------------------------- C ⊦ {data x, offset expr, init b*} ok ``` @@ -176,9 +190,9 @@ have to support 32-bit memory addresses in their ABI. * [Memory import matching][exec memmatch] requires that the index type matches - ``` - ⊦ limits_1 <= limits_2 it_1 = it_2 + it_1 = it_2 ⊦ limits_1 <= limits_2 ---------------------------------------- - ⊦ mem limits_1 it_1 <= mem limits_2 it_2 + ⊦ mem it_1 limits_1 <= mem it_2 limits_2 ``` @@ -187,19 +201,20 @@ have to support 32-bit memory addresses in their ABI. * The [limits][binary limits] structure also encodes an additional value to indicate the index type - ``` - limits ::= 0x00 n:u32 ⇒ {min n, max ϵ}, 0 - | 0x01 n:u32 m:u32 ⇒ {min n, max m}, 0 - | 0x02 n:u32 ⇒ {min n, max ϵ}, 1 ;; from threads proposal - | 0x03 n:u32 m:u32 ⇒ {min n, max m}, 1 ;; from threads proposal - | 0x04 n:u64 ⇒ {min n, max ϵ}, 2 - | 0x05 n:u64 m:u64 ⇒ {min n, max m}, 2 + limits ::= 0x00 n:u32 ⇒ i32, {min n, max ϵ}, 0 + | 0x01 n:u32 m:u32 ⇒ i32, {min n, max m}, 0 + | 0x02 n:u32 ⇒ i32, {min n, max ϵ}, 1 ;; from threads proposal + | 0x03 n:u32 m:u32 ⇒ i32, {min n, max m}, 1 ;; from threads proposal + | 0x04 n:u64 ⇒ i64, {min n, max ϵ}, 0 + | 0x05 n:u64 m:u64 ⇒ i64, {min n, max m}, 0 + | 0x06 n:u32 ⇒ i64, {min n, max ϵ}, 1 ;; from threads proposal + | 0x07 n:u32 m:u32 ⇒ i64, {min n, max m}, 1 ;; from threads proposal ``` * The [memory type][binary memtype] structure is extended to use this limits encoding - ``` - memtype ::= lim, 0:limits ⇒ lim i32 - | lim, 2:limits ⇒ lim i64 + memtype ::= (it, lim, _):limits ⇒ it lim ``` * The [memarg][binary memarg]'s offset is read as `u64` @@ -209,14 +224,15 @@ have to support 32-bit memory addresses in their ABI. * There is a new index type: - ``` - indextype ::= 'i32' | 'i64' + idxtype ::= 'i32' ⇒ i32 + | 'i64' ⇒ i64 ``` * The [memory type][text memtype] definition is extended to allow an optional index type, which must be either `i32` or `i64` - ``` - memtype ::= lim:limits ⇒ lim i32 - | it:indextype lim:limits ⇒ lim it + memtype ::= lim:limits ⇒ i32 lim + | it:idxtype lim:limits ⇒ it lim ``` * The [memory abbreviation][text memabbrev] definition is extended to allow an @@ -233,6 +249,7 @@ have to support 32-bit memory addresses in their ABI. [memory instructions]: https://webassembly.github.io/spec/core/syntax/instructions.html#memory-instructions [ISA]: https://en.wikipedia.org/wiki/Instruction_set_architecture [syntax limits]: https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits +[syntax tabletype]: https://webassembly.github.io/spec/core/syntax/types.html#table-types [syntax memtype]: https://webassembly.github.io/spec/core/syntax/types.html#memory-types [syntax memarg]: https://webassembly.github.io/spec/core/syntax/instructions.html#syntax-memarg [valid limits]: https://webassembly.github.io/spec/core/valid/types.html#limits From 2bbd2a137fdf96089e09961966e543ebbb81e0e8 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Tue, 2 Feb 2021 11:09:13 -0800 Subject: [PATCH 010/230] Support for the Memory64 proposal in the spec interpreter (#14) * Support for the Memory64 proposal in the spec interpreter * Apply suggestions from code review Co-authored-by: Andreas Rossberg * Memory64 code review fixes * Update interpreter/syntax/types.ml Co-authored-by: Andreas Rossberg Co-authored-by: Andreas Rossberg --- interpreter/binary/decode.ml | 19 ++++++----- interpreter/binary/encode.ml | 15 +++++---- interpreter/exec/eval.ml | 18 +++++----- interpreter/host/spectest.ml | 2 +- interpreter/runtime/memory.ml | 43 ++++++++++++++--------- interpreter/runtime/memory.mli | 7 ++-- interpreter/syntax/types.ml | 33 +++++++++++------- interpreter/text/arrange.ml | 10 ++++-- interpreter/text/parser.mly | 41 +++++++++++++++------- interpreter/valid/valid.ml | 45 +++++++++++++++---------- test/core/address.wast | 4 +-- test/core/address64.wast | 7 ---- test/core/binary-leb128.wast | 26 +++++++------- test/core/binary.wast | 22 ++++++------ test/core/{bulk64.wast => bulk64._wast} | 0 test/core/memory.wast | 12 +++---- 16 files changed, 177 insertions(+), 127 deletions(-) rename test/core/{bulk64.wast => bulk64._wast} (100%) diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 4e110c211..5755e2952 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -94,8 +94,8 @@ let rec vsN n s = then (if b land 0x40 = 0 then x else Int64.(logor x (logxor (-1L) 0x7fL))) else Int64.(logor x (shift_left (vsN (n - 7) s) 7)) -let vu1 s = Int64.to_int (vuN 1 s) let vu32 s = Int64.to_int32 (vuN 32 s) +let vu64 s = vuN 64 s let vs7 s = Int64.to_int (vsN 7 s) let vs32 s = Int64.to_int32 (vsN 32 s) let vs33 s = I32_convert.wrap_i64 (vsN 33 s) @@ -109,7 +109,6 @@ let len32 s = if I32.le_u n (Int32.of_int (len s)) then Int32.to_int n else error s pos "length out of bounds" -let bool s = (vu1 s = 1) let string s = let n = len32 s in get_string n s let rec list f n s = if n = 0 then [] else let x = f s in x :: list f (n - 1) s let opt f b s = if b then Some (f s) else None @@ -155,19 +154,23 @@ let func_type s = | _ -> error s (pos s - 1) "malformed function type" let limits vu s = - let has_max = bool s in + let flags = u8 s in + require (flags land 0xfa = 0) s (pos s - 1) "malformed limits flags"; + let has_max = (flags land 1 = 1) in + let is64 = (flags land 4 = 4) in let min = vu s in let max = opt vu has_max s in - {min; max} + {min; max}, is64 let table_type s = let t = elem_type s in - let lim = limits vu32 s in + let lim, is64 = limits vu32 s in + require (not is64) s (pos s - 1) "tables cannot have 64-bit indices"; TableType (lim, t) let memory_type s = - let lim = limits vu32 s in - MemoryType lim + let lim, is64 = limits vu64 s in + MemoryType (lim, if is64 then I64IndexType else I32IndexType) let mutability s = match u8 s with @@ -194,7 +197,7 @@ let end_ s = expect 0x0b s "END opcode expected" let memop s = let align = vu32 s in require (I32.le_u align 32l) s (pos s - 1) "malformed memop flags"; - let offset = vu32 s in + let offset = vu64 s in Int32.to_int align, offset let block_type s = diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 6e797edab..1a36ae2cf 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -56,7 +56,6 @@ let encode m = if -64L <= i && i < 64L then u8 b else (u8 (b lor 0x80); vs64 (Int64.shift_right i 7)) - let vu1 i = vu64 Int64.(logand (of_int i) 1L) let vu32 i = vu64 Int64.(logand (of_int32 i) 0xffffffffL) let vs7 i = vs64 (Int64.of_int i) let vs32 i = vs64 (Int64.of_int32 i) @@ -64,13 +63,14 @@ let encode m = let f32 x = u32 (F32.to_bits x) let f64 x = u64 (F64.to_bits x) + let flag b i = if b then 1 lsl i else 0 + let len i = if Int32.to_int (Int32.of_int i) <> i then Code.error Source.no_region "cannot encode length with more than 32 bit"; vu32 (Int32.of_int i) - let bool b = vu1 (if b then 1 else 0) let string bs = len (String.length bs); put_string s bs let name n = string (Utf8.encode n) let list f xs = List.iter f xs @@ -104,14 +104,15 @@ let encode m = let func_type = function | FuncType (ins, out) -> vs7 (-0x20); stack_type ins; stack_type out - let limits vu {min; max} = - bool (max <> None); vu min; opt vu max + let limits vu {min; max} it = + let flags = flag (max <> None) 0 + flag (it = I64IndexType) 2 in + u8 flags; vu min; opt vu max let table_type = function - | TableType (lim, t) -> elem_type t; limits vu32 lim + | TableType (lim, t) -> elem_type t; limits vu32 lim I32IndexType let memory_type = function - | MemoryType lim -> limits vu32 lim + | MemoryType (lim, it) -> limits vu64 lim it let mutability = function | Immutable -> u8 0 @@ -129,7 +130,7 @@ let encode m = let op n = u8 n let end_ () = op 0x0b - let memop {align; offset; _} = vu32 (Int32.of_int align); vu32 offset + let memop {align; offset; _} = vu32 (Int32.of_int align); vu64 offset let var x = vu32 x.it diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 6687dec93..0d8fb1750 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -209,9 +209,9 @@ let rec step (c : config) : config = with Global.NotMutable -> Crash.error e.at "write to immutable global" | Global.Type -> Crash.error e.at "type mismatch at global write") - | Load {offset; ty; sz; _}, I32 i :: vs' -> + | Load {offset; ty; sz; _}, a :: vs' -> let mem = memory frame.inst (0l @@ e.at) in - let addr = I64_convert.extend_i32_u i in + let addr = Memory.address_of_value a in (try let v = match sz with @@ -220,9 +220,9 @@ let rec step (c : config) : config = in v :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) - | Store {offset; sz; _}, v :: I32 i :: vs' -> + | Store {offset; sz; _}, v :: a :: vs' -> let mem = memory frame.inst (0l @@ e.at) in - let addr = I64_convert.extend_i32_u i in + let addr = Memory.address_of_value a in (try (match sz with | None -> Memory.store_value mem addr offset v @@ -233,15 +233,15 @@ let rec step (c : config) : config = | MemorySize, vs -> let mem = memory frame.inst (0l @@ e.at) in - I32 (Memory.size mem) :: vs, [] + Memory.value_of_address (Memory.index_of mem) (Memory.size mem) :: vs, [] - | MemoryGrow, I32 delta :: vs' -> + | MemoryGrow, delta :: vs' -> let mem = memory frame.inst (0l @@ e.at) in let old_size = Memory.size mem in let result = - try Memory.grow mem delta; old_size - with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1l - in I32 result :: vs', [] + try Memory.grow mem (Memory.address_of_value delta); old_size + with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1L + in (Memory.value_of_address (Memory.index_of mem) result) :: vs', [] | Const v, vs -> v.it :: vs, [] diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml index 78f3e994a..10dc923b3 100644 --- a/interpreter/host/spectest.ml +++ b/interpreter/host/spectest.ml @@ -17,7 +17,7 @@ let global (GlobalType (t, _) as gt) = in Global.alloc gt v let table = Table.alloc (TableType ({min = 10l; max = Some 20l}, FuncRefType)) -let memory = Memory.alloc (MemoryType {min = 1l; max = Some 2l}) +let memory = Memory.alloc (MemoryType ({min = 1L; max = Some 2L}, I32IndexType)) let func f t = Func.alloc_host t (f t) let print_value v = diff --git a/interpreter/runtime/memory.ml b/interpreter/runtime/memory.ml index 15794033f..c2fc0c3fc 100644 --- a/interpreter/runtime/memory.ml +++ b/interpreter/runtime/memory.ml @@ -3,12 +3,12 @@ open Lib.Bigarray open Types open Values -type size = int32 (* number of pages *) +type size = int64 (* number of pages *) type address = int64 -type offset = int32 +type offset = int64 type memory' = (int, int8_unsigned_elt, c_layout) Array1.t -type memory = {mutable content : memory'; max : size option} +type memory = {mutable content : memory'; max : size option; it : index_type} type t = memory exception Type @@ -21,36 +21,47 @@ let page_size = 0x10000L (* 64 KiB *) let within_limits n = function | None -> true - | Some max -> I32.le_u n max + | Some max -> I64.le_u n max -let create n = - if I32.gt_u n 0x10000l then raise SizeOverflow else +let create n it = + if I64.gt_u n 0x10000L && it = I32IndexType then raise SizeOverflow else try - let size = Int64.(mul (of_int32 n) page_size) in + let size = Int64.(mul n page_size) in let mem = Array1_64.create Int8_unsigned C_layout size in Array1.fill mem 0; mem with Out_of_memory -> raise OutOfMemory -let alloc (MemoryType {min; max}) = +let alloc (MemoryType ({min; max}, it)) = assert (within_limits min max); - {content = create min; max} + {content = create min it; max; it} let bound mem = Array1_64.dim mem.content let size mem = - Int64.(to_int32 (div (bound mem) page_size)) + Int64.(div (bound mem) page_size) let type_of mem = - MemoryType {min = size mem; max = mem.max} + MemoryType ({min = size mem; max = mem.max}, mem.it) + +let index_of mem = mem.it + +let value_of_address it x = + if it = I64IndexType then I64 (x) else I32 (Int64.to_int32 x) + +let address_of_value x = + match x with + | I64 i -> i + | I32 i -> I64_convert.extend_i32_u i + | _ -> raise Type let grow mem delta = let old_size = size mem in - let new_size = Int32.add old_size delta in - if I32.gt_u old_size new_size then raise SizeOverflow else + let new_size = Int64.add old_size delta in + if I64.gt_u old_size new_size then raise SizeOverflow else if not (within_limits new_size mem.max) then raise SizeLimit else - let after = create new_size in + let after = create new_size mem.it in let dim = Array1_64.dim mem.content in Array1.blit (Array1_64.sub mem.content 0L dim) (Array1_64.sub after 0L dim); mem.content <- after @@ -74,7 +85,7 @@ let store_bytes mem a bs = done let effective_address a o = - let ea = Int64.(add a (of_int32 o)) in + let ea = Int64.(add a o) in if I64.lt_u ea a then raise Bounds; ea @@ -91,7 +102,7 @@ let storen mem a o n x = assert (n > 0 && n <= 8); let rec loop a n x = if n > 0 then begin - Int64.(loop (add a 1L) (n - 1) (shift_right x 8)); + Int64.(loop (effective_address a 1L) (n - 1) (shift_right x 8)); store_byte mem a (Int64.to_int x land 0xff) end in loop (effective_address a o) n x diff --git a/interpreter/runtime/memory.mli b/interpreter/runtime/memory.mli index f611e4647..323693e3d 100644 --- a/interpreter/runtime/memory.mli +++ b/interpreter/runtime/memory.mli @@ -4,9 +4,9 @@ open Values type memory type t = memory -type size = int32 (* number of pages *) +type size = int64 (* number of pages *) type address = int64 -type offset = int32 +type offset = int64 exception Type exception Bounds @@ -18,8 +18,11 @@ val page_size : int64 val alloc : memory_type -> memory (* raises SizeOverflow, OutOfMemory *) val type_of : memory -> memory_type +val index_of : memory -> index_type val size : memory -> size val bound : memory -> address +val value_of_address : index_type -> address -> value +val address_of_value : value -> address val grow : memory -> size -> unit (* raises SizeLimit, SizeOverflow, OutOfMemory *) diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml index aeb398b02..6b32b3061 100644 --- a/interpreter/syntax/types.ml +++ b/interpreter/syntax/types.ml @@ -1,6 +1,7 @@ (* Types *) type value_type = I32Type | I64Type | F32Type | F64Type +type index_type = I32IndexType | I64IndexType type elem_type = FuncRefType type stack_type = value_type list type func_type = FuncType of stack_type * stack_type @@ -8,7 +9,7 @@ type func_type = FuncType of stack_type * stack_type type 'a limits = {min : 'a; max : 'a option} type mutability = Immutable | Mutable type table_type = TableType of Int32.t limits * elem_type -type memory_type = MemoryType of Int32.t limits +type memory_type = MemoryType of Int64.t limits * index_type type global_type = GlobalType of value_type * mutability type extern_type = | ExternFuncType of func_type @@ -31,24 +32,28 @@ let packed_size = function | Pack16 -> 2 | Pack32 -> 4 +let value_type_of_index_type = function + | I32IndexType -> I32Type + | I64IndexType -> I64Type + (* Subtyping *) -let match_limits lim1 lim2 = - I32.ge_u lim1.min lim2.min && +let match_limits ge lim1 lim2 = + ge lim1.min lim2.min && match lim1.max, lim2.max with | _, None -> true | None, Some _ -> false - | Some i, Some j -> I32.le_u i j + | Some i, Some j -> ge j i let match_func_type ft1 ft2 = ft1 = ft2 let match_table_type (TableType (lim1, et1)) (TableType (lim2, et2)) = - et1 = et2 && match_limits lim1 lim2 + et1 = et2 && match_limits I32.ge_u lim1 lim2 -let match_memory_type (MemoryType lim1) (MemoryType lim2) = - match_limits lim1 lim2 +let match_memory_type (MemoryType (lim1, it1)) (MemoryType (lim2, it2)) = + it1 = it2 && match_limits I64.ge_u lim1 lim2 let match_global_type gt1 gt2 = gt1 = gt2 @@ -89,15 +94,19 @@ let string_of_value_types = function let string_of_elem_type = function | FuncRefType -> "funcref" -let string_of_limits {min; max} = - I32.to_string_u min ^ - (match max with None -> "" | Some n -> " " ^ I32.to_string_u n) +let string_of_limits to_string {min; max} = + to_string min ^ + (match max with None -> "" | Some n -> " " ^ to_string n) let string_of_memory_type = function - | MemoryType lim -> string_of_limits lim + | MemoryType (lim, it) -> + string_of_value_type (value_type_of_index_type it) ^ + " " ^ string_of_limits I64.to_string_u lim + let string_of_table_type = function - | TableType (lim, t) -> string_of_limits lim ^ " " ^ string_of_elem_type t + | TableType (lim, t) -> string_of_limits I32.to_string_u lim ^ " " ^ + string_of_elem_type t let string_of_global_type = function | GlobalType (t, Immutable) -> string_of_value_type t diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 961600a7b..efd6819d0 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -10,6 +10,7 @@ open Sexpr let nat n = I32.to_string_u (I32.of_int_u n) let nat32 = I32.to_string_u +let nat64 = I64.to_string_u let add_hex_char buf c = Printf.bprintf buf "\\%02x" (Char.code c) let add_char buf = function @@ -57,6 +58,8 @@ let break_string s = let value_type t = string_of_value_type t +let index_type t = string_of_value_type (value_type_of_index_type t) + let elem_type t = string_of_elem_type t let decls kind ts = tab kind (atom value_type) ts @@ -201,7 +204,7 @@ let cvtop = oper (IntOp.cvtop, FloatOp.cvtop) let memop name {ty; align; offset; _} sz = value_type ty ^ "." ^ name ^ - (if offset = 0l then "" else " offset=" ^ nat32 offset) ^ + (if offset = 0L then "" else " offset=" ^ nat64 offset) ^ (if 1 lsl align = sz then "" else " align=" ^ nat (1 lsl align)) let loadop op = @@ -294,8 +297,9 @@ let table off i tab = ) let memory off i mem = - let {mtype = MemoryType lim} = mem.it in - Node ("memory $" ^ nat (off + i) ^ " " ^ limits nat32 lim, []) + let {mtype = MemoryType (lim, it)} = mem.it in + Node ("memory $" ^ nat (off + i) ^ " " ^ index_type it ^ " " ^ + limits nat64 lim, []) let segment head dat seg = let {index; offset; init} = seg.it in diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index 7b9b3e744..337ee8413 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -56,6 +56,9 @@ let nat s at = let nat32 s at = try I32.of_string_u s with Failure _ -> error at "i32 constant out of range" +let nat64 s at = + try I64.of_string_u s with Failure _ -> error at "i64 constant out of range" + let name s at = try Utf8.decode s with Utf8.Utf8 -> error at "malformed UTF-8 encoding" @@ -107,7 +110,6 @@ let func_type (c : context) x = try (Lib.List32.nth c.types.list x.it).it with Failure _ -> error x.at ("unknown type " ^ Int32.to_string x.it) - let anon category space n = let i = space.count in space.count <- Int32.add i n; @@ -162,6 +164,19 @@ let inline_type_explicit (c : context) x ft at = error at "inline function type does not match explicit type"; x +let index_type t at = + match t with + | I32Type -> I32IndexType + | I64Type -> I64IndexType + | _ -> error at "illegal memory index type" + +let memory_data init it c x at = + let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in + [{mtype = MemoryType ({min = size; max = Some size}, it)} @@ at], + [{index = x; + offset = [i32_const (0l @@ at) @@ at] @@ at; init} @@ at], + [], [] + %} %token NAT INT FLOAT STRING VAR VALUE_TYPE FUNCREF MUT LPAR RPAR @@ -249,15 +264,20 @@ func_type : { let FuncType (ins, out) = $6 in FuncType ($4 :: ins, out) } table_type : - | limits elem_type { TableType ($1, $2) } + | limits32 elem_type { TableType ($1, $2) } memory_type : - | limits { MemoryType $1 } + | VALUE_TYPE limits64 { MemoryType ($2, index_type $1 (at ())) } + | limits64 { MemoryType ($1, I32IndexType) } -limits : +limits32 : | NAT { {min = nat32 $1 (ati 1); max = None} } | NAT NAT { {min = nat32 $1 (ati 1); max = Some (nat32 $2 (ati 2))} } +limits64 : + | NAT { {min = nat64 $1 (ati 1); max = None} } + | NAT NAT { {min = nat64 $1 (ati 1); max = Some (nat64 $2 (ati 2))} } + type_use : | LPAR TYPE var RPAR { $3 } @@ -300,8 +320,8 @@ labeling_end_opt : | bind_var { [$1] } offset_opt : - | /* empty */ { 0l } - | OFFSET_EQ_NAT { nat32 $1 (at ()) } + | /* empty */ { 0L } + | OFFSET_EQ_NAT { nat64 $1 (at ()) } align_opt : | /* empty */ { None } @@ -676,12 +696,9 @@ memory_fields : { fun c x at -> let mems, data, ims, exs = $2 c x at in mems, data, ims, $1 (MemoryExport x) c :: exs } | LPAR DATA string_list RPAR /* Sugar */ - { fun c x at -> - let size = Int32.(div (add (of_int (String.length $3)) 65535l) 65536l) in - [{mtype = MemoryType {min = size; max = Some size}} @@ at], - [{index = x; - offset = [i32_const (0l @@ at) @@ at] @@ at; init = $3} @@ at], - [], [] } + { memory_data $3 I32IndexType } + | VALUE_TYPE LPAR DATA string_list RPAR /* Sugar */ + { memory_data $4 (index_type $1 (at ())) } global : | LPAR GLOBAL bind_var_opt global_fields RPAR diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 7dd573b54..0c1240af0 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -149,7 +149,7 @@ let check_unop unop at = | _ -> () let check_memop (c : context) (memop : 'a memop) get_sz at = - ignore (memory c (0l @@ at)); + let MemoryType (lim, it) = memory c (0l @@ at) in let size = match get_sz memop.sz with | None -> size memop.ty @@ -158,7 +158,11 @@ let check_memop (c : context) (memop : 'a memop) get_sz at = packed_size sz in require (1 lsl memop.align <= size) at - "alignment must not be larger than natural" + "alignment must not be larger than natural"; + if it = I32IndexType then + require (I64.lt_u memop.offset 0x1_0000_0000L) at + "offset out of range"; + it (* @@ -260,20 +264,20 @@ let rec check_instr (c : context) (e : instr) (s : infer_stack_type) : op_type = [t] --> [] | Load memop -> - check_memop c memop (Lib.Option.map fst) e.at; - [I32Type] --> [memop.ty] + let it = check_memop c memop (Lib.Option.map fst) e.at in + [value_type_of_index_type it] --> [memop.ty] | Store memop -> - check_memop c memop (fun sz -> sz) e.at; - [I32Type; memop.ty] --> [] + let it = check_memop c memop (fun sz -> sz) e.at in + [value_type_of_index_type it; memop.ty] --> [] | MemorySize -> - ignore (memory c (0l @@ e.at)); - [] --> [I32Type] + let MemoryType (_, it) = memory c (0l @@ e.at) in + [] --> [value_type_of_index_type it] | MemoryGrow -> - ignore (memory c (0l @@ e.at)); - [I32Type] --> [I32Type] + let MemoryType (_, it) = memory c (0l @@ e.at) in + [value_type_of_index_type it] --> [value_type_of_index_type it] | Const v -> let t = type_value v.it in @@ -323,13 +327,13 @@ and check_block (c : context) (es : instr list) (ft : func_type) at = (* Types *) -let check_limits {min; max} range at msg = - require (I32.le_u min range) at msg; +let check_limits le_u {min; max} range at msg = + require (le_u min range) at msg; match max with | None -> () | Some max -> - require (I32.le_u max range) at msg; - require (I32.le_u min max) at + require (le_u max range) at msg; + require (le_u min max) at "size minimum must not be greater than maximum" let check_value_type (t : value_type) at = @@ -342,12 +346,17 @@ let check_func_type (ft : func_type) at = let check_table_type (tt : table_type) at = let TableType (lim, _) = tt in - check_limits lim 0xffff_ffffl at "table size must be at most 2^32-1" + check_limits I32.le_u lim 0xffff_ffffl at "table size must be at most 2^32-1" let check_memory_type (mt : memory_type) at = - let MemoryType lim = mt in - check_limits lim 0x1_0000l at - "memory size must be at most 65536 pages (4GiB)" + let MemoryType (lim, it) = mt in + match it with + | I32IndexType -> + check_limits I64.le_u lim 0x1_0000L at + "memory size must be at most 65536 pages (4GiB)" + | I64IndexType -> + check_limits I64.le_u lim 0x1_0000_0000_0000L at + "memory size must be at most 48 bits of pages" let check_global_type (gt : global_type) at = let GlobalType (t, mut) = gt in diff --git a/test/core/address.wast b/test/core/address.wast index 320ea36bc..8e52030ec 100644 --- a/test/core/address.wast +++ b/test/core/address.wast @@ -210,12 +210,12 @@ (assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access") (assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access") -(assert_malformed +(assert_invalid (module quote "(memory 1)" "(func (drop (i32.load offset=4294967296 (i32.const 0))))" ) - "i32 constant" + "offset out of range" ) ;; Load i64 data with different offset/align arguments diff --git a/test/core/address64.wast b/test/core/address64.wast index 0003e5d00..faa5ccbd5 100644 --- a/test/core/address64.wast +++ b/test/core/address64.wast @@ -203,13 +203,6 @@ (assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access") (assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access") -(assert_malformed - (module quote - "(memory i64 1)" - "(func (drop (i32.load offset=4294967296 (i64.const 0))))" - ) - "i32 constant" -) ;; Load i64 data with different offset/align arguments diff --git a/test/core/binary-leb128.wast b/test/core/binary-leb128.wast index 8503c9ae9..6a4b16d02 100644 --- a/test/core/binary-leb128.wast +++ b/test/core/binary-leb128.wast @@ -216,8 +216,8 @@ (assert_malformed (module binary "\00asm" "\01\00\00\00" - "\05\08\01" ;; Memory section with 1 entry - "\00\82\80\80\80\80\00" ;; no max, minimum 2 with one byte too many + "\05\08\01" ;; Memory section with 1 entry + "\00\82\80\80\80\80\80\80\80\80\80\00" ;; no max, minimum 2 with one byte too many ) "integer representation too long" ) @@ -226,7 +226,7 @@ "\00asm" "\01\00\00\00" "\05\0a\01" ;; Memory section with 1 entry "\01\82\00" ;; minimum 2 - "\82\80\80\80\80\00" ;; max 2 with one byte too many + "\82\80\80\80\80\80\80\80\80\80\00" ;; max 2 with one byte too many ) "integer representation too long" ) @@ -413,7 +413,7 @@ "\41\00" ;; i32.const 0 "\28" ;; i32.load "\02" ;; alignment 2 - "\82\80\80\80\80\00" ;; offset 2 with one byte too many + "\82\80\80\80\80\80\80\80\80\80\00" ;; offset 2 with one byte too many "\1a" ;; drop "\0b" ;; end ) @@ -471,7 +471,7 @@ "\41\03" ;; i32.const 3 "\36" ;; i32.store "\02" ;; alignment 2 - "\82\80\80\80\80\00" ;; offset 2 with one byte too many + "\82\80\80\80\80\80\80\80\80\80\00" ;; offset 2 with one byte too many "\0b" ;; end ) "integer representation too long" @@ -525,7 +525,7 @@ (module binary "\00asm" "\01\00\00\00" "\05\07\01" ;; Memory section with 1 entry - "\00\82\80\80\80\70" ;; no max, minimum 2 with unused bits set + "\00\82\80\80\80\80\80\80\80\80\70" ;; no max, minimum 2 with unused bits set ) "integer too large" ) @@ -533,7 +533,7 @@ (module binary "\00asm" "\01\00\00\00" "\05\07\01" ;; Memory section with 1 entry - "\00\82\80\80\80\40" ;; no max, minimum 2 with some unused bits set + "\00\82\80\80\80\80\80\80\80\80\40" ;; no max, minimum 2 with some unused bits set ) "integer too large" ) @@ -542,7 +542,7 @@ "\00asm" "\01\00\00\00" "\05\09\01" ;; Memory section with 1 entry "\01\82\00" ;; minimum 2 - "\82\80\80\80\10" ;; max 2 with unused bits set + "\82\80\80\80\80\80\80\80\80\10" ;; max 2 with unused bits set ) "integer too large" ) @@ -551,7 +551,7 @@ "\00asm" "\01\00\00\00" "\05\09\01" ;; Memory section with 1 entry "\01\82\00" ;; minimum 2 - "\82\80\80\80\40" ;; max 2 with some unused bits set + "\82\80\80\80\80\80\80\80\80\40" ;; max 2 with some unused bits set ) "integer too large" ) @@ -739,7 +739,7 @@ "\41\00" ;; i32.const 0 "\28" ;; i32.load "\02" ;; alignment 2 - "\82\80\80\80\10" ;; offset 2 with unused bits set + "\82\80\80\80\80\80\80\80\80\10" ;; offset 2 with unused bits set "\1a" ;; drop "\0b" ;; end ) @@ -758,7 +758,7 @@ "\41\00" ;; i32.const 0 "\28" ;; i32.load "\02" ;; alignment 2 - "\82\80\80\80\40" ;; offset 2 with some unused bits set + "\82\80\80\80\80\80\80\80\80\40" ;; offset 2 with some unused bits set "\1a" ;; drop "\0b" ;; end ) @@ -853,7 +853,7 @@ "\41\03" ;; i32.const 3 "\36" ;; i32.store "\02" ;; alignment 2 - "\82\80\80\80\10" ;; offset 2 with unused bits set + "\82\80\80\80\80\80\80\80\80\10" ;; offset 2 with unused bits set "\0b" ;; end ) "integer too large" @@ -873,7 +873,7 @@ "\41\03" ;; i32.const 3 "\36" ;; i32.store "\02" ;; alignment 2 - "\82\80\80\80\40" ;; offset 2 with some unused bits set + "\82\80\80\80\80\80\80\80\80\40" ;; offset 2 with some unused bits set "\0b" ;; end ) "integer too large" diff --git a/test/core/binary.wast b/test/core/binary.wast index fd188d760..bd419431f 100644 --- a/test/core/binary.wast +++ b/test/core/binary.wast @@ -602,19 +602,19 @@ "\00asm" "\01\00\00\00" "\05\03\01" ;; table section with one entry "\70" ;; anyfunc - "\02" ;; malformed table limits flag + "\08" ;; malformed table limits flag ) - "integer too large" + "malformed limits flags" ) (assert_malformed (module binary "\00asm" "\01\00\00\00" "\05\04\01" ;; table section with one entry "\70" ;; anyfunc - "\02" ;; malformed table limits flag + "\08" ;; malformed table limits flag "\00" ;; dummy byte ) - "integer too large" + "malformed limits flags" ) (assert_malformed (module binary @@ -624,7 +624,7 @@ "\81\00" ;; malformed table limits flag as LEB128 "\00\00" ;; dummy bytes ) - "integer too large" + "malformed limits flags" ) ;; Memory count can be zero @@ -648,18 +648,18 @@ (module binary "\00asm" "\01\00\00\00" "\05\02\01" ;; memory section with one entry - "\02" ;; malformed memory limits flag + "\08" ;; malformed memory limits flag ) - "integer too large" + "malformed limits flags" ) (assert_malformed (module binary "\00asm" "\01\00\00\00" "\05\03\01" ;; memory section with one entry - "\02" ;; malformed memory limits flag + "\08" ;; malformed memory limits flag "\00" ;; dummy byte ) - "integer too large" + "malformed limits flags" ) (assert_malformed (module binary @@ -668,7 +668,7 @@ "\81\00" ;; malformed memory limits flag as LEB128 "\00\00" ;; dummy bytes ) - "integer representation too long" + "malformed limits flags" ) (assert_malformed (module binary @@ -677,7 +677,7 @@ "\81\01" ;; malformed memory limits flag as LEB128 "\00\00" ;; dummy bytes ) - "integer representation too long" + "malformed limits flags" ) ;; Global count can be zero diff --git a/test/core/bulk64.wast b/test/core/bulk64._wast similarity index 100% rename from test/core/bulk64.wast rename to test/core/bulk64._wast diff --git a/test/core/memory.wast b/test/core/memory.wast index 497b69fc9..1dd5b845b 100644 --- a/test/core/memory.wast +++ b/test/core/memory.wast @@ -76,17 +76,17 @@ "memory size must be at most 65536 pages (4GiB)" ) -(assert_malformed +(assert_invalid (module quote "(memory 0x1_0000_0000)") - "i32 constant out of range" + "memory size must be at most 65536 pages (4GiB)" ) -(assert_malformed +(assert_invalid (module quote "(memory 0x1_0000_0000 0x1_0000_0000)") - "i32 constant out of range" + "memory size must be at most 65536 pages (4GiB)" ) -(assert_malformed +(assert_invalid (module quote "(memory 0 0x1_0000_0000)") - "i32 constant out of range" + "memory size must be at most 65536 pages (4GiB)" ) (module From 521927c282203459fb7cff9211e2c4b6cda54991 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Fri, 19 Feb 2021 10:17:22 -0800 Subject: [PATCH 011/230] Documented Memory64 bound checking in Overview.md (#16) This to reflect consensus reached in https://github.com/WebAssembly/memory64/issues/3 See in particular https://github.com/WebAssembly/memory64/issues/3#issuecomment-700841972 --- proposals/memory64/Overview.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index fda344970..4ab00c5f3 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -195,6 +195,14 @@ have to support 32-bit memory addresses in their ABI. ⊦ mem it_1 limits_1 <= mem it_2 limits_2 ``` +* Bounds checking is required to be the same as for 32-bit memories, that is, + the index + offset (a `u65`) of a load or store operation is required to be + checked against the current memory size and trap if out of range. + + It is expected that the cost of this check remains low, if an implementation + can implement the index check with a branch, and the offset separately using a + guard page for all smaller offsets. Repeated accesses over the same index and + different offsets allow simple elimination of subsequent checks. ### Binary format From 48ed81adf4dbcb28d3cd1a058aea85d9aa4107bf Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 16 Mar 2021 13:52:17 -0700 Subject: [PATCH 012/230] initial setup and overview --- README.md | 14 ++++++++++++-- document/core/index.rst | 2 +- document/core/util/macros.def | 8 ++++---- proposals/relaxed-simd/Overview.md | 29 +++++++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 proposals/relaxed-simd/Overview.md diff --git a/README.md b/README.md index 83cdc4da6..d719087d3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,16 @@ -[![Build Status](https://travis-ci.org/WebAssembly/spec.svg?branch=master)](https://travis-ci.org/WebAssembly/spec) +[![Build Status](https://travis-ci.org/WebAssembly/relaxed-simd.svg?branch=master)](https://travis-ci.org/WebAssembly/relaxed-simd) -# spec +# Relaxed SIMD proposal for WebAssembly + +This repository is a clone of [github.com/WebAssembly/spec/](https://github.com/WebAssembly/spec/). +It is meant for discussion, prototype specification and implementation of a proposal to +add support for SIMD instructions with relaxed determinism requirements to WebAssembly. + +* See the [overview](proposals/relaxed-simd/Overview.md) for a summary of the proposal. + +* See the [modified spec](https://webassembly.github.io/relaxed-simd/) for details. + +Original `README` from upstream repository follows… This repository holds the sources for the WebAssembly draft specification (to seed a future diff --git a/document/core/index.rst b/document/core/index.rst index 1d8d6a4aa..b69fa6f51 100644 --- a/document/core/index.rst +++ b/document/core/index.rst @@ -3,7 +3,7 @@ WebAssembly Specification .. only:: html - | Release |release| (Draft, |today|) + | Release |release| + relaxed-simd (Draft, |today|) | Editor: Andreas Rossberg diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 82928c6f8..cfed4ebf3 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -3,11 +3,11 @@ .. External Standards .. ------------------ -.. |WasmDraft| replace:: https://webassembly.github.io/spec/core/ -.. _WasmDraft: https://webassembly.github.io/spec/core/ +.. |WasmDraft| replace:: https://webassembly.github.io/relaxed-simd/core/ +.. _WasmDraft: https://webassembly.github.io/relaxed-simd/core/ -.. |WasmIssues| replace:: https://github.com/webassembly/spec/issues/ -.. _WasmIssues: https://github.com/webassembly/spec/issues/ +.. |WasmIssues| replace:: https://github.com/webassembly/relaxed-simd/issues/ +.. _WasmIssues: https://github.com/webassembly/relaxed-simd/issues/ .. |IEEE754| replace:: IEEE 754-2019 .. _IEEE754: https://ieeexplore.ieee.org/document/8766229 diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md new file mode 100644 index 000000000..a23c08b01 --- /dev/null +++ b/proposals/relaxed-simd/Overview.md @@ -0,0 +1,29 @@ +# Relaxed SIMD proposal + +## Summary + +This proposal adds a set of useful SIMD instructions that introduce local +non-determinism (where the results of the instructions may vary based on +hardware support). + +## Motivation + +Applications running on Wasm SIMD cannot take full advantage of hardware +capabilities. There are 3 reasons: + +1. Instruction depends on hardware support +2. Approximate instructions that are underspecified in hardware +3. Some SIMD instructions penalize particular architecture + +See [these +slides](https://docs.google.com/presentation/d/1Qnx0nbNTRYhMONLuKyygEduCXNOv3xtWODfXfYokx1Y/edit?usp=sharing) +for more details. + +## Overview + +Some instructions we would like to add: + +- Fused Multiply Add (single rounding if hardware supports it, double rounding if not) +- Approximate reciprocal/reciprocal sqrt +- Relaxed Swizzle (implementation defined out of bounds behavior) +- Relaxed Rounding Q-format Multiplication (optional saturation) From dd63aa28228b13d1ec5b886c1a86f5c28e7df600 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 17 Mar 2021 16:06:00 -0700 Subject: [PATCH 013/230] Add a references section with useful links --- proposals/relaxed-simd/Overview.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index a23c08b01..45901ec82 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -27,3 +27,11 @@ Some instructions we would like to add: - Approximate reciprocal/reciprocal sqrt - Relaxed Swizzle (implementation defined out of bounds behavior) - Relaxed Rounding Q-format Multiplication (optional saturation) + +## References + +- Poll for phase 1 + [presentation](https://docs.google.com/presentation/d/1Qnx0nbNTRYhMONLuKyygEduCXNOv3xtWODfXfYokx1Y/edit?usp=sharing) + and [meeting + notes](https://github.com/WebAssembly/meetings/blob/master/main/2021/CG-03-16.md) +- [SIMD proposal](https://github.com/WebAssembly/simd) From bf6a1bd069ac378ebe742375eef1956e1c3bae77 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 23 Mar 2021 13:32:04 -0700 Subject: [PATCH 014/230] Add description of categories of instructions (#8) --- proposals/relaxed-simd/Overview.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 45901ec82..6a7c6a840 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -21,7 +21,16 @@ for more details. ## Overview -Some instructions we would like to add: +Broadly, there are three categories of instructions that fit into the Relaxed SIMD proposal: + +1. Integer instructions where the inputs are interpreted differently (e.g. + swizzle, 4-D dot-product) +2. Floating-point instructions whose behavior for out-of-range and NaNs differ + (e.g. float-to-int conversions, float min/max) +3. Floating-point instructions where the precision or order of operations + differ (e.g. FMA, reciprocal instructions, sum reduction) + +Example of some instructions we would like to add: - Fused Multiply Add (single rounding if hardware supports it, double rounding if not) - Approximate reciprocal/reciprocal sqrt From 224627e6128a0aaa6a8f6f4611bdd77c60377a97 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 24 Mar 2021 09:09:48 -0700 Subject: [PATCH 015/230] Update issue templates (#14) Add template for suggesting new instructions. --- .../add-new-instructions--name-.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/add-new-instructions--name-.md diff --git a/.github/ISSUE_TEMPLATE/add-new-instructions--name-.md b/.github/ISSUE_TEMPLATE/add-new-instructions--name-.md new file mode 100644 index 000000000..1bec883e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/add-new-instructions--name-.md @@ -0,0 +1,20 @@ +--- +name: Add new instructions {name} +about: Suggest new instructions for Relaxed SIMD +title: '' +labels: instruction-proposal +assignees: '' + +--- + +1. What are the instructions being proposed? + +2. What are the semantics of these instructions? + +3. How will these instructions be implemented? Give examples for at least + x86-64 and ARM64. Also provide reference implementation in terms of 128-bit + Wasm SIMD. + +4. How does behavior differ across processors? What new fingerprinting surfaces will be exposed? + +5. What use cases are there? From 77e5f06df5cf6751f33868f4cc8e73f18c12c935 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 25 Mar 2021 09:36:41 -0700 Subject: [PATCH 016/230] Add paragraph describing consistency using fpenv (#15) * Add paragraph on fpenv * Attribute must be 0 for now, call it a module element * Name fpu to make examples clearer * Reword paragraph on fpenv instantiation * Reword last paragraph describing what fpenv is * Add attribute 0 to import example --- proposals/relaxed-simd/Overview.md | 71 ++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 6a7c6a840..b72df934e 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -37,6 +37,77 @@ Example of some instructions we would like to add: - Relaxed Swizzle (implementation defined out of bounds behavior) - Relaxed Rounding Q-format Multiplication (optional saturation) +### Consistency + +This proposal introduces non-deterministic instructions - given the same +inputs, two calls to the same instruction can return different results. For +example: + +```wast +(module + (func (param v128 v128 v128) + (f32x4.qfma (local.get 0) (local.get 1) (local.get 2)) ;; (1) + ;; some other computation + (f32x4.qfma (local.get 0) (local.get 1) (local.get 2)))) ;; (2) +``` + +The same instruction at `(1)` and `(2)`, when given the same inputs, can return +two different results. This is compliant as the instruction is +non-deterministic, though unlikely on certain embeddings like the Web (where +the same implementation for `f32x4.qfma` is likely to be used for all calls to +that instruction). One can imagine splitting an application's module and +running them on multiple runtimes, where the runtimes produce +different results - this can be surprising to the application. + +Applications can specify their consistency needs using a new module-level +entity `fpenv` (name subject to change). A `fpenv` is defined in the `fpenv` +section of a module. All Relaxed SIMD instructions will take an additional +`varuint32` immediate, which is an index into the `fpenv` index space: + +```wast +(module + (func (param v128 v128 v128) + (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)) ;; (1) + ;; ... + (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)) ;; (2) + ) + (fpenv $fpu 0)) +``` + +In the example above, both `f32x4.qfma` instructions refer to the same `fpenv`, +and will get the same results when given the same input. + +A `fpenv` has a single `varuint32` attribute which is reserved for future +extensibility and must be `0` for now. The value of an `fpenv` is +non-deterministically computed when the module which declares it is +instantiated. This value determines the semantics of the instructions that +uses it as an immediate. + +As such, all the non-determinism of Relaxed SIMD is encapsulated in `fpenv`, +which makes Relaxed SIMD instructions themselves deterministic. + +Modules can import/export an `fpenv` to specify consistency requirements: + +```wast +;; module a +(module + (fpenv $fpu (export "foo") 0) + (func (param v128 v128 v128) + (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)))) ;; (1) +``` + +```wast +;; module b +(module + (import "a" "foo" (fpenv $fpu 0)) + (func (param v128 v128 v128) + (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)))) ;; (2) +``` + +In the above example, the same `fpenv` is exported by module `a`, and imported +by module `b`, so instructions `(1)` and `(2)` will consistently return the +same results when given the same inputs. + ## References - Poll for phase 1 From d87f9b2a593a0107318bfd01f092b219752bc6e9 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 29 Mar 2021 10:56:23 -0700 Subject: [PATCH 017/230] Add placeholder sections for instructions and binary format (#16) --- proposals/relaxed-simd/Overview.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index b72df934e..b563d0985 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -108,6 +108,14 @@ In the above example, the same `fpenv` is exported by module `a`, and imported by module `b`, so instructions `(1)` and `(2)` will consistently return the same results when given the same inputs. +## Instructions + +> This is a placeholder for instructions that this proposal adds. + +## Binary format + +> This is a placeholder for binary format of instructions and new constructs. + ## References - Poll for phase 1 From 3679be2c9e124b16b04d35c6617d81fe17166ae1 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Mon, 29 Mar 2021 11:17:19 -0700 Subject: [PATCH 018/230] Fixed data section init expr not i64 (#18) --- interpreter/exec/eval.ml | 8 ++++++-- interpreter/text/parser.mly | 5 ++++- interpreter/valid/valid.ml | 4 ++-- test/core/address64.wast | 8 ++++---- test/core/bulk64._wast | 4 ++-- test/core/memory64.wast | 8 ++++---- test/core/memory_trap64.wast | 4 ++-- 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 0d8fb1750..871297d06 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -369,6 +369,11 @@ let i32 (v : value) at = | I32 i -> i | _ -> Crash.error at "type error: i32 value expected" +let i32_64 (v : value) at = + match v with + | I32 i -> I64_convert.extend_i32_u i + | I64 i -> i + | _ -> Crash.error at "type error: i32 or i64 value expected" (* Modules *) @@ -418,8 +423,7 @@ let init_table (inst : module_inst) (seg : table_segment) = let init_memory (inst : module_inst) (seg : memory_segment) = let {index; offset = const; init} = seg.it in let mem = memory inst index in - let offset' = i32 (eval_const inst const) const.at in - let offset = I64_convert.extend_i32_u offset' in + let offset = i32_64 (eval_const inst const) const.at in let end_ = Int64.(add offset (of_int (String.length init))) in let bound = Memory.bound mem in if I64.lt_u bound end_ || I64.lt_u end_ offset then diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index 337ee8413..74db46576 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -172,9 +172,12 @@ let index_type t at = let memory_data init it c x at = let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in + let instr = match it with + | I32IndexType -> i32_const (0l @@ at) + | I64IndexType -> i64_const (0L @@ at) in [{mtype = MemoryType ({min = size; max = Some size}, it)} @@ at], [{index = x; - offset = [i32_const (0l @@ at) @@ at] @@ at; init} @@ at], + offset = [instr @@ at] @@ at; init} @@ at], [], [] %} diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 0c1240af0..28bbbbcac 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -418,8 +418,8 @@ let check_elem (c : context) (seg : table_segment) = let check_data (c : context) (seg : memory_segment) = let {index; offset; init} = seg.it in - check_const c offset I32Type; - ignore (memory c index) + let MemoryType (_, it) = memory c index in + check_const c offset (value_type_of_index_type it) let check_global (c : context) (glob : global) = let {gtype; value} = glob.it in diff --git a/test/core/address64.wast b/test/core/address64.wast index faa5ccbd5..29771ae77 100644 --- a/test/core/address64.wast +++ b/test/core/address64.wast @@ -2,7 +2,7 @@ (module (memory i64 1) - (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz") (func (export "8u_good1") (param $i i64) (result i32) (i32.load8_u offset=0 (local.get $i)) ;; 97 'a' @@ -208,7 +208,7 @@ (module (memory i64 1) - (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz") + (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz") (func (export "8u_good1") (param $i i64) (result i64) (i64.load8_u offset=0 (local.get $i)) ;; 97 'a' @@ -491,7 +491,7 @@ (module (memory i64 1) - (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f") + (data (i64.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f") (func (export "32_good1") (param $i i64) (result f32) (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00' @@ -538,7 +538,7 @@ (module (memory i64 1) - (data (i32.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4\7f\01\00\00\00\00\00\fc\7f") + (data (i64.const 0) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\f4\7f\01\00\00\00\00\00\fc\7f") (func (export "64_good1") (param $i i64) (result f64) (f64.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00' diff --git a/test/core/bulk64._wast b/test/core/bulk64._wast index e407301f6..9f82f1667 100644 --- a/test/core/bulk64._wast +++ b/test/core/bulk64._wast @@ -44,7 +44,7 @@ ;; memory.copy (module (memory i64 1 1) - (data (i32.const 0) "\aa\bb\cc\dd") + (data (i64.const 0) "\aa\bb\cc\dd") (func (export "copy") (param i64 i64 i64) (memory.copy @@ -161,7 +161,7 @@ (module (memory i64 1) (data "") - (data (i32.const 0) "") + (data (i64.const 0) "") (func (export "drop_passive") (data.drop 0)) (func (export "init_passive") diff --git a/test/core/memory64.wast b/test/core/memory64.wast index 8424e0c0e..f991cc5d9 100644 --- a/test/core/memory64.wast +++ b/test/core/memory64.wast @@ -15,9 +15,9 @@ (module (memory i64 (data "x")) (func (export "memsize") (result i64) (memory.size))) (assert_return (invoke "memsize") (i64.const 1)) -(assert_invalid (module (data (i32.const 0))) "unknown memory") -(assert_invalid (module (data (i32.const 0) "")) "unknown memory") -(assert_invalid (module (data (i32.const 0) "x")) "unknown memory") +(assert_invalid (module (data (i64.const 0))) "unknown memory") +(assert_invalid (module (data (i64.const 0) "")) "unknown memory") +(assert_invalid (module (data (i64.const 0) "x")) "unknown memory") (assert_invalid (module (func (drop (f32.load (i64.const 0))))) @@ -52,7 +52,7 @@ (module (memory i64 1) - (data (i32.const 0) "ABC\a7D") (data (i32.const 20) "WASM") + (data (i64.const 0) "ABC\a7D") (data (i64.const 20) "WASM") ;; Data section (func (export "data") (result i32) diff --git a/test/core/memory_trap64.wast b/test/core/memory_trap64.wast index 77e802ae3..78d39d87b 100644 --- a/test/core/memory_trap64.wast +++ b/test/core/memory_trap64.wast @@ -33,8 +33,8 @@ (module (memory i64 1) - (data (i32.const 0) "abcdefgh") - (data (i32.const 0xfff8) "abcdefgh") + (data (i64.const 0) "abcdefgh") + (data (i64.const 0xfff8) "abcdefgh") (func (export "i32.load") (param $a i64) (result i32) (i32.load (local.get $a)) From 023ce403b6afc5562657a9b0f5a29e4ee88b958e Mon Sep 17 00:00:00 2001 From: Deepti Gandluri Date: Wed, 14 Apr 2021 21:17:37 -0700 Subject: [PATCH 019/230] Add SIMD subgroup charter (#18) As this is the first time we have separate proposals under the same subgroup - I'm duplicating the charter here as well as in the flexible vectors proposal for discoverability, and for easy modification in case we decide to split the subgroup based on proposals in the future. --- proposals/relaxed-simd/Charter.md | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 proposals/relaxed-simd/Charter.md diff --git a/proposals/relaxed-simd/Charter.md b/proposals/relaxed-simd/Charter.md new file mode 100644 index 000000000..975a3f9aa --- /dev/null +++ b/proposals/relaxed-simd/Charter.md @@ -0,0 +1,57 @@ +# WebAssembly SIMD Subgroup Charter + +The SIMD Subgroup is a sub-organization of the +[WebAssembly Community Group](https://www.w3.org/community/webassembly/) +of the W3C. +As such, it is intended that its charter align with that of the CG. In particular, +the sections of the [CG charter](https://webassembly.github.io/cg-charter/) relating to +[Community and Business Group Process](https://webassembly.github.io/cg-charter/#process), +[Contribution Mechanics](https://webassembly.github.io/cg-charter/#contrib), +[Transparency](https://webassembly.github.io/cg-charter/#transparency), +and +[Decision Process](https://webassembly.github.io/cg-charter/#decision) +also apply to the Subgroup. + +## Goals + +The mission of this subgroup is to provide a forum for collaboration on the standardisation of SIMD support for WebAssembly. This is inclusive of the fixed-width SIMD, relaxed-SIMD, and flexible vectors proposals. + +## Scope + +The Subgroup will consider topics related to SIMD for Wasm, including: + +- instruction sets for defining and manipulating vector types, +- code generation for compilers targeting Wasm with SIMD extensions, +- performance data for justifying the inclusion of instructions, +- hardware support for SIMD, as well as ease of use for applications + +## Deliverables + +### Specifications + +The Subgroup may produce several kinds of specification-related work output: + +- new specifications in standards bodies or working groups + (e.g. W3C WebAssembly WG or Ecma TC39), +- new specifications outside of standards bodies + (e.g. similar to the LLVM object file format documentation in Wasm tool conventions). + +### Non-normative reports + +The Subgroup may produce non-normative material such as requirements +documents, optimization guides, recommendations, and case studies. + +### Software + +The Subgroup may produce software related to SIMD in Wasm +(either as standalone libraries, tooling, or integration of interface-related functionality in existing CG software). +These may include: + +- extensions to the Wasm reference interpreter, +- extensions to the Wasm test suite, +- compilers and tools for producing code that uses Wasm SIMD, +- tools for debugging programs using Wasm SIMD. + +## Amendments to this Charter and Chair Selection + +This charter may be amended, and Subgroup Chairs may be selected by vote of the full WebAssembly Community Group. From e71547e1e37af81a7874b34ead4f710991684fba Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 10 Jun 2021 09:35:33 -0700 Subject: [PATCH 020/230] Add relaxed swizzle to overview (#24) #22 --- proposals/relaxed-simd/Overview.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index b563d0985..3cebd0604 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -110,7 +110,22 @@ same results when given the same inputs. ## Instructions -> This is a placeholder for instructions that this proposal adds. +### Relaxed swizzle + +- `relaxed i8x16.swizzle(a : v128, s : v128) -> v128` + +`relaxed i8x16.swizzle(a, s)` selects lanes from `a` using indices in `s`, indices in the range `[0,15]` will select the `i`-th element of `a`, the result for any out of range indices is implementation-defined (i.e. if the index is `[16-255]`. + +```python +def relaxed_i8x16_swizzle(a, s): + result = [] + for i in range(16): + if s[i] < 16: + result[i] = a[s[i]] + else: + result[i] = UNDEFINED + return result +``` ## Binary format From 4fced219f0fbb88d73a5ce05ea06f56289bfb906 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 24 Jun 2021 09:37:11 -0700 Subject: [PATCH 021/230] Add relaxed float to int conversions (#25) For #21. --- proposals/relaxed-simd/Overview.md | 36 ++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 3cebd0604..2c01a0035 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -127,6 +127,42 @@ def relaxed_i8x16_swizzle(a, s): return result ``` +### Float/Double to int conversions + +- `relaxed i32x4.trunc_f32x4_s` (relaxed version of `i32x4.trunc_sat_f32x4_s`) +- `relaxed i32x4.trunc_f32x4_u` (relaxed version of `i32x4.trunc_sat_f32x4_u`) +- `relaxed i32x4.trunc_f64x2_s_zero` (relaxed version of `i32x4.trunc_sat_f64x2_s_zero`) +- `relaxed i32x4.trunc_f64x2_u_zero` (relaxed version of `i32x4.trunc_sat_f64x2_u_zero`) + +These instructions have the same behavior as the non-relaxed instructions for +lanes that are in the range of an `i32` (signed or unsigned depending on the +instruction). For lanes that contain values which are out of bounds or NaN, the +result is implementation-defined. + +```python +def relaxed_i32x4_trunc_f32x4(a : f32x4, signed : bool) -> i32x4: + result = [] + min = signed ? INT32_MIN : UINT32_MIN + max = signed ? INT32_MAX : UINT32_MAX + for i in range(4): + r = truncate(a[i]) + if min <= r <= max: + result[i] = r + else: + result[i] = UNDEFINED + +def relaxed_i32x4_trunc_f64x2_zero(a : f64x2, signed : bool) -> i32x4: + result = [0, 0, 0, 0] + min = signed ? INT32_MIN : UINT32_MIN + max = signed ? INT32_MAX : UINT32_MAX + for i in range(2): + r = truncate(a[i]) + if min <= r <= max: + result[i] = r + else: + result[i] = UNDEFINED +``` + ## Binary format > This is a placeholder for binary format of instructions and new constructs. From 969876920538de69d9ee4bba31a31e6f2da816a4 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 2 Jul 2021 12:15:28 -0700 Subject: [PATCH 022/230] Add fma and fms (#28) See #27. --- proposals/relaxed-simd/Overview.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 2c01a0035..63aa6a4dd 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -163,6 +163,25 @@ def relaxed_i32x4_trunc_f64x2_zero(a : f64x2, signed : bool) -> i32x4: result[i] = UNDEFINED ``` +### Relaxed fused multiply-add and fused multiply-subtract + +- `relaxed f32x4.fma` +- `relaxed f32x4.fms` +- `relaxed f64x2.fma` +- `relaxed f64x2.fms` + +All the instructions take 3 operands, `a`, `b`, `c`, perform `a + (b * c)` or `a - (b * c)`: + +- `relaxed f32x4.fma(a, b, c) = a + (b * c)` +- `relaxed f32x4.fms(a, b, c) = a - (b * c)` +- `relaxed f64x2.fma(a, b, c) = a + (b * c)` +- `relaxed f64x2.fms(a, b, c) = a - (b * c)` + +where: + +- the intermediate `b * c` is be rounded first, and the final result rounded again (for a total of 2 roundings), or +- the the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). + ## Binary format > This is a placeholder for binary format of instructions and new constructs. From 229516819d2444f69e5093db30447fb6d0f72182 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 21 Jul 2021 14:06:11 -0700 Subject: [PATCH 023/230] Add relaxed blend to overview (#29) --- proposals/relaxed-simd/Overview.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 63aa6a4dd..ed8e7dbf1 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -182,6 +182,29 @@ where: - the intermediate `b * c` is be rounded first, and the final result rounded again (for a total of 2 roundings), or - the the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). +### Relaxed bitselect (blend/laneselect) + +- `i8x16.blend(a: v128, b: v128, m: v128) -> v128` +- `i16x8.blend(a: v128, b: v128, m: v128) -> v128` +- `i32x4.blend(a: v128, b: v128, m: v128) -> v128` +- `i64x2.blend(a: v128, b: v128, m: v128) -> v128` + +Select lanes from `a` or `b` based on masks in `m`. If each lane-sized mask in `m` has all bits set or all bits unset, these instructions behave the same as `v128.bitselect`. Otherwise, the result is implementation defined. + +```python +def blend(a : v128, b : v128, m: v128, lanes : int): + result = [] + for i in range(lanes): + mask = m[i] + if mask == ~0: + result[i] = a[i] + elif mask == 0: + result[i] = b[i] + else: + result[i] = UNDEFINED + return result +``` + ## Binary format > This is a placeholder for binary format of instructions and new constructs. From d7489cda801099945f372c6bab08f7ca2fc996d9 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 5 Aug 2021 09:08:29 -0700 Subject: [PATCH 024/230] Add binary opcodes for instructions in overview (#32) --- proposals/relaxed-simd/Overview.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index ed8e7dbf1..1cd3a58fb 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -207,7 +207,25 @@ def blend(a : v128, b : v128, m: v128, lanes : int): ## Binary format -> This is a placeholder for binary format of instructions and new constructs. +All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. + +| instruction | opcode | +| ---------------------------------- | -------- | +| `relaxed i8x16.swizzle` | 0xa2 | +| `relaxed i32x4.trunc_f32x4_s` | 0xa5 | +| `relaxed i32x4.trunc_f32x4_u` | 0xa6 | +| `relaxed i32x4.trunc_f64x2_s_zero` | 0xc5 | +| `relaxed i32x4.trunc_f64x2_u_zero` | 0xc6 | +| `f32x4.fma` | 0xaf | +| `f32x4.fms` | 0xb0 | +| `f64x2.fma` | 0xcf | +| `f64x2.fms` | 0xd0 | +| `i8x16.blend` | 0xb2 | +| `i16x8.blend` | 0xb3 | +| `i32x4.blend` | 0xd2 | +| `i64x2.blend` | 0xd3 | + +Note: the opcodes are chosen to fit into the existing opcode space of the SIMD proposal, see [Binary encoding of SIMD](https://github.com/WebAssembly/simd/blob/main/proposals/simd/BinarySIMD.md), or a [table view of the same opcodes](https://github.com/WebAssembly/simd/blob/main/proposals/simd/NewOpcodes.md) for a list of existing opcodes. ## References From 18c1b1d172db53eae343c096861dc4682dcde3a6 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 9 Aug 2021 14:52:28 -0700 Subject: [PATCH 025/230] Update issue templates --- .github/ISSUE_TEMPLATE/simd-meeting.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/simd-meeting.md diff --git a/.github/ISSUE_TEMPLATE/simd-meeting.md b/.github/ISSUE_TEMPLATE/simd-meeting.md new file mode 100644 index 000000000..a256d2436 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/simd-meeting.md @@ -0,0 +1,14 @@ +--- +name: simd-meeting +about: SIMD subgroup meeting +title: SIMD subgroup meeting on YYYY-MM-DD +labels: '' +assignees: '' + +--- + +This is a joint meeting with flexible-vectors and any SIMD related presentations are also welcome, e.g. new architectures or toolchains, longer term discussion that don't fit into flexible-vectors or relaxed-simd. + +The meeting will be on Friday, {Month} {Day} at 9:00AM - 10:00AM PDT/ 5:00PM - 6:00PM CET. + +If this meeting doesn't already appear on your calendar, or you are a new attendee, please fill out this [form](https://forms.gle/9eB2ZYaziPEcTJabA) to attend. From ae132b37247bd529c706d97e5bd8635fddfe2807 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 7 Sep 2021 10:53:46 -0700 Subject: [PATCH 026/230] Add relaxed min and max (#36) For #33. --- proposals/relaxed-simd/Overview.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 1cd3a58fb..617c9d29c 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -205,6 +205,29 @@ def blend(a : v128, b : v128, m: v128, lanes : int): return result ``` +### Relaxed min and max + +- `f32x4.min(a: v128, b: v128) -> v128` +- `f32x4.max(a: v128, b: v128) -> v128` +- `f64x2.min(a: v128, b: v128) -> v128` +- `f64x2.max(a: v128, b: v128) -> v128` + +Return the lane-wise minimum or maximum of two values. If either values is NaN, or the values are -0.0 and +0.0, the return value is implementation-defined. + +```python +def min_or_max(a : v128, b : v128, lanes : int, is_min : bool): + result = [] + for i in range(lanes): + if isNaN(a[i]) or isNaN(b[i]): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(a[i], b[i]) + elif (a[i] == -0.0 && b[i] == +0.0) or (a[i] == +0.0 && b[i] == -0.0): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(a[i], b[i]) + else: + result[i] = is_min ? min(a, b) : max(a, b) +``` + +Where `IMPLEMENTATION_DEFINED_ONE_OF(x, y)` returns either `x` or `y`, depending on the implementation. + ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. @@ -224,6 +247,10 @@ All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in | `i16x8.blend` | 0xb3 | | `i32x4.blend` | 0xd2 | | `i64x2.blend` | 0xd3 | +| `f32x4.min` | 0xb4 | +| `f32x4.max` | 0xe2 | +| `f64x2.min` | 0xd4 | +| `f64x2.max` | 0xee | Note: the opcodes are chosen to fit into the existing opcode space of the SIMD proposal, see [Binary encoding of SIMD](https://github.com/WebAssembly/simd/blob/main/proposals/simd/BinarySIMD.md), or a [table view of the same opcodes](https://github.com/WebAssembly/simd/blob/main/proposals/simd/NewOpcodes.md) for a list of existing opcodes. From 5bfb70d9888b96a2f3d6412ed3599b91364da610 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Mon, 13 Sep 2021 10:13:27 -0700 Subject: [PATCH 027/230] Added SIMD/threads memory ops to Memory64 proposal (#25) Essentially this just allows 64-bit address operands, so kept it to just a minimal description of the instructions affected. --- proposals/memory64/Overview.md | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 4ab00c5f3..088b73ac0 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -141,6 +141,63 @@ have to support 32-bit memory addresses in their ABI. ``` - (and similar for memory instructions from other proposals) +* The [SIMD proposal][simd] extends `t.load memarg` and `t.store memarg` + above such that `t` may now also be `v128`, which accesses a 16-byte quantity + in memory that is also 16-byte aligned. + + In addition to this, it also has these SIMD specific memory operations (see + [SIMD proposal][simd] for full semantics): + - `v128.loadN_zero memarg` (where N = 32/64): + Load a single 32-bit or 64-bit element into the lowest bits of a `v128` + vector, and initialize all other bits of the `v128` vector to zero. + - `v128.loadN_splat memarg` (where N = 8/16/32/64): + Load a single element and splat to all lanes of a `v128` vector. The natural + alignment is the size of the element loaded. + - `v128.loadN_lane memarg v128 immlaneidx` (where N = 8/16/32/64): + Load a single element from `memarg` into the lane of the `v128` specified in + the immediate mode operand `immlaneidx`. The values of all other lanes of + the `v128` are bypassed as is. + - `v128.storeN_lane memarg v128 immlaneidx` (where N = 8/16/32/64): + Store into `memarg` the lane of `v128` specified in the immediate mode + operand `immlaneidx`. + - `v128.loadL_sx memarg` (where L is `8x8`/`16x4`/`32x2`, and sx is `s`/`u`): + Fetch consecutive integers up to 32-bit wide and produce a vector with lanes + up to 64 bits. The natural alignment is 8 bytes. + + All these operations now take 64-bit address operands when used with a + 64-bit memory. + +* The [Threads proposal][threads] has `atomic` versions of `t.load`, `t.store`, + (and `t.loadN_u` / `t.storeN_u`, no sign-extend) specified above, except with + `.` replaced by `.atomic.`, and the guarantee of ordering of accesses being + sequentially consistent. + + In addition to this, it has the following memory operations (see + [Threads proposal][threads] for full semantics): + - `t.atomic.rmwN.op_u memarg` (where t = 32/64, N = 8/16/32 when < t or empty + otherwise, op is `add`/`sub`/`and`/`or`/`xor`/`xchg`/`cmpxchg`, and `_u` + only present when N is not empty): + The first 6 operations atomically read a value from an address, modify the + value, and store the resulting value to the same address. They then return + the value read from memory before the modify operation was performed. + In the case of `cmpxchg`, the operands are an address, an expected value, + and a replacement value. If the loaded value is equal to the expected value, + the replacement value is stored to the same memory address. If the values + are not equal, no value is stored. In either case, the loaded value is + returned. + - `memory.atomic.waitN` (where N = 32/64): + The wait operator take three operands: an address operand, an expected + value, and a relative timeout in nanoseconds as an `i64`. The return value + is `0`, `1`, or `2`, returned as an `i32`. + - `memory.atomic.notify`: + The notify operator takes two operands: an address operand and a count as an + unsigned `i32`. The operation will notify as many waiters as are waiting on + the same effective address, up to the maximum as specified by count. The + operator returns the number of waiters that were woken as an unsigned `i32`. + + All these operations now take 64-bit address operands when used with a + 64-bit memory. + * The [Multi-memory proposal][multi memory] extends each of these instructions with one or two memory index immediates. The index type for that memory will be used. For example, @@ -273,3 +330,5 @@ have to support 32-bit memory addresses in their ABI. [text memtype]: https://webassembly.github.io/spec/core/text/types.html#text-memtype [text memabbrev]: https://webassembly.github.io/spec/core/text/modules.html#text-mem-abbrev [multi memory]: https://github.com/webassembly/multi-memory +[simd]: https://github.com/webassembly/simd +[threads]: https://github.com/webassembly/threads From e53d41f9131a6db1e50435063361607a12789157 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 5 Oct 2021 10:33:50 -0700 Subject: [PATCH 028/230] Rename to laneselect (#41) As suggested in https://github.com/WebAssembly/relaxed-simd/issues/17#issuecomment-931927209. --- proposals/relaxed-simd/Overview.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 617c9d29c..7f5378bd6 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -182,17 +182,17 @@ where: - the intermediate `b * c` is be rounded first, and the final result rounded again (for a total of 2 roundings), or - the the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). -### Relaxed bitselect (blend/laneselect) +### Relaxed laneselect -- `i8x16.blend(a: v128, b: v128, m: v128) -> v128` -- `i16x8.blend(a: v128, b: v128, m: v128) -> v128` -- `i32x4.blend(a: v128, b: v128, m: v128) -> v128` -- `i64x2.blend(a: v128, b: v128, m: v128) -> v128` +- `i8x16.laneselect(a: v128, b: v128, m: v128) -> v128` +- `i16x8.laneselect(a: v128, b: v128, m: v128) -> v128` +- `i32x4.laneselect(a: v128, b: v128, m: v128) -> v128` +- `i64x2.laneselect(a: v128, b: v128, m: v128) -> v128` Select lanes from `a` or `b` based on masks in `m`. If each lane-sized mask in `m` has all bits set or all bits unset, these instructions behave the same as `v128.bitselect`. Otherwise, the result is implementation defined. ```python -def blend(a : v128, b : v128, m: v128, lanes : int): +def laneselect(a : v128, b : v128, m: v128, lanes : int): result = [] for i in range(lanes): mask = m[i] @@ -243,10 +243,10 @@ All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in | `f32x4.fms` | 0xb0 | | `f64x2.fma` | 0xcf | | `f64x2.fms` | 0xd0 | -| `i8x16.blend` | 0xb2 | -| `i16x8.blend` | 0xb3 | -| `i32x4.blend` | 0xd2 | -| `i64x2.blend` | 0xd3 | +| `i8x16.laneselect` | 0xb2 | +| `i16x8.laneselect` | 0xb3 | +| `i32x4.laneselect` | 0xd2 | +| `i64x2.laneselect` | 0xd3 | | `f32x4.min` | 0xb4 | | `f32x4.max` | 0xe2 | | `f64x2.min` | 0xd4 | From 8f41b23273650d1ed0bf52c6af9d5d1d3b45cb8f Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 28 Oct 2021 14:22:23 -0700 Subject: [PATCH 029/230] Add implementation status document (#45) --- .../relaxed-simd/ImplementationStatus.md | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 proposals/relaxed-simd/ImplementationStatus.md diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md new file mode 100644 index 000000000..7d8b534c3 --- /dev/null +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -0,0 +1,47 @@ +## Implementation in LLVM and various engines + +| Instruction | LLVM [1] | V8 [2] | SpiderMonkey | +|------------------------------------|----------------|--------------------|--------------| +| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | | +| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | | +| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | | +| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | | +| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | | +| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | | +| `f32x4.fms` | -mrelaxed-simd | :heavy_check_mark: | | +| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | | +| `f64x2.fms` | -mrelaxed-simd | :heavy_check_mark: | | +| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | +| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | +| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | +| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | +| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | | +| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | | +| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | | +| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | | + +[1] Tip of tree LLVM as of 2021-10-28 + +[2] V8 9.7.75 (only implemented on x64) + +## Name of builtins in LLVM + +| Instruction | LLVM | +|------------------------------------|---------------------------------------------------| +| `relaxed i8x16.swizzle` | `__builtin_wasm_relaxed_swizzle_i8x16` | +| `relaxed i32x4.trunc_f32x4_s` | `__builtin_wasm_relaxed_trunc_s_i32x4_f32x4` | +| `relaxed i32x4.trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | +| `relaxed i32x4.trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | +| `relaxed i32x4.trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | +| `f32x4.fma` | `__builtin_wasm_fma_f32x4` | +| `f32x4.fms` | `__builtin_wasm_fms_f32x4` | +| `f64x2.fma` | `__builtin_wasm_fma_f64x2` | +| `f64x2.fms` | `__builtin_wasm_fms_f64x2` | +| `i8x16.laneselect` | `__builtin_wasm_laneselect_i8x16` | +| `i16x8.laneselect` | `__builtin_wasm_laneselect_i16x8` | +| `i32x4.laneselect` | `__builtin_wasm_laneselect_i32x4` | +| `i64x2.laneselect` | `__builtin_wasm_laneselect_i64x2` | +| `f32x4.min` | `__builtin_wasm_relaxed_min_f32x4` | +| `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | +| `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | +| `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | From 383be574e75fcd5f73d17ead100cfdd21ddf794a Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Mon, 1 Nov 2021 13:24:43 -0500 Subject: [PATCH 030/230] Report status of SpiderMonkey implemention --- .../relaxed-simd/ImplementationStatus.md | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index 7d8b534c3..d17c7e090 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -1,29 +1,31 @@ ## Implementation in LLVM and various engines -| Instruction | LLVM [1] | V8 [2] | SpiderMonkey | -|------------------------------------|----------------|--------------------|--------------| -| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | | -| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | | -| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | | -| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | | -| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | | -| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | | -| `f32x4.fms` | -mrelaxed-simd | :heavy_check_mark: | | -| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | | -| `f64x2.fms` | -mrelaxed-simd | :heavy_check_mark: | | -| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | -| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | -| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | -| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | | -| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | | -| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | | -| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | | -| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | | +| Instruction | LLVM [1] | V8 [2] | SpiderMonkey [3] | +|------------------------------------|----------------|--------------------|--------------------| +| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.fms` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.fms` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | [1] Tip of tree LLVM as of 2021-10-28 [2] V8 9.7.75 (only implemented on x64) +[3] SpiderMonkey as of 2021-10-18 implemented on x86, x64 and Aarch64 + ## Name of builtins in LLVM | Instruction | LLVM | From a7f00a6b2c1908829cb9689a6cc245c194cc8e07 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 1 Mar 2022 17:40:39 +0000 Subject: [PATCH 031/230] Remove fpenv from overview, add proposed spec text on Relaxed operations --- proposals/relaxed-simd/Overview.md | 56 +++++------------------------- 1 file changed, 8 insertions(+), 48 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 7f5378bd6..39dcd90aa 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -59,54 +59,14 @@ that instruction). One can imagine splitting an application's module and running them on multiple runtimes, where the runtimes produce different results - this can be surprising to the application. -Applications can specify their consistency needs using a new module-level -entity `fpenv` (name subject to change). A `fpenv` is defined in the `fpenv` -section of a module. All Relaxed SIMD instructions will take an additional -`varuint32` immediate, which is an index into the `fpenv` index space: - -```wast -(module - (func (param v128 v128 v128) - (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)) ;; (1) - ;; ... - (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)) ;; (2) - ) - (fpenv $fpu 0)) -``` - -In the example above, both `f32x4.qfma` instructions refer to the same `fpenv`, -and will get the same results when given the same input. - -A `fpenv` has a single `varuint32` attribute which is reserved for future -extensibility and must be `0` for now. The value of an `fpenv` is -non-deterministically computed when the module which declares it is -instantiated. This value determines the semantics of the instructions that -uses it as an immediate. - -As such, all the non-determinism of Relaxed SIMD is encapsulated in `fpenv`, -which makes Relaxed SIMD instructions themselves deterministic. - -Modules can import/export an `fpenv` to specify consistency requirements: - -```wast -;; module a -(module - (fpenv $fpu (export "foo") 0) - (func (param v128 v128 v128) - (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)))) ;; (1) -``` - -```wast -;; module b -(module - (import "a" "foo" (fpenv $fpu 0)) - (func (param v128 v128 v128) - (f32x4.qfma $fpu (local.get 0) (local.get 1) (local.get 2)))) ;; (2) -``` - -In the above example, the same `fpenv` is exported by module `a`, and imported -by module `b`, so instructions `(1)` and `(2)` will consistently return the -same results when given the same inputs. +The specification is updated with the idea of "Relaxed operations": + +> Some operators are host-dependent, because the set of possible results may +> depend on properties of the host environment (such as hardware). Technically, +> each such operator produces a fixed-size list of sets of allowed values. For +> each execution of the operator in the same environment, only values from the +> set at the same position in the list are returned, i.e., each environment +> globally chooses a fixed projection for each operator. ## Instructions From 7f65a2a5e4237d9a61be2fb2b684b3ec5b84dee4 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 1 Mar 2022 17:49:17 +0000 Subject: [PATCH 032/230] Add Relaxed Rounding Q-format Multiplication to overview --- proposals/relaxed-simd/Overview.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 39dcd90aa..e9edac63f 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -184,10 +184,30 @@ def min_or_max(a : v128, b : v128, lanes : int, is_min : bool): result[i] = IMPLEMENTATION_DEFINED_ONE_OF(a[i], b[i]) else: result[i] = is_min ? min(a, b) : max(a, b) + return result ``` Where `IMPLEMENTATION_DEFINED_ONE_OF(x, y)` returns either `x` or `y`, depending on the implementation. +### Relaxed Rounding Q-format Multiplication + +- `i16x8.q15mulr_s(a: v128, b: v128) -> v128` + +Returns the multiplication of 2 fixed-point numbers in Q15 format. If both +inputs are `INT16_MIN`, the result overflows, and the return value is +implementation defined (either wrap around, or saturate). + +```python +def q15mulr(a, b): + result = [] + for i in range(lanes): + result[i] = sat_or_wrap((a[i] * b[i] + 0x4000) >> 15) + return result +``` + +Where `sat_or_wrap` either saturates or wraps around the input, depending on the +implementation. + ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. @@ -211,6 +231,7 @@ All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in | `f32x4.max` | 0xe2 | | `f64x2.min` | 0xd4 | | `f64x2.max` | 0xee | +| `i16x8.q15mulr_s` | ???? | Note: the opcodes are chosen to fit into the existing opcode space of the SIMD proposal, see [Binary encoding of SIMD](https://github.com/WebAssembly/simd/blob/main/proposals/simd/BinarySIMD.md), or a [table view of the same opcodes](https://github.com/WebAssembly/simd/blob/main/proposals/simd/NewOpcodes.md) for a list of existing opcodes. From 8f47f243bca871166e2a251af3443f17d32e84d4 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 4 Mar 2022 00:35:01 +0000 Subject: [PATCH 033/230] Restrict set of possible output values for relaxed rounding --- proposals/relaxed-simd/Overview.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index e9edac63f..4dd08ab76 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -195,19 +195,19 @@ Where `IMPLEMENTATION_DEFINED_ONE_OF(x, y)` returns either `x` or `y`, depending Returns the multiplication of 2 fixed-point numbers in Q15 format. If both inputs are `INT16_MIN`, the result overflows, and the return value is -implementation defined (either wrap around, or saturate). +implementation defined (either `INT16_MIN` or `INT16_MAX`). ```python def q15mulr(a, b): result = [] for i in range(lanes): - result[i] = sat_or_wrap((a[i] * b[i] + 0x4000) >> 15) + if (a[i] == INT16_MIN && b[i] == INT16_MIN): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT16_MIN, INT16_MAX) + else: + result[i] = (a[i] * b[i] + 0x4000) >> 15 return result ``` -Where `sat_or_wrap` either saturates or wraps around the input, depending on the -implementation. - ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. From 8a1eb2fb67fb414fe3b13681963d8907acda79cd Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 1 Mar 2022 19:06:23 +0000 Subject: [PATCH 034/230] Update binary opcodes based on #51 --- proposals/relaxed-simd/Overview.md | 57 ++++++++++++++++++------------ 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 4dd08ab76..73f07191a 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -211,29 +211,36 @@ def q15mulr(a, b): ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. - -| instruction | opcode | -| ---------------------------------- | -------- | -| `relaxed i8x16.swizzle` | 0xa2 | -| `relaxed i32x4.trunc_f32x4_s` | 0xa5 | -| `relaxed i32x4.trunc_f32x4_u` | 0xa6 | -| `relaxed i32x4.trunc_f64x2_s_zero` | 0xc5 | -| `relaxed i32x4.trunc_f64x2_u_zero` | 0xc6 | -| `f32x4.fma` | 0xaf | -| `f32x4.fms` | 0xb0 | -| `f64x2.fma` | 0xcf | -| `f64x2.fms` | 0xd0 | -| `i8x16.laneselect` | 0xb2 | -| `i16x8.laneselect` | 0xb3 | -| `i32x4.laneselect` | 0xd2 | -| `i64x2.laneselect` | 0xd3 | -| `f32x4.min` | 0xb4 | -| `f32x4.max` | 0xe2 | -| `f64x2.min` | 0xd4 | -| `f64x2.max` | 0xee | -| `i16x8.q15mulr_s` | ???? | - -Note: the opcodes are chosen to fit into the existing opcode space of the SIMD proposal, see [Binary encoding of SIMD](https://github.com/WebAssembly/simd/blob/main/proposals/simd/BinarySIMD.md), or a [table view of the same opcodes](https://github.com/WebAssembly/simd/blob/main/proposals/simd/NewOpcodes.md) for a list of existing opcodes. +Opcodes `0x100` to `0x12F` (32 opcodes) are reserved for this proposal. + +Note: "prototype opcode" refers to the opcodes that were used in prototyping, which +where chosen to fit into the holes in the opcode space of SIMD proposal. Going +forward, the opcodes for relaxed-simd specification will be the ones in the +"opcode" column, and it will take some time for tools and engines to update. + +| instruction | opcode | prototype opcode | +| ----------------------------------| -------------- | ---------------- | +| `relaxed i8x16.swizzle` | 0x100 | 0xa2 | +| `relaxed i32x4.trunc_f32x4_s` | 0x101 | 0xa5 | +| `relaxed i32x4.trunc_f32x4_u` | 0x102 | 0xa6 | +| `relaxed i32x4.trunc_f64x2_s_zero`| 0x103 | 0xc5 | +| `relaxed i32x4.trunc_f64x2_u_zero`| 0x104 | 0xc6 | +| `f32x4.fma` | 0x105 | 0xaf | +| `f32x4.fms` | 0x106 | 0xb0 | +| `f64x2.fma` | 0x107 | 0xcf | +| `f64x2.fms` | 0x108 | 0xd0 | +| `i8x16.laneselect` | 0x109 | 0xb2 | +| `i16x8.laneselect` | 0x10a | 0xb3 | +| `i32x4.laneselect` | 0x10b | 0xd2 | +| `i64x2.laneselect` | 0x10c | 0xd3 | +| `f32x4.min` | 0x10d | 0xb4 | +| `f32x4.max` | 0x10e | 0xe2 | +| `f64x2.min` | 0x10f | 0xd4 | +| `f64x2.max` | 0x110 | 0xee | +| `i16x8.q15mulr_s` | 0x111 | unimplemented | +| Reserved for dot product | 0x112 | unimplemented | +| Reserved for dot product | 0x113 | unimplemented | +| Reserved | 0x114 - 0x12F | | ## References @@ -241,4 +248,8 @@ Note: the opcodes are chosen to fit into the existing opcode space of the SIMD p [presentation](https://docs.google.com/presentation/d/1Qnx0nbNTRYhMONLuKyygEduCXNOv3xtWODfXfYokx1Y/edit?usp=sharing) and [meeting notes](https://github.com/WebAssembly/meetings/blob/master/main/2021/CG-03-16.md) +- Poll for phase 2 + [slides](https://docs.google.com/presentation/d/1zyRqfgGU7HdoVw9QiKaVYifozbytPhNLHUW9jQjPzLk/edit?usp=sharing) + and [meeting + notes](https://github.com/WebAssembly/meetings/blob/main/main/2021/CG-11-09.md#update-on-relaxed-simd-fpenv-discussions-and-poll-for-phase-2-zhi-an-ng-15-min) - [SIMD proposal](https://github.com/WebAssembly/simd) From 5c175d8be92fdfb066f295f97b46d19bbebca3cb Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 4 Mar 2022 19:16:22 +0000 Subject: [PATCH 035/230] Fix reserved dot products instructions and add bfloat16 --- proposals/relaxed-simd/Overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 73f07191a..4e0b475a3 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -238,9 +238,9 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `f64x2.min` | 0x10f | 0xd4 | | `f64x2.max` | 0x110 | 0xee | | `i16x8.q15mulr_s` | 0x111 | unimplemented | -| Reserved for dot product | 0x112 | unimplemented | -| Reserved for dot product | 0x113 | unimplemented | -| Reserved | 0x114 - 0x12F | | +| Reserved for dot product | 0x112 - 0x115 | unimplemented | +| Reserved for bfloat16 dot product | 0x116 | unimplemented | +| Reserved | 0x117 - 0x12F | | ## References From fe473a7626219ed85f000062c75f2ccb33cb60d3 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 1 Mar 2022 01:06:22 +0000 Subject: [PATCH 036/230] Copy "either" result pattern from threads proposal "either" allows us to assert that the a value is in a set of expected values. This is copied from threads proposal and updated accordingly to compile. --- interpreter/script/js.ml | 17 +++++++++++-- interpreter/script/run.ml | 48 ++++++++++++++++++++++-------------- interpreter/script/script.ml | 1 + interpreter/text/arrange.ml | 3 ++- interpreter/text/lexer.mll | 1 + interpreter/text/parser.mly | 5 ++-- 6 files changed, 52 insertions(+), 23 deletions(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 093da2463..9d8b3cc91 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -278,7 +278,7 @@ let run ts at = [], [] let assert_return ress ts at = - let test res = + let rec test res = let nan_bitmask_of = function | CanonicalNan -> abs_mask_of (* must only differ from the canonical NaN in its sign bit *) | ArithmeticNan -> canonical_nan_of (* can be any NaN that's one everywhere the canonical NaN is one *) @@ -374,6 +374,17 @@ let assert_return ress ts at = [ Call (is_ref_idx @@ at) @@ at; Test (Values.I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] + | EitherResult ress -> + [ Block (ValBlockType None, + List.map (fun res -> + Block (ValBlockType None, + test res @ + [Br (1l @@ res.at) @@ res.at] + ) @@ res.at + ) ress @ + [Br (1l @@ at) @@ at] + ) @@ at + ] in [], List.flatten (List.rev_map test ress) let wrap item_name wrap_action wrap_assertion at = @@ -514,11 +525,13 @@ let of_ref_pat = function | RefPat r -> of_ref r.it | RefTypePat t -> "\"ref." ^ string_of_refed_type t ^ "\"" -let of_result res = +let rec of_result res = match res.it with | NumResult np -> of_num_pat np | VecResult vp -> of_vec_pat vp | RefResult rp -> of_ref_pat rp + | EitherResult ress -> + "[" ^ String.concat ", " (List.map of_result ress) ^ "]" let rec of_definition def = match def.it with diff --git a/interpreter/script/run.ml b/interpreter/script/run.ml index e0019d84a..8bfa8fdd7 100644 --- a/interpreter/script/run.ml +++ b/interpreter/script/run.ml @@ -250,13 +250,16 @@ let string_of_nan = function | CanonicalNan -> "nan:canonical" | ArithmeticNan -> "nan:arithmetic" -let type_of_result r = - match r with - | NumResult (NumPat n) -> Types.NumType (Values.type_of_num n.it) - | NumResult (NanPat n) -> Types.NumType (Values.type_of_num n.it) - | VecResult (VecPat _) -> Types.VecType Types.V128Type - | RefResult (RefPat r) -> Types.RefType (Values.type_of_ref r.it) - | RefResult (RefTypePat t) -> Types.RefType t +let rec type_of_result r = + match r.it with + | NumResult (NumPat n) -> Some (Types.NumType (Values.type_of_num n.it)) + | NumResult (NanPat n) -> Some (Types.NumType (Values.type_of_num n.it)) + | VecResult (VecPat _) -> Some (Types.VecType Types.V128Type) + | RefResult (RefPat r) -> Some (Types.RefType (Values.type_of_ref r.it)) + | RefResult (RefTypePat t) -> Some (Types.RefType t) + | EitherResult rs -> + let ts = List.map type_of_result rs in + List.fold_left (fun t1 t2 -> if t1 = t2 then t1 else None) (List.hd ts) ts let string_of_num_pat (p : num_pat) = match p with @@ -276,20 +279,30 @@ let string_of_ref_pat (p : ref_pat) = | RefPat r -> Values.string_of_ref r.it | RefTypePat t -> Types.string_of_refed_type t -let string_of_result r = - match r with +let rec string_of_result r = + match r.it with | NumResult np -> string_of_num_pat np | VecResult vp -> string_of_vec_pat vp | RefResult rp -> string_of_ref_pat rp + | EitherResult rs -> + "(" ^ String.concat " | " (List.map string_of_result rs) ^ ")" let string_of_results = function | [r] -> string_of_result r | rs -> "[" ^ String.concat " " (List.map string_of_result rs) ^ "]" +let string_of_value_type_opt = function + | Some t -> Types.string_of_value_type t + | None -> "?" + +let string_of_value_type_opts = function + | [t] -> string_of_value_type_opt t + | ts -> "[" ^ String.concat " " (List.map string_of_value_type_opt ts) ^ "]" + let print_results rs = let ts = List.map type_of_result rs in Printf.printf "%s : %s\n" - (string_of_results rs) (Types.string_of_value_types ts); + (string_of_results rs) (string_of_value_type_opts ts); flush_all () @@ -368,7 +381,6 @@ let run_action act : Values.value list = | None -> Assert.error act.at "undefined export" ) - let assert_nan_pat n nan = let open Values in match n, nan.it with @@ -409,18 +421,19 @@ let assert_ref_pat r p = | ExternRef _, RefTypePat Types.ExternRefType -> true | _ -> false -let assert_pat v r = +let rec match_result at v r = let open Values in - match v, r with - | Num n, NumResult np -> assert_num_pat n np + match v, r.it with + | Num n, NumResult n' -> assert_num_pat n n' | Vec v, VecResult vp -> assert_vec_pat v vp - | Ref r, RefResult rp -> assert_ref_pat r rp + | Ref r, RefResult r' -> assert_ref_pat r r' + | _, EitherResult rs -> List.exists (match_result at v) rs | _, _ -> false let assert_result at got expect = if List.length got <> List.length expect || - List.exists2 (fun v r -> not (assert_pat v r)) got expect + not (List.for_all2 (match_result at) got expect) then begin print_string "Result: "; print_values got; print_string "Expect: "; print_results expect; @@ -487,8 +500,7 @@ let run_assertion ass = | AssertReturn (act, rs) -> trace ("Asserting return..."); let got_vs = run_action act in - let expect_rs = List.map (fun r -> r.it) rs in - assert_result ass.at got_vs expect_rs + assert_result ass.at got_vs rs | AssertTrap (act, re) -> trace ("Asserting trap..."); diff --git a/interpreter/script/script.ml b/interpreter/script/script.ml index 4c4f550f2..4004cef61 100644 --- a/interpreter/script/script.ml +++ b/interpreter/script/script.ml @@ -36,6 +36,7 @@ and result' = | NumResult of num_pat | VecResult of vec_pat | RefResult of ref_pat + | EitherResult of result list type assertion = assertion' Source.phrase and assertion' = diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index cdcd4f84d..fe99abdad 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -737,11 +737,12 @@ let ref_pat = function | RefPat r -> ref_ r.it | RefTypePat t -> Node ("ref." ^ refed_type t, []) -let result mode res = +let rec result mode res = match res.it with | NumResult np -> num_pat mode np | VecResult vp -> vec_pat mode vp | RefResult rp -> ref_pat rp + | EitherResult ress -> Node ("either", List.map (result mode) ress) let assertion mode ass = match ass.it with diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index c5d759fb8..fab9048eb 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -480,6 +480,7 @@ rule token = parse | "assert_exhaustion" { ASSERT_EXHAUSTION } | "nan:canonical" { NAN Script.CanonicalNan } | "nan:arithmetic" { NAN Script.ArithmeticNan } + | "either" { EITHER } | "input" { INPUT } | "output" { OUTPUT } diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index e91c3fe86..9068bb024 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -227,7 +227,7 @@ let inline_type_explicit (c : context) x ft at = %token SCRIPT REGISTER INVOKE GET %token ASSERT_MALFORMED ASSERT_INVALID ASSERT_SOFT_INVALID ASSERT_UNLINKABLE %token ASSERT_RETURN ASSERT_TRAP ASSERT_EXHAUSTION -%token NAN +%token NAN EITHER %token INPUT OUTPUT %token EOF @@ -1157,7 +1157,8 @@ result : if V128.num_lanes $3 <> List.length $4 then error (at ()) "wrong number of lane literals"; VecResult (VecPat (Values.V128 ($3, List.map (fun lit -> lit $3) $4))) @@ at () - } + } + | LPAR EITHER result result_list RPAR { EitherResult ($3 :: $4) @@ at () } result_list : | /* empty */ { [] } From 8da282571655e1ed06432e8b31a75e43128b87a6 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 14 Mar 2022 20:43:37 +0000 Subject: [PATCH 037/230] Update instruction names in opcode table based on #42 --- proposals/relaxed-simd/Overview.md | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 4e0b475a3..27c6702c0 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -220,24 +220,24 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | instruction | opcode | prototype opcode | | ----------------------------------| -------------- | ---------------- | -| `relaxed i8x16.swizzle` | 0x100 | 0xa2 | -| `relaxed i32x4.trunc_f32x4_s` | 0x101 | 0xa5 | -| `relaxed i32x4.trunc_f32x4_u` | 0x102 | 0xa6 | -| `relaxed i32x4.trunc_f64x2_s_zero`| 0x103 | 0xc5 | -| `relaxed i32x4.trunc_f64x2_u_zero`| 0x104 | 0xc6 | -| `f32x4.fma` | 0x105 | 0xaf | -| `f32x4.fms` | 0x106 | 0xb0 | -| `f64x2.fma` | 0x107 | 0xcf | -| `f64x2.fms` | 0x108 | 0xd0 | -| `i8x16.laneselect` | 0x109 | 0xb2 | -| `i16x8.laneselect` | 0x10a | 0xb3 | -| `i32x4.laneselect` | 0x10b | 0xd2 | -| `i64x2.laneselect` | 0x10c | 0xd3 | -| `f32x4.min` | 0x10d | 0xb4 | -| `f32x4.max` | 0x10e | 0xe2 | -| `f64x2.min` | 0x10f | 0xd4 | -| `f64x2.max` | 0x110 | 0xee | -| `i16x8.q15mulr_s` | 0x111 | unimplemented | +| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | +| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | +| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | +| `i32x4.relaxed_trunc_f64x2_s_zero`| 0x103 | 0xc5 | +| `i32x4.relaxed_trunc_f64x2_u_zero`| 0x104 | 0xc6 | +| `f32x4.relaxed_fma` | 0x105 | 0xaf | +| `f32x4.relaxed_fms` | 0x106 | 0xb0 | +| `f64x2.relaxed_fma` | 0x107 | 0xcf | +| `f64x2.relaxed_fms` | 0x108 | 0xd0 | +| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | +| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | +| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | +| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | +| `f32x4.relaxed_min` | 0x10d | 0xb4 | +| `f32x4.relaxed_max` | 0x10e | 0xe2 | +| `f64x2.relaxed_min` | 0x10f | 0xd4 | +| `f64x2.relaxed_max` | 0x110 | 0xee | +| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | | Reserved for dot product | 0x112 - 0x115 | unimplemented | | Reserved for bfloat16 dot product | 0x116 | unimplemented | | Reserved | 0x117 - 0x12F | | From dafba4f9215ecc2cdb6a448867d4dfbc643a308d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 9 Mar 2022 23:24:24 +0000 Subject: [PATCH 038/230] Add tests for relaxed simd instructions Test cases are not exhaustive and only exercises edge cases (where results differ across hardware). No implementation in the interpreter, only parsing, encoding, and decoding is supported. --- interpreter/binary/encode.ml | 20 ++++ interpreter/syntax/ast.ml | 9 ++ interpreter/syntax/free.ml | 2 +- interpreter/syntax/operators.ml | 19 ++++ interpreter/text/arrange.ml | 17 +++ interpreter/text/lexer.mll | 20 ++++ interpreter/valid/valid.ml | 4 + .../relaxed-simd/i16x8_relaxed_q15mulr_s.wast | 13 +++ .../relaxed-simd/i32x4_relaxed_trunc.wast | 54 +++++++++ .../relaxed-simd/i8x16_relaxed_swizzle.wast | 25 +++++ test/core/relaxed-simd/relaxed_fma_fms.wast | 66 +++++++++++ .../core/relaxed-simd/relaxed_laneselect.wast | 43 ++++++++ test/core/relaxed-simd/relaxed_min_max.wast | 104 ++++++++++++++++++ 13 files changed, 395 insertions(+), 1 deletion(-) create mode 100644 test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast create mode 100644 test/core/relaxed-simd/i32x4_relaxed_trunc.wast create mode 100644 test/core/relaxed-simd/i8x16_relaxed_swizzle.wast create mode 100644 test/core/relaxed-simd/relaxed_fma_fms.wast create mode 100644 test/core/relaxed-simd/relaxed_laneselect.wast create mode 100644 test/core/relaxed-simd/relaxed_min_max.wast diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 254b341b2..3f735b08c 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -560,6 +560,7 @@ struct | VecBinary (V128 (I8x16 V128Op.MaxS)) -> vecop 0x78l | VecBinary (V128 (I8x16 V128Op.MaxU)) -> vecop 0x79l | VecBinary (V128 (I8x16 V128Op.AvgrU)) -> vecop 0x7bl + | VecBinary (V128 (I8x16 V128Op.RelaxedSwizzle)) -> vecop 0x100l | VecBinary (V128 (I16x8 V128Op.NarrowS)) -> vecop 0x85l | VecBinary (V128 (I16x8 V128Op.NarrowU)) -> vecop 0x86l | VecBinary (V128 (I16x8 V128Op.Add)) -> vecop 0x8el @@ -579,6 +580,7 @@ struct | VecBinary (V128 (I16x8 V128Op.ExtMulLowU)) -> vecop 0x9el | VecBinary (V128 (I16x8 V128Op.ExtMulHighU)) -> vecop 0x9fl | VecBinary (V128 (I16x8 V128Op.Q15MulRSatS)) -> vecop 0x82l + | VecBinary (V128 (I16x8 V128Op.RelaxedQ15MulRS)) -> vecop 0x111l | VecBinary (V128 (I32x4 V128Op.Add)) -> vecop 0xael | VecBinary (V128 (I32x4 V128Op.Sub)) -> vecop 0xb1l | VecBinary (V128 (I32x4 V128Op.MinS)) -> vecop 0xb6l @@ -606,6 +608,8 @@ struct | VecBinary (V128 (F32x4 V128Op.Max)) -> vecop 0xe9l | VecBinary (V128 (F32x4 V128Op.Pmin)) -> vecop 0xeal | VecBinary (V128 (F32x4 V128Op.Pmax)) -> vecop 0xebl + | VecBinary (V128 (F32x4 V128Op.RelaxedMin)) -> vecop 0x10dl + | VecBinary (V128 (F32x4 V128Op.RelaxedMax)) -> vecop 0x10el | VecBinary (V128 (F64x2 V128Op.Add)) -> vecop 0xf0l | VecBinary (V128 (F64x2 V128Op.Sub)) -> vecop 0xf1l | VecBinary (V128 (F64x2 V128Op.Mul)) -> vecop 0xf2l @@ -614,8 +618,20 @@ struct | VecBinary (V128 (F64x2 V128Op.Max)) -> vecop 0xf5l | VecBinary (V128 (F64x2 V128Op.Pmin)) -> vecop 0xf6l | VecBinary (V128 (F64x2 V128Op.Pmax)) -> vecop 0xf7l + | VecBinary (V128 (F64x2 V128Op.RelaxedMin)) -> vecop 0x10fl + | VecBinary (V128 (F64x2 V128Op.RelaxedMax)) -> vecop 0x110l | VecBinary (V128 _) -> assert false + | VecTernary (V128 (F32x4 V128Op.RelaxedFma)) -> vecop 0x105l + | VecTernary (V128 (F32x4 V128Op.RelaxedFms)) -> vecop 0x106l + | VecTernary (V128 (F64x2 V128Op.RelaxedFma)) -> vecop 0x107l + | VecTernary (V128 (F64x2 V128Op.RelaxedFms)) -> vecop 0x108l + | VecTernary (V128 (I8x16 V128Op.RelaxedLaneselect)) -> vecop 0x109l + | VecTernary (V128 (I16x8 V128Op.RelaxedLaneselect)) -> vecop 0x10al + | VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) -> vecop 0x10bl + | VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) -> vecop 0x10cl + | VecTernary (V128 _) -> . + | VecConvert (V128 (I8x16 _)) -> assert false | VecConvert (V128 (I16x8 V128Op.ExtendLowS)) -> vecop 0x87l | VecConvert (V128 (I16x8 V128Op.ExtendHighS)) -> vecop 0x88l @@ -634,6 +650,10 @@ struct | VecConvert (V128 (I32x4 V128Op.TruncSatUF32x4)) -> vecop 0xf9l | VecConvert (V128 (I32x4 V128Op.TruncSatSZeroF64x2)) -> vecop 0xfcl | VecConvert (V128 (I32x4 V128Op.TruncSatUZeroF64x2)) -> vecop 0xfdl + | VecConvert (V128 (I32x4 V128Op.RelaxedTruncSF32x4)) -> vecop 0x101l + | VecConvert (V128 (I32x4 V128Op.RelaxedTruncUF32x4)) -> vecop 0x102l + | VecConvert (V128 (I32x4 V128Op.RelaxedTruncSZeroF64x2)) -> vecop 0x103l + | VecConvert (V128 (I32x4 V128Op.RelaxedTruncUZeroF64x2)) -> vecop 0x104l | VecConvert (V128 (I64x2 V128Op.ExtendLowS)) -> vecop 0xc7l | VecConvert (V128 (I64x2 V128Op.ExtendHighS)) -> vecop 0xc8l | VecConvert (V128 (I64x2 V128Op.ExtendLowU)) -> vecop 0xc9l diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index b5e3ae6ee..c5f9b5c1f 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -61,13 +61,19 @@ struct | AddSatS | AddSatU | SubSatS | SubSatU | DotS | Q15MulRSatS | ExtMulLowS | ExtMulHighS | ExtMulLowU | ExtMulHighU | Swizzle | Shuffle of int list | NarrowS | NarrowU + | RelaxedSwizzle | RelaxedQ15MulRS type fbinop = Add | Sub | Mul | Div | Min | Max | Pmin | Pmax + | RelaxedMin | RelaxedMax + type iternop = RelaxedLaneselect + type fternop = RelaxedFma | RelaxedFms type irelop = Eq | Ne | LtS | LtU | LeS | LeU | GtS | GtU | GeS | GeU type frelop = Eq | Ne | Lt | Le | Gt | Ge type icvtop = ExtendLowS | ExtendLowU | ExtendHighS | ExtendHighU | ExtAddPairwiseS | ExtAddPairwiseU | TruncSatSF32x4 | TruncSatUF32x4 | TruncSatSZeroF64x2 | TruncSatUZeroF64x2 + | RelaxedTruncSF32x4 | RelaxedTruncUF32x4 + | RelaxedTruncSZeroF64x2 | RelaxedTruncUZeroF64x2 type fcvtop = DemoteZeroF64x2 | PromoteLowF32x4 | ConvertSI32x4 | ConvertUI32x4 type ishiftop = Shl | ShrS | ShrU @@ -81,6 +87,7 @@ struct type testop = (itestop, itestop, itestop, itestop, void, void) V128.laneop type unop = (iunop, iunop, iunop, iunop, funop, funop) V128.laneop type binop = (ibinop, ibinop, ibinop, ibinop, fbinop, fbinop) V128.laneop + type ternop = (iternop, iternop, iternop, iternop, fternop, fternop) V128.laneop type relop = (irelop, irelop, irelop, irelop, frelop, frelop) V128.laneop type cvtop = (icvtop, icvtop, icvtop, icvtop, fcvtop, fcvtop) V128.laneop type shiftop = (ishiftop, ishiftop, ishiftop, ishiftop, void, void) V128.laneop @@ -105,6 +112,7 @@ type vec_testop = (V128Op.testop) Values.vecop type vec_relop = (V128Op.relop) Values.vecop type vec_unop = (V128Op.unop) Values.vecop type vec_binop = (V128Op.binop) Values.vecop +type vec_ternop = (V128Op.ternop) Values.vecop type vec_cvtop = (V128Op.cvtop) Values.vecop type vec_shiftop = (V128Op.shiftop) Values.vecop type vec_bitmaskop = (V128Op.bitmaskop) Values.vecop @@ -188,6 +196,7 @@ and instr' = | VecCompare of vec_relop (* vector comparison *) | VecUnary of vec_unop (* unary vector operator *) | VecBinary of vec_binop (* binary vector operator *) + | VecTernary of vec_ternop (* ternary vector operator *) | VecConvert of vec_cvtop (* vector conversion *) | VecShift of vec_shiftop (* vector shifts *) | VecBitmask of vec_bitmaskop (* vector masking *) diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index 78c09baf3..b70ac7969 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -87,7 +87,7 @@ let rec instr (e : instr) = | VecLoad _ | VecStore _ | VecLoadLane _ | VecStoreLane _ | MemorySize | MemoryGrow | MemoryCopy | MemoryFill -> memories zero - | VecConst _ | VecTest _ | VecUnary _ | VecBinary _ | VecCompare _ + | VecConst _ | VecTest _ | VecUnary _ | VecBinary _ | VecTernary _ | VecCompare _ | VecConvert _ | VecShift _ | VecBitmask _ | VecTestBits _ | VecUnaryBits _ | VecBinaryBits _ | VecTernaryBits _ | VecSplat _ | VecExtract _ | VecReplace _ -> diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 296bb1e77..fc135534a 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -500,3 +500,22 @@ 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 i8x16_relaxed_swizzle = VecBinary (V128 (I8x16 V128Op.RelaxedSwizzle)) +let i8x16_relaxed_laneselect = VecTernary (V128 (I8x16 V128Op.RelaxedLaneselect)) +let i16x8_relaxed_q15mulr_s = VecBinary (V128 (I16x8 V128Op.RelaxedQ15MulRS)) +let i16x8_relaxed_laneselect = VecTernary (V128 (I16x8 V128Op.RelaxedLaneselect)) +let i32x4_relaxed_trunc_f32x4_s = VecConvert (V128 (I32x4 V128Op.RelaxedTruncSF32x4)) +let i32x4_relaxed_trunc_f32x4_u = VecConvert (V128 (I32x4 V128Op.RelaxedTruncUF32x4)) +let i32x4_relaxed_trunc_f64x2_s_zero = VecConvert (V128 (I32x4 V128Op.RelaxedTruncSZeroF64x2)) +let i32x4_relaxed_trunc_f64x2_u_zero = VecConvert (V128 (I32x4 V128Op.RelaxedTruncUZeroF64x2)) +let i32x4_relaxed_laneselect = VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) +let i64x2_relaxed_laneselect = VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) +let f32x4_relaxed_fma = VecTernary (V128 (F32x4 V128Op.RelaxedFma)) +let f32x4_relaxed_fms = VecTernary (V128 (F32x4 V128Op.RelaxedFms)) +let f32x4_relaxed_min = VecBinary (V128 (F32x4 V128Op.RelaxedMin)) +let f32x4_relaxed_max = VecBinary (V128 (F32x4 V128Op.RelaxedMax)) +let f64x2_relaxed_fma = VecTernary (V128 (F64x2 V128Op.RelaxedFma)) +let f64x2_relaxed_fms = VecTernary (V128 (F64x2 V128Op.RelaxedFms)) +let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) +let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index fe99abdad..4db4fb11e 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -255,6 +255,11 @@ struct | NarrowU -> "narrow_i" ^ double xxxx ^ "_u" | Shuffle is -> "shuffle " ^ String.concat " " (List.map nat is) | Swizzle -> "swizzle" + | RelaxedSwizzle -> "relaxed_swizzle" + | RelaxedQ15MulRS -> "relaxed_q15mulr_s" + + let iternop xxxx (op : iternop) = match op with + | RelaxedLaneselect -> "relaxed_laneselect" let fbinop xxxx (op : fbinop) = match op with | Add -> "add" @@ -265,6 +270,12 @@ struct | Max -> "max" | Pmin -> "pmin" | Pmax -> "pmax" + | RelaxedMin -> "relaxed_min" + | RelaxedMax -> "relaxed_max" + + let fternop xxxx (op : fternop) = match op with + | RelaxedFma -> "relaxed_fma" + | RelaxedFms -> "relaxed_fms" let irelop xxxx (op : irelop) = match op with | Eq -> "eq" @@ -297,6 +308,10 @@ struct | TruncSatUF32x4 -> "trunc_sat_f32x4_u" | TruncSatSZeroF64x2 -> "trunc_sat_f64x2_s_zero" | TruncSatUZeroF64x2 -> "trunc_sat_f64x2_u_zero" + | RelaxedTruncSF32x4 -> "relaxed_trunc_f32x4_s" + | RelaxedTruncUF32x4 -> "relaxed_trunc_f32x4_u" + | RelaxedTruncSZeroF64x2 -> "relaxed_trunc_f64x2_s_zero" + | RelaxedTruncUZeroF64x2 -> "relaxed_trunc_f64x2_u_zero" let fcvtop xxxx (op : fcvtop) = match op with | DemoteZeroF64x2 -> "demote_f64x2_zero" @@ -376,6 +391,7 @@ let cvtop = oper (IntOp.cvtop, FloatOp.cvtop) let vec_unop = vec_shape_oper (V128Op.iunop, V128Op.iunop, V128Op.funop) let vec_binop = vec_shape_oper (V128Op.ibinop, V128Op.ibinop, V128Op.fbinop) +let vec_ternop = vec_shape_oper (V128Op.iternop, V128Op.iternop, V128Op.fternop) let vec_testop = vec_shape_oper (V128Op.itestop, V128Op.itestop, V128Op.voidop) let vec_relop = vec_shape_oper (V128Op.irelop, V128Op.irelop, V128Op.frelop) let vec_cvtop = vec_shape_oper (V128Op.icvtop, V128Op.icvtop, V128Op.fcvtop) @@ -491,6 +507,7 @@ let rec instr e = | VecTest op -> vec_testop op, [] | VecUnary op -> vec_unop op, [] | VecBinary op -> vec_binop op, [] + | VecTernary op -> vec_ternop op, [] | VecCompare op -> vec_relop op, [] | VecConvert op -> vec_cvtop op, [] | VecShift op -> vec_shiftop op, [] diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index fab9048eb..8cce2a27d 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -674,6 +674,26 @@ rule token = parse (v128op s i8x16_replace_lane i16x8_replace_lane i32x4_replace_lane i64x2_replace_lane f32x4_replace_lane f64x2_replace_lane) } + | "i8x16.relaxed_swizzle" { VEC_BINARY i8x16_relaxed_swizzle } + | "i8x16.relaxed_swizzle" { VEC_BINARY i8x16_relaxed_swizzle } + | "i32x4.relaxed_trunc_f32x4_"(sign as s) + { VEC_UNARY (ext s i32x4_relaxed_trunc_f32x4_s i32x4_relaxed_trunc_f32x4_u) } + | "i32x4.relaxed_trunc_f64x2_"(sign as s)"_zero" + { VEC_UNARY (ext s i32x4_relaxed_trunc_f64x2_s_zero i32x4_relaxed_trunc_f64x2_u_zero) } + | (v128_float_shape as s)".relaxed_fma" + { VEC_UNARY (v128floatop s f32x4_relaxed_fma f64x2_relaxed_fma) } + | (v128_float_shape as s)".relaxed_fms" + { VEC_UNARY (v128floatop s f32x4_relaxed_fms f64x2_relaxed_fms) } + | (v128_int_shape as s)".relaxed_laneselect" + { VEC_TERNARY + (v128intop s i8x16_relaxed_laneselect i16x8_relaxed_laneselect + i32x4_relaxed_laneselect i64x2_relaxed_laneselect)} + | (v128_float_shape as s)".relaxed_min" + { VEC_UNARY (v128floatop s f32x4_relaxed_min f64x2_relaxed_min) } + | (v128_float_shape as s)".relaxed_max" + { VEC_UNARY (v128floatop s f32x4_relaxed_max f64x2_relaxed_max) } + | "i16x8.relaxed_q15mulr_s" { VEC_BINARY i16x8_relaxed_q15mulr_s } + | name as s { VAR s } | ";;"utf8_no_nl*eof { EOF } diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 780404e50..34d99b782 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -463,6 +463,10 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type let t = VecType (type_vec binop) in [t; t] --> [t] + | VecTernary ternop -> + let t = VecType (type_vec ternop) in + [t; t; t] --> [t] + | VecCompare relop -> let t = VecType (type_vec relop) in [t; t] --> [t] diff --git a/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast new file mode 100644 index 000000000..9dcb54de2 --- /dev/null +++ b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast @@ -0,0 +1,13 @@ +;; Tests for i16x8.relaxed_q15mulr_s. +(module + (func (export "i16x8.relaxed_q15mulr_s") (param v128 v128) (result v128) (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1))) +) + +;; INT16_MIN = -32768 +(assert_return (invoke "i16x8.relaxed_q15mulr_s" + (v128.const i16x8 -32768 -32767 32767 0 0 0 0 0) + (v128.const i16x8 -32768 -32768 32767 0 0 0 0 0)) + ;; overflows, return either INT16_MIN or INT16_MAX + (either (v128.const i16x8 -32768 32767 32766 0 0 0 0 0) + (v128.const i16x8 32767 32767 32766 0 0 0 0 0))) + diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast new file mode 100644 index 000000000..55f923690 --- /dev/null +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -0,0 +1,54 @@ +;; Tests for i32x4.relaxed_trunc_f32x4_s, i32x4.relaxed_trunc_f32x4_u, i32x4.relaxed_trunc_f64x2_s_zero, and i32x4.relaxed_trunc_f64x2_u_zero. + +(module + (func (export "i32x4.relaxed_trunc_f32x4_s") (param v128) (result v128) (i32x4.relaxed_trunc_f32x4_s (local.get 0))) + (func (export "i32x4.relaxed_trunc_f32x4_u") (param v128) (result v128) (i32x4.relaxed_trunc_f32x4_u (local.get 0))) + (func (export "i32x4.relaxed_trunc_f64x2_s_zero") (param v128) (result v128) (i32x4.relaxed_trunc_f64x2_s_zero (local.get 0))) + (func (export "i32x4.relaxed_trunc_f64x2_u_zero") (param v128) (result v128) (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0))) +) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" + ;; INT32_MIN INT32_MAX + (v128.const f32x4 -2147483648.0 -2147483904.0 2147483647.0 2147483904.0)) + ;; out of range -> 0 or INT32_MIN + (either (v128.const i32x4 0x80000000 0 0x4f000000 0) + (v128.const i32x4 0xcf000000 0x8000000 0x4f000000 0x8000000))) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" + (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) + ;; nans -> 0 or INT32_MIN + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0x8000000 0x8000000 0x8000000 0x8000000))) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" + ;; UINT32_MIN UINT32_MIN-1 0 or UINT32_MAX + (either (v128.const i32x4 0 0 4294967040 0) + (v128.const i32x4 0 0xffffffff 4294967040 0xffffffff))) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" + (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) + ;; nans -> 0 or UINT32_MAX + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff))) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" + (v128.const f64x2 -2147483904.0 2147483904.0)) + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0 0 0x8000000 0x8000000))) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" + (v128.const f64x2 nan -nan)) + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0 0 0x8000000 0x8000000))) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" + (v128.const f64x2 -1.0 4294967296.0)) + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0 0 0xffffffff 0xffffffff))) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" + (v128.const f64x2 nan -nan)) + (either (v128.const i32x4 0 0 0 0) + (v128.const i32x4 0 0 0xffffffff 0xffffffff))) diff --git a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast new file mode 100644 index 000000000..22c11efb2 --- /dev/null +++ b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast @@ -0,0 +1,25 @@ +;; Tests for relaxed i8x16 swizzle. + +(module + (func (export "i8x16.relaxed_swizzle") (param v128 v128) (result v128) (i8x16.relaxed_swizzle (local.get 0) (local.get 1))) +) + +(assert_return (invoke "i8x16.relaxed_swizzle" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) + (either (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))) + +;; out of range, returns 0 or modulo 15 if < 128 +(assert_return (invoke "i8x16.relaxed_swizzle" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) + (either (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))) + +;; out of range, returns 0 if >= 128 +(assert_return (invoke "i8x16.relaxed_swizzle" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 128 129 130 131 132 133 134 135 248 249 250 251 252 253 254 255)) + (either (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))) diff --git a/test/core/relaxed-simd/relaxed_fma_fms.wast b/test/core/relaxed-simd/relaxed_fma_fms.wast new file mode 100644 index 000000000..cba4ba601 --- /dev/null +++ b/test/core/relaxed-simd/relaxed_fma_fms.wast @@ -0,0 +1,66 @@ +;; Tests for f32x4.relaxed_fma, f32x4.relaxed_fms, f64x2.relaxed_fma, and f64x2.relaxed_fms. + +(module + (func (export "f32x4.relaxed_fma") (param v128 v128 v128) (result v128) (f32x4.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) + (func (export "f32x4.relaxed_fms") (param v128 v128 v128) (result v128) (f32x4.relaxed_fms (local.get 0) (local.get 1) (local.get 2))) + (func (export "f64x2.relaxed_fms") (param v128 v128 v128) (result v128) (f64x2.relaxed_fms (local.get 0) (local.get 1) (local.get 2))) + (func (export "f64x2.relaxed_fma") (param v128 v128 v128) (result v128) (f64x2.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) +) + + +;; FLT_MAX == 0x1.fffffep+127 +;; FLT_MAX * 2 - FLT_MAX == +;; FLT_MAX (if fma) +;; 0 (if no fma) +;; from https://www.vinc17.net/software/fma-tests.c +(assert_return (invoke "f32x4.relaxed_fma" + (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 ) + (v128.const f32x4 2.0 2.0 2.0 2.0) + (v128.const f32x4 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127)) + (either (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127) + (v128.const f32x4 inf inf inf inf))) + +;; Special values for float: +;; x = 0x1.000004p+0 (1 + 2^-22) +;; y = 0x1.0002p+0 (1 + 2^-15) +;; z = -(1.0 + 0x0.0002p+0 + 0x0.000004p+0) +;; = -0x1.000204p+0 +;; x.y = 1.0 + 0x0.0002p+0 + 0x0.000004p+0 + 0x1p-37 (round bit) +;; x.y+z = 0 (2 roundings) +;; fma(x, y, z) = (0x1p-37) 2^-37 +;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information +(assert_return (invoke "f32x4.relaxed_fms" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) + (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) + (v128.const f32x4 0 0 0 0))) + +;; DBL_MAX = 0x1.fffffffffffffp+1023 +;; DLB_MAX * 2 - DLB_MAX == +;; DLB_MAX (if fma) +;; 0 (if no fma) +;; form https://www.vinc17.net/software/fma-tests.c +;; from https://www.vinc17.net/software/fma-tests.c +(assert_return (invoke "f64x2.relaxed_fma" + (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) + (v128.const f64x2 2.0 2.0) + (v128.const f64x2 -0x1.fffffffffffffp+1023 -0x1.fffffffffffffp+1023)) + (either (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) + (v128.const f64x2 inf inf))) + +;; Special values for double: +;; x = 0x1.00000004p+0 (1 + 2^-30) +;; y = 0x1.000002p+0 (1 + 2^-23) +;; z = -(1.0 + 0x0.000002p+0 + 0x0.00000004p+0) +;; = -0x1.00000204p+0 +;; x.y = 1.0 + 0x0.000002p+0 + 0x0.00000004p+0 + 0x1p-53 (round bit) +;; x.y+z = 0 (2 roundings) +;; fma(x, y, z) = 0x1p-53 +;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information +(assert_return (invoke "f64x2.relaxed_fms" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) + (either (v128.const f64x2 0x1p-53 0x1p-53) + (v128.const f64x2 0 0))) diff --git a/test/core/relaxed-simd/relaxed_laneselect.wast b/test/core/relaxed-simd/relaxed_laneselect.wast new file mode 100644 index 000000000..e1a246fe3 --- /dev/null +++ b/test/core/relaxed-simd/relaxed_laneselect.wast @@ -0,0 +1,43 @@ +;; Tests for i8x16.relaxed_laneselect, i16x8.relaxed_laneselect, i32x4.relaxed_laneselect, and i64x2.relaxed_laneselect. + +(module + (func (export "i8x16.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i16x8.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i32x4.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i64x2.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) +) + +(assert_return (invoke "i8x16.relaxed_laneselect" + (v128.const i8x16 0 1 0x12 0x12 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 16 17 0x34 0x34 20 21 22 23 24 25 26 27 28 29 30 31) + (v128.const i8x16 0xff 0 0xf0 0x0f 0 0 0 0 0 0 0 0 0 0 0 0)) + (either (v128.const i8x16 0 17 0x14 0x32 20 21 22 23 24 25 26 27 28 29 30 31) + (v128.const i8x16 0 17 0x12 0x34 20 21 22 23 24 25 26 27 28 29 30 31))) + +(assert_return (invoke "i16x8.relaxed_laneselect" + (v128.const i16x8 0 1 0x1234 0x1234 4 5 6 7) + (v128.const i16x8 8 9 0x5678 0x5678 12 13 14 15) + (v128.const i16x8 0xffff 0 0xff00 0x00ff 0 0 0 0)) + (either (v128.const i16x8 0 9 0x1278 0x5634 12 13 14 15) + (v128.const i16x8 0 9 0x1234 0x5678 12 13 14 15))) + +(assert_return (invoke "i32x4.relaxed_laneselect" + (v128.const i32x4 0 1 0x12341234 0x12341234) + (v128.const i32x4 4 5 0x56785678 0x56785678) + (v128.const i32x4 0xffffffff 0 0xffff0000 0x0000ffff)) + (either (v128.const i32x4 0 5 0x12345678 0x56781234) + (v128.const i32x4 0 5 0x12341234 0x56785678))) + +(assert_return (invoke "i64x2.relaxed_laneselect" + (v128.const i64x2 0 1) + (v128.const i64x2 2 3) + (v128.const i64x2 0xffffffffffffffff 0)) + (either (v128.const i64x2 0 3) + (v128.const i64x2 0 3))) + +(assert_return (invoke "i64x2.relaxed_laneselect" + (v128.const i64x2 0x1234123412341234 0x1234123412341234) + (v128.const i64x2 0x5678567856785678 0x5678567856785678) + (v128.const i64x2 0xffffffff00000000 0x00000000ffffffff)) + (either (v128.const i64x2 0x1234123456785678 0x5678567812341234) + (v128.const i64x2 0x1234123412341234 0x5678567856785678))) diff --git a/test/core/relaxed-simd/relaxed_min_max.wast b/test/core/relaxed-simd/relaxed_min_max.wast new file mode 100644 index 000000000..5e49ac673 --- /dev/null +++ b/test/core/relaxed-simd/relaxed_min_max.wast @@ -0,0 +1,104 @@ +;; Tests for f32x4.min, f32x4.max, f64x2.min, and f64x2.max. + +(module + (func (export "f32x4.relaxed_min") (param v128 v128) (result v128) (f32x4.relaxed_min (local.get 0) (local.get 1))) + (func (export "f32x4.relaxed_max") (param v128 v128) (result v128) (f32x4.relaxed_max (local.get 0) (local.get 1))) + (func (export "f64x2.relaxed_max") (param v128 v128) (result v128) (f64x2.relaxed_max (local.get 0) (local.get 1))) + (func (export "f64x2.relaxed_min") (param v128 v128) (result v128) (f64x2.relaxed_min (local.get 0) (local.get 1))) +) + +(assert_return (invoke "f32x4.relaxed_min" + (v128.const f32x4 -nan nan 0 0) + (v128.const f32x4 0 0 -nan nan)) + (either (v128.const f32x4 nan:canonical nan:canonical nan:canonical nan:canonical) + (v128.const f32x4 nan:canonical nan:canonical 0 0) + (v128.const f32x4 0 0 nan:canonical nan:canonical) + (v128.const f32x4 0 0 0 0))) + +(assert_return (invoke "f32x4.relaxed_min" + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0)) + (either (v128.const f32x4 -0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 -0.0 +0.0 -0.0))) + +(assert_return (invoke "f32x4.relaxed_max" + (v128.const f32x4 -nan nan 0 0) + (v128.const f32x4 0 0 -nan nan)) + (either (v128.const f32x4 nan:canonical nan:canonical nan:canonical nan:canonical) + (v128.const f32x4 nan:canonical nan:canonical 0 0) + (v128.const f32x4 0 0 nan:canonical nan:canonical) + (v128.const f32x4 0 0 0 0))) + +(assert_return (invoke "f32x4.relaxed_max" + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0)) + (either (v128.const f32x4 +0.0 +0.0 +0.0 -0.0) + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 -0.0 +0.0 -0.0))) + +(assert_return (invoke "f64x2.relaxed_min" + (v128.const f64x2 -nan nan) + (v128.const f64x2 0 0)) + (either (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0) + (v128.const f64x2 0 0))) + +(assert_return (invoke "f64x2.relaxed_min" + (v128.const f64x2 0 0) + (v128.const f64x2 -nan nan)) + (either (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0) + (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0))) + +(assert_return (invoke "f64x2.relaxed_min" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0)) + (either (v128.const f64x2 -0.0 -0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0) + (v128.const f64x2 -0.0 -0.0))) + +(assert_return (invoke "f64x2.relaxed_min" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0)) + (either (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0))) + +(assert_return (invoke "f64x2.relaxed_max" + (v128.const f64x2 -nan nan) + (v128.const f64x2 0 0)) + (either (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0) + (v128.const f64x2 0 0))) + +(assert_return (invoke "f64x2.relaxed_max" + (v128.const f64x2 0 0) + (v128.const f64x2 -nan nan)) + (either (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0) + (v128.const f64x2 nan:canonical nan:canonical) + (v128.const f64x2 0 0))) + +(assert_return (invoke "f64x2.relaxed_max" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0)) + (either (v128.const f64x2 +0.0 +0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0) + (v128.const f64x2 -0.0 -0.0))) + +(assert_return (invoke "f64x2.relaxed_max" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0)) + (either (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0))) From 3f9570148fbd736b9f0a6678e6eb9039e4a997b6 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 14 Mar 2022 20:34:38 +0000 Subject: [PATCH 039/230] Fixes to test --- .../relaxed-simd/i32x4_relaxed_trunc.wast | 22 ++++++++++++------- test/core/relaxed-simd/relaxed_fma_fms.wast | 18 ++++++++++++--- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast index 55f923690..c19f120a9 100644 --- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -10,9 +10,10 @@ (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" ;; INT32_MIN INT32_MAX (v128.const f32x4 -2147483648.0 -2147483904.0 2147483647.0 2147483904.0)) - ;; out of range -> 0 or INT32_MIN - (either (v128.const i32x4 0x80000000 0 0x4f000000 0) - (v128.const i32x4 0xcf000000 0x8000000 0x4f000000 0x8000000))) + ;; out of range -> 0 or saturate or INT32_MIN + (either (v128.const i32x4 -2147483648 0 2147483647 0) + (v128.const i32x4 -2147483648 -2147483648 2147483647 2147483647) + (v128.const i32x4 -2147483648 -2147483648 2147483647 -2147483648))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) @@ -22,9 +23,10 @@ (assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" ;; UINT32_MIN UINT32_MIN-1 0 or UINT32_MAX + (v128.const f32x4 0 -1.0 4294967040.0 4294967296.0)) + ;; out of range -> 0 or saturate or UINT32_MAX (either (v128.const i32x4 0 0 4294967040 0) + (v128.const i32x4 0 0 4294967040 0xffffffff) (v128.const i32x4 0 0xffffffff 4294967040 0xffffffff))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" @@ -35,18 +37,22 @@ (assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" (v128.const f64x2 -2147483904.0 2147483904.0)) + ;; out of range -> 0 or saturate or INT32_MIN (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 0 0 0x8000000 0x8000000))) + (v128.const i32x4 -2147483648 2147483647 0 0) + (v128.const i32x4 -2147483648 -2147483648 0 0))) (assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" (v128.const f64x2 nan -nan)) (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 0 0 0x8000000 0x8000000))) + (v128.const i32x4 0x8000000 0x8000000 0 0))) (assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" (v128.const f64x2 -1.0 4294967296.0)) + ;; out of range -> 0 or saturate or UINT32_MAX (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 0 0 0xffffffff 0xffffffff))) + (v128.const i32x4 0 0xffffffff 0 0) + (v128.const i32x4 0xffffffff 0xffffffff 0 0))) (assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" (v128.const f64x2 nan -nan)) diff --git a/test/core/relaxed-simd/relaxed_fma_fms.wast b/test/core/relaxed-simd/relaxed_fma_fms.wast index cba4ba601..d895d88d6 100644 --- a/test/core/relaxed-simd/relaxed_fma_fms.wast +++ b/test/core/relaxed-simd/relaxed_fma_fms.wast @@ -29,12 +29,18 @@ ;; x.y+z = 0 (2 roundings) ;; fma(x, y, z) = (0x1p-37) 2^-37 ;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information -(assert_return (invoke "f32x4.relaxed_fms" +(assert_return (invoke "f32x4.relaxed_fma" (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) (v128.const f32x4 0 0 0 0))) +(assert_return (invoke "f32x4.relaxed_fms" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) + (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) + (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) + (v128.const f32x4 0 0 0 0))) ;; DBL_MAX = 0x1.fffffffffffffp+1023 ;; DLB_MAX * 2 - DLB_MAX == @@ -58,9 +64,15 @@ ;; x.y+z = 0 (2 roundings) ;; fma(x, y, z) = 0x1p-53 ;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information -(assert_return (invoke "f64x2.relaxed_fms" - (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) +(assert_return (invoke "f64x2.relaxed_fma" (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) +(assert_return (invoke "f64x2.relaxed_fms" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) + (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) + (either (v128.const f64x2 0x1p-53 0x1p-53) + (v128.const f64x2 0 0))) From bfb6b0ad9b81eecfc65b21a4a2854ec0934deeb4 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 14 Mar 2022 22:19:26 +0000 Subject: [PATCH 040/230] Fix relaxed trunc expected results --- .../relaxed-simd/i32x4_relaxed_trunc.wast | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast index c19f120a9..c31195d04 100644 --- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -10,9 +10,8 @@ (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" ;; INT32_MIN INT32_MAX (v128.const f32x4 -2147483648.0 -2147483904.0 2147483647.0 2147483904.0)) - ;; out of range -> 0 or saturate or INT32_MIN - (either (v128.const i32x4 -2147483648 0 2147483647 0) - (v128.const i32x4 -2147483648 -2147483648 2147483647 2147483647) + ;; out of range -> saturate or INT32_MIN + (either (v128.const i32x4 -2147483648 -2147483648 2147483647 2147483647) (v128.const i32x4 -2147483648 -2147483648 2147483647 -2147483648))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" @@ -24,9 +23,8 @@ (assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" ;; UINT32_MIN UINT32_MIN-1 0 or saturate or UINT32_MAX - (either (v128.const i32x4 0 0 4294967040 0) - (v128.const i32x4 0 0 4294967040 0xffffffff) + ;; out of range -> saturate or UINT32_MAX + (either (v128.const i32x4 0 0 4294967040 0xffffffff) (v128.const i32x4 0 0xffffffff 4294967040 0xffffffff))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" @@ -37,9 +35,8 @@ (assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" (v128.const f64x2 -2147483904.0 2147483904.0)) - ;; out of range -> 0 or saturate or INT32_MIN - (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 -2147483648 2147483647 0 0) + ;; out of range -> saturate or INT32_MIN + (either (v128.const i32x4 -2147483648 2147483647 0 0) (v128.const i32x4 -2147483648 -2147483648 0 0))) (assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero" @@ -49,9 +46,8 @@ (assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" (v128.const f64x2 -1.0 4294967296.0)) - ;; out of range -> 0 or saturate or UINT32_MAX - (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 0 0xffffffff 0 0) + ;; out of range -> saturate or UINT32_MAX + (either (v128.const i32x4 0 0xffffffff 0 0) (v128.const i32x4 0xffffffff 0xffffffff 0 0))) (assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero" From 9b8c69ba56ac15a6ee1c1c2cee0b4079163075fc Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 10 Mar 2022 00:23:26 +0000 Subject: [PATCH 041/230] Restrict allowed return values --- proposals/relaxed-simd/Overview.md | 60 ++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 19 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 27c6702c0..2d563ff1a 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -70,11 +70,16 @@ The specification is updated with the idea of "Relaxed operations": ## Instructions +`IMPLEMENTATION_DEFINED_ONE_OF(...)` returns any one of the results in the argument list, depending on the implementation. + ### Relaxed swizzle - `relaxed i8x16.swizzle(a : v128, s : v128) -> v128` -`relaxed i8x16.swizzle(a, s)` selects lanes from `a` using indices in `s`, indices in the range `[0,15]` will select the `i`-th element of `a`, the result for any out of range indices is implementation-defined (i.e. if the index is `[16-255]`. +`relaxed i8x16.swizzle(a, s)` selects lanes from `a` using indices in `s`, +indices in the range `[0,15]` will select the `i`-th element of `a`, the result +for any out of range indices is implementation-defined (i.e. if the index is +`[16-255]`. ```python def relaxed_i8x16_swizzle(a, s): @@ -82,8 +87,10 @@ def relaxed_i8x16_swizzle(a, s): for i in range(16): if s[i] < 16: result[i] = a[s[i]] + else if s[i] < 128: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, a[s[i]%16]) else: - result[i] = UNDEFINED + result[i] = 0 return result ``` @@ -97,30 +104,45 @@ def relaxed_i8x16_swizzle(a, s): These instructions have the same behavior as the non-relaxed instructions for lanes that are in the range of an `i32` (signed or unsigned depending on the instruction). For lanes that contain values which are out of bounds or NaN, the -result is implementation-defined. +result is implementation-defined, either 0, or `INT32_MAX` for signed, and +`UINT32_MAX` for unsigned. ```python -def relaxed_i32x4_trunc_f32x4(a : f32x4, signed : bool) -> i32x4: - result = [] - min = signed ? INT32_MIN : UINT32_MIN - max = signed ? INT32_MAX : UINT32_MAX +def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4: + result = [0, 0, 0, 0] for i in range(4): r = truncate(a[i]) - if min <= r <= max: + if isnan(a[i]) or INT32_MIN <= r <= INT32_MAX: result[i] = r else: - result[i] = UNDEFINED + result[i] = signed IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) -def relaxed_i32x4_trunc_f64x2_zero(a : f64x2, signed : bool) -> i32x4: +def relaxed_i32x4_trunc_f32x4_u(a : f32x4) -> i32x4: result = [0, 0, 0, 0] - min = signed ? INT32_MIN : UINT32_MIN - max = signed ? INT32_MAX : UINT32_MAX - for i in range(2): + for i in range(4): r = truncate(a[i]) - if min <= r <= max: + if isnan(a[i]) or UINT32_MIN <= r <= UINT32_MAX: + result[i] = r + else: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) + +def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4: + result = [0, 0, 0, 0] + for i in range(2): + r = isnan(a[i]) or truncate(a[i]) + if INT32_MIN <= r <= INT32_MAX: result[i] = r else: - result[i] = UNDEFINED + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + +def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4: + result = [0, 0, 0, 0] + for i in range(2): + r = isnan(a[i]) or truncate(a[i]) + if UINT32_MIN <= r <= UINT32_MAX: + result[i] = r + else: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) ``` ### Relaxed fused multiply-add and fused multiply-subtract @@ -153,15 +175,17 @@ Select lanes from `a` or `b` based on masks in `m`. If each lane-sized mask in ` ```python def laneselect(a : v128, b : v128, m: v128, lanes : int): - result = [] + result = [0] * lanes for i in range(lanes): mask = m[i] if mask == ~0: result[i] = a[i] elif mask == 0: result[i] = b[i] + else topbit(mask) == 1: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(bitselect(a[i], b[i], mask), a[i]) else: - result[i] = UNDEFINED + result[i] = b[i] return result ``` @@ -187,8 +211,6 @@ def min_or_max(a : v128, b : v128, lanes : int, is_min : bool): return result ``` -Where `IMPLEMENTATION_DEFINED_ONE_OF(x, y)` returns either `x` or `y`, depending on the implementation. - ### Relaxed Rounding Q-format Multiplication - `i16x8.q15mulr_s(a: v128, b: v128) -> v128` From fbfb92f1091f00896a62a782577e0c28fa7c79bd Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 10 Mar 2022 00:29:21 +0000 Subject: [PATCH 042/230] Fix typos --- proposals/relaxed-simd/Overview.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 2d563ff1a..28d8b55c0 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -82,7 +82,7 @@ for any out of range indices is implementation-defined (i.e. if the index is `[16-255]`. ```python -def relaxed_i8x16_swizzle(a, s): +def relaxed_i8x16_swizzle(a : i8x16, s : i8x16): result = [] for i in range(16): if s[i] < 16: @@ -115,7 +115,7 @@ def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4: if isnan(a[i]) or INT32_MIN <= r <= INT32_MAX: result[i] = r else: - result[i] = signed IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) def relaxed_i32x4_trunc_f32x4_u(a : f32x4) -> i32x4: result = [0, 0, 0, 0] @@ -129,8 +129,8 @@ def relaxed_i32x4_trunc_f32x4_u(a : f32x4) -> i32x4: def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4: result = [0, 0, 0, 0] for i in range(2): - r = isnan(a[i]) or truncate(a[i]) - if INT32_MIN <= r <= INT32_MAX: + r = truncate(a[i]) + if isnan(a[i]) or INT32_MIN <= r <= INT32_MAX: result[i] = r else: result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) @@ -138,8 +138,8 @@ def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4: def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4: result = [0, 0, 0, 0] for i in range(2): - r = isnan(a[i]) or truncate(a[i]) - if UINT32_MIN <= r <= UINT32_MAX: + r = truncate(a[i]) + if isnan(a[i]) or UINT32_MIN <= r <= UINT32_MAX: result[i] = r else: result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) From c1a56b597745502e605cc57f9f00dc49d557b4df Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 14 Mar 2022 21:22:13 +0000 Subject: [PATCH 043/230] Fix trunc --- proposals/relaxed-simd/Overview.md | 40 +++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 28d8b55c0..d020e2f4a 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -111,38 +111,54 @@ result is implementation-defined, either 0, or `INT32_MAX` for signed, and def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4: result = [0, 0, 0, 0] for i in range(4): + if isnan(a[i]): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) r = truncate(a[i]) - if isnan(a[i]) or INT32_MIN <= r <= INT32_MAX: - result[i] = r + if r < INT32_MIN: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) + elif r > INT32_MAX + result[i] = INT32_MAX else: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + result[i] = r def relaxed_i32x4_trunc_f32x4_u(a : f32x4) -> i32x4: result = [0, 0, 0, 0] for i in range(4): + if isnan(a[i]): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) r = truncate(a[i]) - if isnan(a[i]) or UINT32_MIN <= r <= UINT32_MAX: - result[i] = r + if r < UINT32_MIN: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(UINT32_MIN, UINT32_MAX) + elif r > UINT32_MAX: + result[i] = UINT32_MAX else: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) + result[i] = r def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4: result = [0, 0, 0, 0] for i in range(2): + if isnan(a[i]): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) r = truncate(a[i]) - if isnan(a[i]) or INT32_MIN <= r <= INT32_MAX: - result[i] = r + if r < INT32_MIN: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) + elif r > INT32_MAX + result[i] = INT32_MAX else: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + result[i] = r def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4: result = [0, 0, 0, 0] for i in range(2): + if isnan(a[i]): + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) r = truncate(a[i]) - if isnan(a[i]) or UINT32_MIN <= r <= UINT32_MAX: - result[i] = r + if r < UINT32_MIN: + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(UINT32_MIN, UINT32_MAX) + elif r > UINT32_MAX: + result[i] = UINT32_MAX else: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX) + result[i] = r ``` ### Relaxed fused multiply-add and fused multiply-subtract From 8413b4237e8738436829e5e7d2be67aad28ec1c5 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 14 Mar 2022 21:25:43 +0000 Subject: [PATCH 044/230] Update trunc description --- proposals/relaxed-simd/Overview.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index d020e2f4a..d76712980 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -103,9 +103,11 @@ def relaxed_i8x16_swizzle(a : i8x16, s : i8x16): These instructions have the same behavior as the non-relaxed instructions for lanes that are in the range of an `i32` (signed or unsigned depending on the -instruction). For lanes that contain values which are out of bounds or NaN, the -result is implementation-defined, either 0, or `INT32_MAX` for signed, and -`UINT32_MAX` for unsigned. +instruction). The result of lanes which contain NaN is implementation defined, +either 0 or `INT32_MAX` for signed and `UINT32_MAX` for unsigned. The result of +lanes which are out of bounds of `INT32` or `UINT32` is implementation defined, +it can be either the saturated result or `INT32_MAX` for signed and `UINT32_MAX` +for unsigned. ```python def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4: From 2e66ec6ca22fc442c5dadf605f56fd125a596445 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 18 Mar 2022 15:25:48 -0700 Subject: [PATCH 045/230] Update ImplementationStatus.md --- proposals/relaxed-simd/ImplementationStatus.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index d17c7e090..fa3457a65 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -19,6 +19,12 @@ | `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.relaxed_q15mulr_s` | | | | +| `i16x8.dot_i8x16_i7x16_s` | | | | +| `i16x8.dot_i8x16_i7x16_u` | | | | +| `i32x4.dot_i8x16_i7x16_add_s` | | | | +| `i32x4.dot_i8x16_i7x16_add_u` | | | | + [1] Tip of tree LLVM as of 2021-10-28 @@ -47,3 +53,8 @@ | `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | | `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | | `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | +| `i16x8.relaxed_q15mulr_s` | | +| `i16x8.dot_i8x16_i7x16_s` | | +| `i16x8.dot_i8x16_i7x16_u` | | +| `i32x4.dot_i8x16_i7x16_add_s` | | +| `i32x4.dot_i8x16_i7x16_add_u` | | From 1f29e464eeebd3b7b53b918c73048dca316f90f1 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 22 Mar 2022 17:10:51 +0000 Subject: [PATCH 046/230] Add dot product to overview --- proposals/relaxed-simd/Overview.md | 85 ++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 23 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index d76712980..7b92d3c84 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -248,6 +248,42 @@ def q15mulr(a, b): return result ``` +### Relaxed integer dot product + +- `i16x8.dot_i8x16_i7x16_s(a: v128, b: v128) -> v128` +- `i16x8.dot_i8x16_i7x16_u(a: v128, b: v128) -> v128` +- `i32x4.dot_i8x16_i7x16_add_s(a: v128, b:v128, c:v128) -> v128` +- `i32x4.dot_i8x16_i7x16_add_u(a: v128, b:v128, c:v128) -> v128` + +Returns the multiplication of 8-bit elements (signed or unsigned) by 7-bit +elements (unsigned) with accumulation of adjacent products. The `i32x4` versions +allows for accumulation into another vector. + +When the second operand of the product has the high bit set in a lane, that +lane's result is implementation defined. + +```python +def dot_product(signed, elements, a, b, c): + intermediate = [] + result = [] + for i in range(16): + if (b[i] & 0x80): + lhs = as_signed(a[i]) if signed else a[i] + rhs = IMPLEMENTATION_DEFINED_ONE_OF(as_signed(b[i]), b[i]) + intermediate[i] = lhs + rhs + else: + intermediate[i] = (as_signed(a[i]) if signed else a[i]) * b[i] + for i in range(0, 16, elements): + result[i/elements] == sum(intermediate[i:i+elements]) + result[i/elements] += c[i/elements] if c else 0 + +i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b) +i16x8_dot_i8x16_i7x16_u(a, b) = dot_product(signed=False, elements=2, a, b) +i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=True, elements=4, a, b, c) +i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=False, elements=4, a, b, c) +``` + + ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. @@ -258,29 +294,32 @@ where chosen to fit into the holes in the opcode space of SIMD proposal. Going forward, the opcodes for relaxed-simd specification will be the ones in the "opcode" column, and it will take some time for tools and engines to update. -| instruction | opcode | prototype opcode | -| ----------------------------------| -------------- | ---------------- | -| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | -| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | -| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | -| `i32x4.relaxed_trunc_f64x2_s_zero`| 0x103 | 0xc5 | -| `i32x4.relaxed_trunc_f64x2_u_zero`| 0x104 | 0xc6 | -| `f32x4.relaxed_fma` | 0x105 | 0xaf | -| `f32x4.relaxed_fms` | 0x106 | 0xb0 | -| `f64x2.relaxed_fma` | 0x107 | 0xcf | -| `f64x2.relaxed_fms` | 0x108 | 0xd0 | -| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | -| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | -| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | -| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | -| `f32x4.relaxed_min` | 0x10d | 0xb4 | -| `f32x4.relaxed_max` | 0x10e | 0xe2 | -| `f64x2.relaxed_min` | 0x10f | 0xd4 | -| `f64x2.relaxed_max` | 0x110 | 0xee | -| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | -| Reserved for dot product | 0x112 - 0x115 | unimplemented | -| Reserved for bfloat16 dot product | 0x116 | unimplemented | -| Reserved | 0x117 - 0x12F | | +| instruction | opcode | prototype opcode | +| ---------------------------------- | -------------- | ---------------- | +| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | +| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | +| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | +| `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | +| `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | +| `f32x4.relaxed_fma` | 0x105 | 0xaf | +| `f32x4.relaxed_fms` | 0x106 | 0xb0 | +| `f64x2.relaxed_fma` | 0x107 | 0xcf | +| `f64x2.relaxed_fms` | 0x108 | 0xd0 | +| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | +| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | +| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | +| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | +| `f32x4.relaxed_min` | 0x10d | 0xb4 | +| `f32x4.relaxed_max` | 0x10e | 0xe2 | +| `f64x2.relaxed_min` | 0x10f | 0xd4 | +| `f64x2.relaxed_max` | 0x110 | 0xee | +| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | +| `i16x8.dot_i8x16_i7x16_s` | 0x112 | unimplemented | +| `i16x8.dot_i8x16_i7x16_u` | 0x113 | unimplemented | +| `i32x4.dot_i8x16_i7x16_add_s` | 0x114 | unimplemented | +| `i32x4.dot_i8x16_i7x16_add_u` | 0x115 | unimplemented | +| Reserved for bfloat16 | 0x116 | unimplemented | +| Reserved | 0x117 - 0x12F | | ## References From 2d63360478bf71da060ad0c63c16646c93a87bf0 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 13 May 2022 09:49:56 -0700 Subject: [PATCH 047/230] Remove unsigned dot product from overview (#73) --- proposals/relaxed-simd/Overview.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 7b92d3c84..f7eb71036 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -251,9 +251,7 @@ def q15mulr(a, b): ### Relaxed integer dot product - `i16x8.dot_i8x16_i7x16_s(a: v128, b: v128) -> v128` -- `i16x8.dot_i8x16_i7x16_u(a: v128, b: v128) -> v128` - `i32x4.dot_i8x16_i7x16_add_s(a: v128, b:v128, c:v128) -> v128` -- `i32x4.dot_i8x16_i7x16_add_u(a: v128, b:v128, c:v128) -> v128` Returns the multiplication of 8-bit elements (signed or unsigned) by 7-bit elements (unsigned) with accumulation of adjacent products. The `i32x4` versions @@ -278,9 +276,7 @@ def dot_product(signed, elements, a, b, c): result[i/elements] += c[i/elements] if c else 0 i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b) -i16x8_dot_i8x16_i7x16_u(a, b) = dot_product(signed=False, elements=2, a, b) -i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=True, elements=4, a, b, c) -i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=False, elements=4, a, b, c) +i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=False, elements=2, a, b, c) ``` @@ -315,11 +311,9 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `f64x2.relaxed_max` | 0x110 | 0xee | | `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | | `i16x8.dot_i8x16_i7x16_s` | 0x112 | unimplemented | -| `i16x8.dot_i8x16_i7x16_u` | 0x113 | unimplemented | -| `i32x4.dot_i8x16_i7x16_add_s` | 0x114 | unimplemented | -| `i32x4.dot_i8x16_i7x16_add_u` | 0x115 | unimplemented | -| Reserved for bfloat16 | 0x116 | unimplemented | -| Reserved | 0x117 - 0x12F | | +| `i32x4.dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | +| Reserved for bfloat16 | 0x114 | unimplemented | +| Reserved | 0x115 - 0x12F | | ## References From 0d63afae1c9cb22dbd4e6441a9e51cfafb0b379d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 7 Jul 2022 22:34:41 +0000 Subject: [PATCH 048/230] More fixes for merge commits --- interpreter/binary/encode.ml | 2 -- interpreter/text/lexer.mll | 37 ++++++++++++++++++------------------ 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index edbca5da6..59a1ad929 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -654,8 +654,6 @@ struct | VecTernary (V128 (I16x8 V128Op.RelaxedLaneselect)) -> vecop 0x10al | VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) -> vecop 0x10bl | VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) -> vecop 0x10cl - | VecTernary (V128 _) -> - error e.at "illegal ternary vector instruction" | VecConvert (V128 (I8x16 _)) -> error e.at "illegal i8x16 conversion instruction" diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index 22e36fe7b..ebc4fb6be 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -653,25 +653,24 @@ rule token = parse | "f32x4.replace_lane" -> VEC_REPLACE f32x4_replace_lane | "f64x2.replace_lane" -> VEC_REPLACE f64x2_replace_lane - | "i8x16.relaxed_swizzle" { VEC_BINARY i8x16_relaxed_swizzle } - | "i8x16.relaxed_swizzle" { VEC_BINARY i8x16_relaxed_swizzle } - | "i32x4.relaxed_trunc_f32x4_"(sign as s) - { VEC_UNARY (ext s i32x4_relaxed_trunc_f32x4_s i32x4_relaxed_trunc_f32x4_u) } - | "i32x4.relaxed_trunc_f64x2_"(sign as s)"_zero" - { VEC_UNARY (ext s i32x4_relaxed_trunc_f64x2_s_zero i32x4_relaxed_trunc_f64x2_u_zero) } - | (v128_float_shape as s)".relaxed_fma" - { VEC_UNARY (v128floatop s f32x4_relaxed_fma f64x2_relaxed_fma) } - | (v128_float_shape as s)".relaxed_fms" - { VEC_UNARY (v128floatop s f32x4_relaxed_fms f64x2_relaxed_fms) } - | (v128_int_shape as s)".relaxed_laneselect" - { VEC_TERNARY - (v128intop s i8x16_relaxed_laneselect i16x8_relaxed_laneselect - i32x4_relaxed_laneselect i64x2_relaxed_laneselect)} - | (v128_float_shape as s)".relaxed_min" - { VEC_UNARY (v128floatop s f32x4_relaxed_min f64x2_relaxed_min) } - | (v128_float_shape as s)".relaxed_max" - { VEC_UNARY (v128floatop s f32x4_relaxed_max f64x2_relaxed_max) } - | "i16x8.relaxed_q15mulr_s" { VEC_BINARY i16x8_relaxed_q15mulr_s } + | "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 + | "i32x4.relaxed_trunc_f64x2_u_zero" -> VEC_UNARY i32x4_relaxed_trunc_f64x2_u_zero + | "i32x4.relaxed_trunc_f64x2_s_zero" -> VEC_UNARY i32x4_relaxed_trunc_f64x2_s_zero + | "f32x4.relaxed_fma" -> VEC_UNARY f32x4_relaxed_fma + | "f64x2.relaxed_fma" -> VEC_UNARY f64x2_relaxed_fma + | "f32x4.relaxed_fms" -> VEC_UNARY f32x4_relaxed_fms + | "f64x2.relaxed_fms" -> VEC_UNARY f64x2_relaxed_fms + | "i8x16.relaxed_laneselect" -> VEC_TERNARY i8x16_relaxed_laneselect + | "i16x8.relaxed_laneselect" -> VEC_TERNARY i16x8_relaxed_laneselect + | "i32x4.relaxed_laneselect" -> VEC_TERNARY i32x4_relaxed_laneselect + | "i64x2.relaxed_laneselect" -> VEC_TERNARY i64x2_relaxed_laneselect + | "f32x4.relaxed_min" -> VEC_UNARY f32x4_relaxed_min + | "f64x2.relaxed_min" -> VEC_UNARY f64x2_relaxed_min + | "f32x4.relaxed_max" -> VEC_UNARY f32x4_relaxed_max + | "f64x2.relaxed_max" -> VEC_UNARY f64x2_relaxed_max + | "i16x8.relaxed_q15mulr_s" -> VEC_BINARY i16x8_relaxed_q15mulr_s | "type" -> TYPE | "func" -> FUNC From a3f00372545a5f03be5f4f5fab8bfb49db0328d8 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 7 Jul 2022 22:42:17 +0000 Subject: [PATCH 049/230] More merge conflict fixes --- interpreter/text/lexer.mll | 1 + 1 file changed, 1 insertion(+) diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index ebc4fb6be..c969842a7 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -705,6 +705,7 @@ rule token = parse | "assert_exhaustion" -> ASSERT_EXHAUSTION | "nan:canonical" -> NAN Script.CanonicalNan | "nan:arithmetic" -> NAN Script.ArithmeticNan + | "either" -> EITHER | "input" -> INPUT | "output" -> OUTPUT From aff5ae08eab2e84ae8df249059bd2afa0f2c60bc Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 4 Aug 2022 23:24:29 +0000 Subject: [PATCH 050/230] Fix ordering for FMA and change FMS to FNMA (fused negative multiply add) For #27. --- proposals/relaxed-simd/Overview.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index f7eb71036..f9888e092 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -163,19 +163,19 @@ def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4: result[i] = r ``` -### Relaxed fused multiply-add and fused multiply-subtract +### Relaxed fused multiply-add and fused negative multiply-add - `relaxed f32x4.fma` -- `relaxed f32x4.fms` +- `relaxed f32x4.fnma` - `relaxed f64x2.fma` -- `relaxed f64x2.fms` +- `relaxed f64x2.fnma` -All the instructions take 3 operands, `a`, `b`, `c`, perform `a + (b * c)` or `a - (b * c)`: +All the instructions take 3 operands, `a`, `b`, `c`, perform `a * b + c` or `-(a * b) + c`: -- `relaxed f32x4.fma(a, b, c) = a + (b * c)` -- `relaxed f32x4.fms(a, b, c) = a - (b * c)` -- `relaxed f64x2.fma(a, b, c) = a + (b * c)` -- `relaxed f64x2.fms(a, b, c) = a - (b * c)` +- `relaxed f32x4.fma(a, b, c) = a * b + c` +- `relaxed f32x4.fnma(a, b, c) = -(a * b) + c` +- `relaxed f64x2.fma(a, b, c) = a * b + c` +- `relaxed f64x2.fnma(a, b, c) = -(a * b) + c` where: From b58bb2e3ccf0df1db0c4826c8d5439dfb8b665f2 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 12 Sep 2022 21:48:24 +0000 Subject: [PATCH 051/230] Add BFloat16 dot product --- proposals/relaxed-simd/Overview.md | 76 ++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 25 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index f9888e092..de962cbbb 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -180,7 +180,7 @@ All the instructions take 3 operands, `a`, `b`, `c`, perform `a * b + c` or `-(a where: - the intermediate `b * c` is be rounded first, and the final result rounded again (for a total of 2 roundings), or -- the the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). +- the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). ### Relaxed laneselect @@ -279,6 +279,32 @@ i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=False, elements=2, a, b, c) ``` +### Relaxed BFloat16 dot product + +- `f32x4.relaxed_dot_bf16x8_add_f32x4(a: v128, b: v128, c: v128) -> v128` + +BFloat16 is a 16-bit floating-point format that represents the IEEE FP32 numbers +truncated to the high 16 bits. This instruction computes a FP32 dot product of 2 +BFloat16 with accumulation into another FP32. + +```python +def bfloat16_dot_product(a, b, c): + for i in range(8): + y.fp32[i] = + y.fp32[i] + + cast(a.bf16[2*i]) * cast(b.bf16[2*i]) + + cast(a.bf16[2*i+1]) * cast(b.bf16[2*i+1]) +``` + +This instruction is implementation defined in the following ways: + +- evaluation order + - can compute dot product in one step, then accumulation in another, or + - accumulate first product in one step, then accumulate second product in + another step +- fusion, the steps described above can be both fused or both unfused +- the intermediate results can be Round-to-Nearest-Even or Round-to-Odd. + ## Binary format @@ -290,30 +316,30 @@ where chosen to fit into the holes in the opcode space of SIMD proposal. Going forward, the opcodes for relaxed-simd specification will be the ones in the "opcode" column, and it will take some time for tools and engines to update. -| instruction | opcode | prototype opcode | -| ---------------------------------- | -------------- | ---------------- | -| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | -| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | -| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | -| `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | -| `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | -| `f32x4.relaxed_fma` | 0x105 | 0xaf | -| `f32x4.relaxed_fms` | 0x106 | 0xb0 | -| `f64x2.relaxed_fma` | 0x107 | 0xcf | -| `f64x2.relaxed_fms` | 0x108 | 0xd0 | -| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | -| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | -| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | -| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | -| `f32x4.relaxed_min` | 0x10d | 0xb4 | -| `f32x4.relaxed_max` | 0x10e | 0xe2 | -| `f64x2.relaxed_min` | 0x10f | 0xd4 | -| `f64x2.relaxed_max` | 0x110 | 0xee | -| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | -| `i16x8.dot_i8x16_i7x16_s` | 0x112 | unimplemented | -| `i32x4.dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | -| Reserved for bfloat16 | 0x114 | unimplemented | -| Reserved | 0x115 - 0x12F | | +| instruction | opcode | prototype opcode | +| ------------------------------------ | -------------- | ---------------- | +| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | +| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | +| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | +| `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | +| `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | +| `f32x4.relaxed_fma` | 0x105 | 0xaf | +| `f32x4.relaxed_fms` | 0x106 | 0xb0 | +| `f64x2.relaxed_fma` | 0x107 | 0xcf | +| `f64x2.relaxed_fms` | 0x108 | 0xd0 | +| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | +| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | +| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | +| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | +| `f32x4.relaxed_min` | 0x10d | 0xb4 | +| `f32x4.relaxed_max` | 0x10e | 0xe2 | +| `f64x2.relaxed_min` | 0x10f | 0xd4 | +| `f64x2.relaxed_max` | 0x110 | 0xee | +| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | +| `i16x8.dot_i8x16_i7x16_s` | 0x112 | unimplemented | +| `i32x4.dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | unimplemented | +| Reserved | 0x115 - 0x12F | | ## References From 0018aeb4ff8236119495116a3ed88b814f3c9673 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Wed, 21 Sep 2022 10:31:02 -0500 Subject: [PATCH 052/230] Fix fnma instruction name and details --- proposals/relaxed-simd/Overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index de962cbbb..8cc77d369 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -179,7 +179,7 @@ All the instructions take 3 operands, `a`, `b`, `c`, perform `a * b + c` or `-(a where: -- the intermediate `b * c` is be rounded first, and the final result rounded again (for a total of 2 roundings), or +- the intermediate `a * b` is be rounded first, and the final result rounded again (for a total of 2 roundings), or - the entire expression evaluated with higher precision and then only rounded once (if supported by hardware). ### Relaxed laneselect @@ -324,9 +324,9 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | | `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | | `f32x4.relaxed_fma` | 0x105 | 0xaf | -| `f32x4.relaxed_fms` | 0x106 | 0xb0 | +| `f32x4.relaxed_fnma` | 0x106 | 0xb0 | | `f64x2.relaxed_fma` | 0x107 | 0xcf | -| `f64x2.relaxed_fms` | 0x108 | 0xd0 | +| `f64x2.relaxed_fnma` | 0x108 | 0xd0 | | `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | | `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | | `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | From 8cbfd34a7f546fad6f92bb0c8848d18a0da14e4b Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 19:58:19 +0000 Subject: [PATCH 053/230] Update implementation status with bf16 dot product and fnma --- .../relaxed-simd/ImplementationStatus.md | 94 +++++++++---------- 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index fa3457a65..4360ec9ea 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -1,29 +1,28 @@ ## Implementation in LLVM and various engines -| Instruction | LLVM [1] | V8 [2] | SpiderMonkey [3] | -|------------------------------------|----------------|--------------------|--------------------| -| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.fms` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.fms` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i16x8.relaxed_q15mulr_s` | | | | -| `i16x8.dot_i8x16_i7x16_s` | | | | -| `i16x8.dot_i8x16_i7x16_u` | | | | -| `i32x4.dot_i8x16_i7x16_add_s` | | | | -| `i32x4.dot_i8x16_i7x16_add_u` | | | | +| Instruction | LLVM [1] | V8 [2] | SpiderMonkey [3] | +|--------------------------------------|----------------|--------------------|--------------------| +| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.relaxed_q15mulr_s` | | | | +| `i16x8.dot_i8x16_i7x16_s` | | | | +| `i32x4.dot_i8x16_i7x16_add_s` | | | | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | | | | [1] Tip of tree LLVM as of 2021-10-28 @@ -34,27 +33,26 @@ ## Name of builtins in LLVM -| Instruction | LLVM | -|------------------------------------|---------------------------------------------------| -| `relaxed i8x16.swizzle` | `__builtin_wasm_relaxed_swizzle_i8x16` | -| `relaxed i32x4.trunc_f32x4_s` | `__builtin_wasm_relaxed_trunc_s_i32x4_f32x4` | -| `relaxed i32x4.trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | -| `relaxed i32x4.trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | -| `relaxed i32x4.trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | -| `f32x4.fma` | `__builtin_wasm_fma_f32x4` | -| `f32x4.fms` | `__builtin_wasm_fms_f32x4` | -| `f64x2.fma` | `__builtin_wasm_fma_f64x2` | -| `f64x2.fms` | `__builtin_wasm_fms_f64x2` | -| `i8x16.laneselect` | `__builtin_wasm_laneselect_i8x16` | -| `i16x8.laneselect` | `__builtin_wasm_laneselect_i16x8` | -| `i32x4.laneselect` | `__builtin_wasm_laneselect_i32x4` | -| `i64x2.laneselect` | `__builtin_wasm_laneselect_i64x2` | -| `f32x4.min` | `__builtin_wasm_relaxed_min_f32x4` | -| `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | -| `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | -| `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | -| `i16x8.relaxed_q15mulr_s` | | -| `i16x8.dot_i8x16_i7x16_s` | | -| `i16x8.dot_i8x16_i7x16_u` | | -| `i32x4.dot_i8x16_i7x16_add_s` | | -| `i32x4.dot_i8x16_i7x16_add_u` | | +| Instruction | LLVM | +|--------------------------------------|---------------------------------------------------| +| `relaxed i8x16.swizzle` | `__builtin_wasm_relaxed_swizzle_i8x16` | +| `relaxed i32x4.trunc_f32x4_s` | `__builtin_wasm_relaxed_trunc_s_i32x4_f32x4` | +| `relaxed i32x4.trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | +| `relaxed i32x4.trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | +| `relaxed i32x4.trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | +| `f32x4.fma` | `__builtin_wasm_fma_f32x4` | +| `f32x4.fnma` | `__builtin_wasm_fnma_f32x4` | +| `f64x2.fma` | `__builtin_wasm_fma_f64x2` | +| `f64x2.fnma` | `__builtin_wasm_fnma_f64x2` | +| `i8x16.laneselect` | `__builtin_wasm_laneselect_i8x16` | +| `i16x8.laneselect` | `__builtin_wasm_laneselect_i16x8` | +| `i32x4.laneselect` | `__builtin_wasm_laneselect_i32x4` | +| `i64x2.laneselect` | `__builtin_wasm_laneselect_i64x2` | +| `f32x4.min` | `__builtin_wasm_relaxed_min_f32x4` | +| `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | +| `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | +| `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | +| `i16x8.relaxed_q15mulr_s` | | +| `i16x8.dot_i8x16_i7x16_s` | | +| `i32x4.dot_i8x16_i7x16_add_s` | | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | | From 65707248e8d1c9f2d7fbd92679640781d2ef4c0a Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 20:37:13 +0000 Subject: [PATCH 054/230] Fix overview for integer dot products and implementation status --- proposals/relaxed-simd/ImplementationStatus.md | 16 ++++++++-------- proposals/relaxed-simd/Overview.md | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index 4360ec9ea..6e6acfaaa 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -19,10 +19,10 @@ | `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i16x8.relaxed_q15mulr_s` | | | | -| `i16x8.dot_i8x16_i7x16_s` | | | | -| `i32x4.dot_i8x16_i7x16_add_s` | | | | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | | | | +| `i16x8.relaxed_q15mulr_s` | -mrelaxed-simd | | | +| `i16x8.dot_i8x16_i7x16_s` | -mrelaxed-simd | | | +| `i32x4.dot_i8x16_i7x16_add_s` | -mrelaxed-simd | | | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | -mrelaxed-simd | | | [1] Tip of tree LLVM as of 2021-10-28 @@ -52,7 +52,7 @@ | `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | | `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | | `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | -| `i16x8.relaxed_q15mulr_s` | | -| `i16x8.dot_i8x16_i7x16_s` | | -| `i32x4.dot_i8x16_i7x16_add_s` | | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | | +| `i16x8.relaxed_q15mulr_s` | `__builtin_wasm_relaxed_q15mulr_s_i16x8` | +| `i16x8.dot_i8x16_i7x16_s` | `__builtin_wasm_dot_i8x16_i7x16_s_i16x8` | +| `i32x4.dot_i8x16_i7x16_add_s` | `__builtin_wasm_dot_i8x16_i7x16_add_s_i32x4` | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | `__builtin_wasm_relaxed_dot_bf16x8_add_f32_f32x4` | diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 8cc77d369..27d45bb74 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -268,15 +268,15 @@ def dot_product(signed, elements, a, b, c): if (b[i] & 0x80): lhs = as_signed(a[i]) if signed else a[i] rhs = IMPLEMENTATION_DEFINED_ONE_OF(as_signed(b[i]), b[i]) - intermediate[i] = lhs + rhs + intermediate[i] = lhs * rhs else: intermediate[i] = (as_signed(a[i]) if signed else a[i]) * b[i] for i in range(0, 16, elements): - result[i/elements] == sum(intermediate[i:i+elements]) + result[i/elements] = sum(intermediate[i:i+elements]) result[i/elements] += c[i/elements] if c else 0 i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b) -i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=False, elements=2, a, b, c) +i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=True, elements=4, a, b, c) ``` ### Relaxed BFloat16 dot product From 8697e477a2f052c47a3664a9be77971ba50ece02 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 20:29:20 +0000 Subject: [PATCH 055/230] Add some relaxed dot product tests For #94. --- .../relaxed-simd/relaxed_dot_product.wast | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/core/relaxed-simd/relaxed_dot_product.wast diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast new file mode 100644 index 000000000..d819c7a0f --- /dev/null +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -0,0 +1,43 @@ +;; Tests for relaxed dot products. + +(module + (func (export "i16x8.dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.dot_i8x16_i7x16_s (local.get 0) (local.get 1))) + (func (export "i32x4.dot_i8x16_i7x16_add_s") (param v128 v128 v128) (result v128) (i32x4.dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2))) + (func (export "f32x4.relaxed_dot_bf16x8_add_f32x4") (param v128 v128 v128) (result v128) (f32x4.relaxed_dot_bf16x8_add_f32x4 (local.get 0) (local.get 1) (local.get 2))) +) + +;; Simple values to ensure things are functional. +(assert_return (invoke "i16x8.dot_i8x16_i7x16_s" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) + (v128.const i16x8 1 13 41 85 145 221 313 421)) + +;; Test max and min i8 values; +(assert_return (invoke "i16x8.dot_i8x16_i7x16_s" + (v128.const i8x16 -128 -128 127 127 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i16x8 -32512 32512 0 0 0 0 0 0)) + +;; Simple values to ensure things are functional. +(assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i32x4 0 1 2 3)) + ;; intermediate result is [14, 126, 366, 734] + (v128.const f32x4 14 127 368 737)) + +;; Test max and min i8 values; +(assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" + (v128.const i8x16 -128 -128 -128 -128 127 127 127 127 0 0 0 0 0 0 0 0) + (v128.const i8x16 127 127 127 127 127 127 127 127 0 0 0 0 0 0 0 0) + (v128.const i32x4 0 1 2 3)) + ;; intermediate result is [-65024, 65024, 0, 0] + (v128.const f32x4 -65024 65024 0 0)) + +;; Simple values to ensure things are functional. +(assert_return (invoke "f32x4.relaxed_dot_bf16x8_add_f32x4" + (v128.const i16x8 0x0000 0x3f80 0x4000 0x4040 0x4080 0x40a0 0x40c0 0x40e0) ;; [0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f] + (v128.const i16x8 0x0000 0x3f80 0x4000 0x4040 0x4080 0x40a0 0x40c0 0x40e0) + (v128.const f32x4 0 1 2 3)) + ;; intermediate result is [1, 13, 41, 85] + (v128.const f32x4 1 14 43 88)) From 3935fe9215c501f395f6a1222f0038b04f5431a4 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:14:03 +0000 Subject: [PATCH 056/230] Fix number of lane literals --- test/core/relaxed-simd/relaxed_dot_product.wast | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index d819c7a0f..a74c43e02 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -15,7 +15,7 @@ ;; Test max and min i8 values; (assert_return (invoke "i16x8.dot_i8x16_i7x16_s" (v128.const i8x16 -128 -128 127 127 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0)) (v128.const i16x8 -32512 32512 0 0 0 0 0 0)) ;; Simple values to ensure things are functional. From e35df3a0011a34b3a51dc3298c1687d62af19a75 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:21:15 +0000 Subject: [PATCH 057/230] Fix test results --- test/core/relaxed-simd/relaxed_dot_product.wast | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index a74c43e02..245b1db17 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -16,7 +16,7 @@ (assert_return (invoke "i16x8.dot_i8x16_i7x16_s" (v128.const i8x16 -128 -128 127 127 0 0 0 0 0 0 0 0 0 0 0 0) (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i16x8 -32512 32512 0 0 0 0 0 0)) + (v128.const i16x8 -32512 32258 0 0 0 0 0 0)) ;; Simple values to ensure things are functional. (assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" @@ -30,9 +30,9 @@ (assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" (v128.const i8x16 -128 -128 -128 -128 127 127 127 127 0 0 0 0 0 0 0 0) (v128.const i8x16 127 127 127 127 127 127 127 127 0 0 0 0 0 0 0 0) - (v128.const i32x4 0 1 2 3)) - ;; intermediate result is [-65024, 65024, 0, 0] - (v128.const f32x4 -65024 65024 0 0)) + (v128.const i32x4 1 2 3 4)) + ;; intermediate result is [-65024, 64516, 0, 0] + (v128.const f32x4 -65023 64518 3 4)) ;; Simple values to ensure things are functional. (assert_return (invoke "f32x4.relaxed_dot_bf16x8_add_f32x4" From 2dc7f2fb0be71a26ad0f6dfbe5790aaedd6e3cbe Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:01:25 +0000 Subject: [PATCH 058/230] Fix fms -> fnma, add relaxed dot --- interpreter/binary/encode.ml | 9 +++++++-- interpreter/syntax/ast.ml | 6 +++--- interpreter/syntax/operators.ml | 7 +++++-- interpreter/text/arrange.ml | 9 ++++++++- interpreter/text/lexer.mll | 7 +++++-- test/core/relaxed-simd/relaxed_fma_fms.wast | 10 +++++----- 6 files changed, 33 insertions(+), 15 deletions(-) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 59a1ad929..b61fb29ec 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -604,6 +604,7 @@ struct | VecBinary (V128 (I16x8 V128Op.ExtMulHighU)) -> vecop 0x9fl | VecBinary (V128 (I16x8 V128Op.Q15MulRSatS)) -> vecop 0x82l | VecBinary (V128 (I16x8 V128Op.RelaxedQ15MulRS)) -> vecop 0x111l + | VecBinary (V128 (I16x8 V128Op.RelaxedDot)) -> vecop 0x112l | VecBinary (V128 (I32x4 V128Op.Add)) -> vecop 0xael | VecBinary (V128 (I32x4 V128Op.Sub)) -> vecop 0xb1l | VecBinary (V128 (I32x4 V128Op.MinS)) -> vecop 0xb6l @@ -647,13 +648,17 @@ struct error e.at "illegal binary vector instruction" | VecTernary (V128 (F32x4 V128Op.RelaxedFma)) -> vecop 0x105l - | VecTernary (V128 (F32x4 V128Op.RelaxedFms)) -> vecop 0x106l + | VecTernary (V128 (F32x4 V128Op.RelaxedFnma)) -> vecop 0x106l | VecTernary (V128 (F64x2 V128Op.RelaxedFma)) -> vecop 0x107l - | VecTernary (V128 (F64x2 V128Op.RelaxedFms)) -> vecop 0x108l + | VecTernary (V128 (F64x2 V128Op.RelaxedFnma)) -> vecop 0x108l | VecTernary (V128 (I8x16 V128Op.RelaxedLaneselect)) -> vecop 0x109l | VecTernary (V128 (I16x8 V128Op.RelaxedLaneselect)) -> vecop 0x10al | VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) -> vecop 0x10bl | VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) -> vecop 0x10cl + | VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) -> vecop 0x113l + | VecTernary (V128 (F32x4 V128Op.RelaxedDotAccum)) -> vecop 0x114l + | VecTernary (V128 _) -> + error e.at "illegal ternary vector instruction" | VecConvert (V128 (I8x16 _)) -> error e.at "illegal i8x16 conversion instruction" diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index f6c9ac696..b2d7803e4 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -61,11 +61,11 @@ struct | AddSatS | AddSatU | SubSatS | SubSatU | DotS | Q15MulRSatS | ExtMulLowS | ExtMulHighS | ExtMulLowU | ExtMulHighU | Swizzle | Shuffle of int list | NarrowS | NarrowU - | RelaxedSwizzle | RelaxedQ15MulRS + | RelaxedSwizzle | RelaxedQ15MulRS | RelaxedDot type fbinop = Add | Sub | Mul | Div | Min | Max | Pmin | Pmax | RelaxedMin | RelaxedMax - type iternop = RelaxedLaneselect - type fternop = RelaxedFma | RelaxedFms + type iternop = RelaxedLaneselect | RelaxedDotAccum + type fternop = RelaxedFma | RelaxedFnma | RelaxedDotAccum type irelop = Eq | Ne | LtS | LtU | LeS | LeU | GtS | GtU | GeS | GeU type frelop = Eq | Ne | Lt | Le | Gt | Ge type icvtop = ExtendLowS | ExtendLowU | ExtendHighS | ExtendHighU diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index fc135534a..60f5a9d6e 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -512,10 +512,13 @@ let i32x4_relaxed_trunc_f64x2_u_zero = VecConvert (V128 (I32x4 V128Op.RelaxedTru let i32x4_relaxed_laneselect = VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) let i64x2_relaxed_laneselect = VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) let f32x4_relaxed_fma = VecTernary (V128 (F32x4 V128Op.RelaxedFma)) -let f32x4_relaxed_fms = VecTernary (V128 (F32x4 V128Op.RelaxedFms)) +let f32x4_relaxed_fnma = VecTernary (V128 (F32x4 V128Op.RelaxedFnma)) let f32x4_relaxed_min = VecBinary (V128 (F32x4 V128Op.RelaxedMin)) let f32x4_relaxed_max = VecBinary (V128 (F32x4 V128Op.RelaxedMax)) let f64x2_relaxed_fma = VecTernary (V128 (F64x2 V128Op.RelaxedFma)) -let f64x2_relaxed_fms = VecTernary (V128 (F64x2 V128Op.RelaxedFms)) +let f64x2_relaxed_fnma = VecTernary (V128 (F64x2 V128Op.RelaxedFnma)) let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) +let i16x8_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) +let i32x4_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) +let f32x4_relaxed_dot_bf16x8_add_f32x4 = VecTernary (V128 (F32x4 V128Op.RelaxedDotAccum)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 7d67a9777..c3997d4c6 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -213,6 +213,10 @@ struct | "32x4" -> "64x2" | _ -> assert false + let without_high_bit = function + | "8x16" -> "7x16" + | _ -> assert false + let voidop xxxx = function (_ : void) -> . let itestop xxxx (op : itestop) = match op with @@ -257,9 +261,11 @@ struct | Swizzle -> "swizzle" | RelaxedSwizzle -> "relaxed_swizzle" | RelaxedQ15MulRS -> "relaxed_q15mulr_s" + | RelaxedDot -> "relaxed_dot_i" ^ half xxxx ^ "_i" ^ without_high_bit (half xxxx) ^ "_s" let iternop xxxx (op : iternop) = match op with | RelaxedLaneselect -> "relaxed_laneselect" + | RelaxedDotAccum -> "relaxed_dot_i" ^ half (half xxxx) ^ "_i" ^ without_high_bit (half (half xxxx)) ^ "add_s" let fbinop xxxx (op : fbinop) = match op with | Add -> "add" @@ -275,7 +281,8 @@ struct let fternop xxxx (op : fternop) = match op with | RelaxedFma -> "relaxed_fma" - | RelaxedFms -> "relaxed_fms" + | RelaxedFnma-> "relaxed_fnma" + | RelaxedDotAccum -> "relaxed_dot_bf" ^ half (half xxxx) ^ "_add_" ^ xxxx let irelop xxxx (op : irelop) = match op with | Eq -> "eq" diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index c969842a7..82da94df9 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -660,8 +660,8 @@ rule token = parse | "i32x4.relaxed_trunc_f64x2_s_zero" -> VEC_UNARY i32x4_relaxed_trunc_f64x2_s_zero | "f32x4.relaxed_fma" -> VEC_UNARY f32x4_relaxed_fma | "f64x2.relaxed_fma" -> VEC_UNARY f64x2_relaxed_fma - | "f32x4.relaxed_fms" -> VEC_UNARY f32x4_relaxed_fms - | "f64x2.relaxed_fms" -> VEC_UNARY f64x2_relaxed_fms + | "f32x4.relaxed_fnma" -> VEC_UNARY f32x4_relaxed_fnma + | "f64x2.relaxed_fnma" -> VEC_UNARY f64x2_relaxed_fnma | "i8x16.relaxed_laneselect" -> VEC_TERNARY i8x16_relaxed_laneselect | "i16x8.relaxed_laneselect" -> VEC_TERNARY i16x8_relaxed_laneselect | "i32x4.relaxed_laneselect" -> VEC_TERNARY i32x4_relaxed_laneselect @@ -671,6 +671,9 @@ rule token = parse | "f32x4.relaxed_max" -> VEC_UNARY f32x4_relaxed_max | "f64x2.relaxed_max" -> VEC_UNARY f64x2_relaxed_max | "i16x8.relaxed_q15mulr_s" -> VEC_BINARY i16x8_relaxed_q15mulr_s + | "i16x8.dot_i8x16_i7x16_s" -> VEC_BINARY i16x8_dot_i8x16_i7x16_s + | "i32x4.dot_i8x16_i7x16_add_s" -> VEC_BINARY i32x4_dot_i8x16_i7x16_add_s + | "f32x4.relaxed_dot_bf16x8_add_f32x4" -> VEC_BINARY f32x4_relaxed_dot_bf16x8_add_f32x4 | "type" -> TYPE | "func" -> FUNC diff --git a/test/core/relaxed-simd/relaxed_fma_fms.wast b/test/core/relaxed-simd/relaxed_fma_fms.wast index d895d88d6..03666a02a 100644 --- a/test/core/relaxed-simd/relaxed_fma_fms.wast +++ b/test/core/relaxed-simd/relaxed_fma_fms.wast @@ -1,9 +1,9 @@ -;; Tests for f32x4.relaxed_fma, f32x4.relaxed_fms, f64x2.relaxed_fma, and f64x2.relaxed_fms. +;; Tests for f32x4.relaxed_fma, f32x4.relaxed_fnma, f64x2.relaxed_fma, and f64x2.relaxed_fnma. (module (func (export "f32x4.relaxed_fma") (param v128 v128 v128) (result v128) (f32x4.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) - (func (export "f32x4.relaxed_fms") (param v128 v128 v128) (result v128) (f32x4.relaxed_fms (local.get 0) (local.get 1) (local.get 2))) - (func (export "f64x2.relaxed_fms") (param v128 v128 v128) (result v128) (f64x2.relaxed_fms (local.get 0) (local.get 1) (local.get 2))) + (func (export "f32x4.relaxed_fnma") (param v128 v128 v128) (result v128) (f32x4.relaxed_fnma (local.get 0) (local.get 1) (local.get 2))) + (func (export "f64x2.relaxed_fnma") (param v128 v128 v128) (result v128) (f64x2.relaxed_fnma (local.get 0) (local.get 1) (local.get 2))) (func (export "f64x2.relaxed_fma") (param v128 v128 v128) (result v128) (f64x2.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) ) @@ -35,7 +35,7 @@ (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) (v128.const f32x4 0 0 0 0))) -(assert_return (invoke "f32x4.relaxed_fms" +(assert_return (invoke "f32x4.relaxed_fnma" (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) @@ -70,7 +70,7 @@ (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) -(assert_return (invoke "f64x2.relaxed_fms" +(assert_return (invoke "f64x2.relaxed_fnma" (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) From 0f19aecbbf3a05c285f7e3e9d7f8150182ce85a0 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:19:21 +0000 Subject: [PATCH 059/230] Rename fma test file --- .../relaxed-simd/{relaxed_fma_fms.wast => relaxed_fma_fnma.wast} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/core/relaxed-simd/{relaxed_fma_fms.wast => relaxed_fma_fnma.wast} (100%) diff --git a/test/core/relaxed-simd/relaxed_fma_fms.wast b/test/core/relaxed-simd/relaxed_fma_fnma.wast similarity index 100% rename from test/core/relaxed-simd/relaxed_fma_fms.wast rename to test/core/relaxed-simd/relaxed_fma_fnma.wast From c37343389e2b34ad425adcfa388b85c6b511dcf2 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:10:34 +0000 Subject: [PATCH 060/230] Fix to instruction names in overview and implementation status --- .../relaxed-simd/ImplementationStatus.md | 92 +++++++++---------- proposals/relaxed-simd/Overview.md | 48 +++++----- 2 files changed, 70 insertions(+), 70 deletions(-) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index 6e6acfaaa..59bcf0bc0 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -1,28 +1,28 @@ ## Implementation in LLVM and various engines -| Instruction | LLVM [1] | V8 [2] | SpiderMonkey [3] | -|--------------------------------------|----------------|--------------------|--------------------| -| `relaxed i8x16.swizzle` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `relaxed i32x4.trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i8x16.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i16x8.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i32x4.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i64x2.laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `i16x8.relaxed_q15mulr_s` | -mrelaxed-simd | | | -| `i16x8.dot_i8x16_i7x16_s` | -mrelaxed-simd | | | -| `i32x4.dot_i8x16_i7x16_add_s` | -mrelaxed-simd | | | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | -mrelaxed-simd | | | +| Instruction | LLVM [1] | V8 [2] | SpiderMonkey [3] | +|---------------------------------------|----------------|--------------------|--------------------| +| `i8x16.relaxed_swizzle` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.relaxed_trunc_f32x4_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.relaxed_trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.relaxed_trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.relaxed_trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i8x16.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i32x4.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i64x2.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_min` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_max` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `i16x8.relaxed_q15mulr_s` | -mrelaxed-simd | | | +| `i16x8.relaxed_dot_i8x16_i7x16_s` | -mrelaxed-simd | | | +| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | -mrelaxed-simd | | | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | -mrelaxed-simd | | | [1] Tip of tree LLVM as of 2021-10-28 @@ -33,26 +33,26 @@ ## Name of builtins in LLVM -| Instruction | LLVM | -|--------------------------------------|---------------------------------------------------| -| `relaxed i8x16.swizzle` | `__builtin_wasm_relaxed_swizzle_i8x16` | -| `relaxed i32x4.trunc_f32x4_s` | `__builtin_wasm_relaxed_trunc_s_i32x4_f32x4` | -| `relaxed i32x4.trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | -| `relaxed i32x4.trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | -| `relaxed i32x4.trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | -| `f32x4.fma` | `__builtin_wasm_fma_f32x4` | -| `f32x4.fnma` | `__builtin_wasm_fnma_f32x4` | -| `f64x2.fma` | `__builtin_wasm_fma_f64x2` | -| `f64x2.fnma` | `__builtin_wasm_fnma_f64x2` | -| `i8x16.laneselect` | `__builtin_wasm_laneselect_i8x16` | -| `i16x8.laneselect` | `__builtin_wasm_laneselect_i16x8` | -| `i32x4.laneselect` | `__builtin_wasm_laneselect_i32x4` | -| `i64x2.laneselect` | `__builtin_wasm_laneselect_i64x2` | -| `f32x4.min` | `__builtin_wasm_relaxed_min_f32x4` | -| `f32x4.max` | `__builtin_wasm_relaxed_max_f32x4` | -| `f64x2.min` | `__builtin_wasm_relaxed_min_f64x2` | -| `f64x2.max` | `__builtin_wasm_relaxed_max_f64x2` | -| `i16x8.relaxed_q15mulr_s` | `__builtin_wasm_relaxed_q15mulr_s_i16x8` | -| `i16x8.dot_i8x16_i7x16_s` | `__builtin_wasm_dot_i8x16_i7x16_s_i16x8` | -| `i32x4.dot_i8x16_i7x16_add_s` | `__builtin_wasm_dot_i8x16_i7x16_add_s_i32x4` | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | `__builtin_wasm_relaxed_dot_bf16x8_add_f32_f32x4` | +| Instruction | LLVM | +|---------------------------------------|---------------------------------------------------| +| `i8x16.relaxed_swizzle` | `__builtin_wasm_relaxed_swizzle_i8x16` | +| `i32x4.relaxed_trunc_f32x4_s` | `__builtin_wasm_relaxed_trunc_s_i32x4_f32x4` | +| `i32x4.relaxed_trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | +| `i32x4.relaxed_trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | +| `i32x4.relaxed_trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | +| `f32x4.relaxed_fma` | `__builtin_wasm_fma_f32x4` | +| `f32x4.relaxed_fnma` | `__builtin_wasm_fnma_f32x4` | +| `f64x2.relaxed_fma` | `__builtin_wasm_fma_f64x2` | +| `f64x2.relaxed_fnma` | `__builtin_wasm_fnma_f64x2` | +| `i8x16.relaxed_laneselect` | `__builtin_wasm_laneselect_i8x16` | +| `i16x8.relaxed_laneselect` | `__builtin_wasm_laneselect_i16x8` | +| `i32x4.relaxed_laneselect` | `__builtin_wasm_laneselect_i32x4` | +| `i64x2.relaxed_laneselect` | `__builtin_wasm_laneselect_i64x2` | +| `f32x4.relaxed_min` | `__builtin_wasm_relaxed_min_f32x4` | +| `f32x4.relaxed_max` | `__builtin_wasm_relaxed_max_f32x4` | +| `f64x2.relaxed_min` | `__builtin_wasm_relaxed_min_f64x2` | +| `f64x2.relaxed_max` | `__builtin_wasm_relaxed_max_f64x2` | +| `i16x8.relaxed_q15mulr_s` | `__builtin_wasm_relaxed_q15mulr_s_i16x8` | +| `i16x8.relaxed_dot_i8x16_i7x16_s` | `__builtin_wasm_dot_i8x16_i7x16_s_i16x8` | +| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | `__builtin_wasm_dot_i8x16_i7x16_add_s_i32x4` | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | `__builtin_wasm_relaxed_dot_bf16x8_add_f32_f32x4` | diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 27d45bb74..f11f990e6 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -316,30 +316,30 @@ where chosen to fit into the holes in the opcode space of SIMD proposal. Going forward, the opcodes for relaxed-simd specification will be the ones in the "opcode" column, and it will take some time for tools and engines to update. -| instruction | opcode | prototype opcode | -| ------------------------------------ | -------------- | ---------------- | -| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | -| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | -| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | -| `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | -| `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | -| `f32x4.relaxed_fma` | 0x105 | 0xaf | -| `f32x4.relaxed_fnma` | 0x106 | 0xb0 | -| `f64x2.relaxed_fma` | 0x107 | 0xcf | -| `f64x2.relaxed_fnma` | 0x108 | 0xd0 | -| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | -| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | -| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | -| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | -| `f32x4.relaxed_min` | 0x10d | 0xb4 | -| `f32x4.relaxed_max` | 0x10e | 0xe2 | -| `f64x2.relaxed_min` | 0x10f | 0xd4 | -| `f64x2.relaxed_max` | 0x110 | 0xee | -| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | -| `i16x8.dot_i8x16_i7x16_s` | 0x112 | unimplemented | -| `i32x4.dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | unimplemented | -| Reserved | 0x115 - 0x12F | | +| instruction | opcode | prototype opcode | +| ------------------------------------- | -------------- | ---------------- | +| `i8x16.relaxed_swizzle` | 0x100 | 0xa2 | +| `i32x4.relaxed_trunc_f32x4_s` | 0x101 | 0xa5 | +| `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | +| `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | +| `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | +| `f32x4.relaxed_fma` | 0x105 | 0xaf | +| `f32x4.relaxed_fnma` | 0x106 | 0xb0 | +| `f64x2.relaxed_fma` | 0x107 | 0xcf | +| `f64x2.relaxed_fnma` | 0x108 | 0xd0 | +| `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | +| `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | +| `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | +| `i64x2.relaxed_laneselect` | 0x10c | 0xd3 | +| `f32x4.relaxed_min` | 0x10d | 0xb4 | +| `f32x4.relaxed_max` | 0x10e | 0xe2 | +| `f64x2.relaxed_min` | 0x10f | 0xd4 | +| `f64x2.relaxed_max` | 0x110 | 0xee | +| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | +| `i16x8.relaxed_dot_i8x16_i7x16_s` | 0x112 | unimplemented | +| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | unimplemented | +| Reserved | 0x115 - 0x12F | | ## References From fda767d358d08f7248485e38b142cdb06e055070 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:30:13 +0000 Subject: [PATCH 061/230] Update prototype opcodes --- proposals/relaxed-simd/Overview.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index f11f990e6..34d18cb69 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -335,10 +335,10 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `f32x4.relaxed_max` | 0x10e | 0xe2 | | `f64x2.relaxed_min` | 0x10f | 0xd4 | | `f64x2.relaxed_max` | 0x110 | 0xee | -| `i16x8.relaxed_q15mulr_s` | 0x111 | unimplemented | -| `i16x8.relaxed_dot_i8x16_i7x16_s` | 0x112 | unimplemented | -| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | 0x113 | unimplemented | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | unimplemented | +| `i16x8.relaxed_q15mulr_s` | 0x111 | 0x111 | +| `i16x8.relaxed_dot_i8x16_i7x16_s` | 0x112 | 0x112 | +| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | 0x113 | 0x113 | +| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | 0x114 | | Reserved | 0x115 - 0x12F | | ## References From 5b727ca3ede5cc565ea1a97eec793539cc5751a5 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 24 Oct 2022 21:50:21 +0000 Subject: [PATCH 062/230] Add link to phase 3 to overview --- proposals/relaxed-simd/Overview.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 34d18cb69..5a17a9ff0 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -351,4 +351,8 @@ forward, the opcodes for relaxed-simd specification will be the ones in the [slides](https://docs.google.com/presentation/d/1zyRqfgGU7HdoVw9QiKaVYifozbytPhNLHUW9jQjPzLk/edit?usp=sharing) and [meeting notes](https://github.com/WebAssembly/meetings/blob/main/main/2021/CG-11-09.md#update-on-relaxed-simd-fpenv-discussions-and-poll-for-phase-2-zhi-an-ng-15-min) +- Poll for phase 3 + [slides](https://docs.google.com/presentation/d/1ofBkgbW2AjYM4oayjTPTH3PCbyEn6W-q3GN67qSEigQ/edit?usp=sharing) + and [meeting + notes](https://github.com/WebAssembly/meetings/blob/main/main/2022/CG-04-12.md) - [SIMD proposal](https://github.com/WebAssembly/simd) From d0fbbe7b1d3c2cabf8409a48f70c94956ebfbe7f Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Mon, 24 Oct 2022 16:25:57 -0700 Subject: [PATCH 063/230] Update Overview.md with implementation status (#30) --- proposals/memory64/Overview.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 088b73ac0..3baf04d31 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -6,6 +6,16 @@ This page describes a proposal to support linear memory of sizes larger than 232 bits. It provides no new instructions, but instead extends the currently existing instructions to allow 64-bit indexes. +### Implementation Status + +- spec interpreter: Done +- v8/chrome: [Done](https://chromium-review.googlesource.com/c/v8/v8/+/2679683) +- Firefox: Done +- Safari: ? +- wabt: [Done](https://github.com/WebAssembly/wabt/pull/1500) +- binaryen: [Done](https://github.com/WebAssembly/binaryen/pull/3202) +- emscripten: [Done](https://github.com/emscripten-core/emscripten/pull/17803) + ## Motivation [WebAssembly linear memory objects][memory object] have sizes measured in From 484c78b97a83bdf696e5b4918ebb0a292ba321d6 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 25 Oct 2022 21:50:23 +0000 Subject: [PATCH 064/230] Rename relaxed_fma to relaxed_madd (fnma to nmadd) --- interpreter/binary/encode.ml | 8 +++---- interpreter/syntax/ast.ml | 2 +- interpreter/syntax/operators.ml | 8 +++---- interpreter/text/arrange.ml | 4 ++-- interpreter/text/lexer.mll | 8 +++---- .../relaxed-simd/ImplementationStatus.md | 16 ++++++------- proposals/relaxed-simd/Overview.md | 24 +++++++++---------- ..._fma_fnma.wast => relaxed_madd_nmadd.wast} | 22 ++++++++--------- 8 files changed, 46 insertions(+), 46 deletions(-) rename test/core/relaxed-simd/{relaxed_fma_fnma.wast => relaxed_madd_nmadd.wast} (79%) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index b61fb29ec..2f2648336 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -647,10 +647,10 @@ struct | VecBinary (V128 _) -> error e.at "illegal binary vector instruction" - | VecTernary (V128 (F32x4 V128Op.RelaxedFma)) -> vecop 0x105l - | VecTernary (V128 (F32x4 V128Op.RelaxedFnma)) -> vecop 0x106l - | VecTernary (V128 (F64x2 V128Op.RelaxedFma)) -> vecop 0x107l - | VecTernary (V128 (F64x2 V128Op.RelaxedFnma)) -> vecop 0x108l + | VecTernary (V128 (F32x4 V128Op.RelaxedMadd)) -> vecop 0x105l + | VecTernary (V128 (F32x4 V128Op.RelaxedNmadd)) -> vecop 0x106l + | VecTernary (V128 (F64x2 V128Op.RelaxedMadd)) -> vecop 0x107l + | VecTernary (V128 (F64x2 V128Op.RelaxedNmadd)) -> vecop 0x108l | VecTernary (V128 (I8x16 V128Op.RelaxedLaneselect)) -> vecop 0x109l | VecTernary (V128 (I16x8 V128Op.RelaxedLaneselect)) -> vecop 0x10al | VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) -> vecop 0x10bl diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index b2d7803e4..4f4f9d68b 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -65,7 +65,7 @@ struct type fbinop = Add | Sub | Mul | Div | Min | Max | Pmin | Pmax | RelaxedMin | RelaxedMax type iternop = RelaxedLaneselect | RelaxedDotAccum - type fternop = RelaxedFma | RelaxedFnma | RelaxedDotAccum + type fternop = RelaxedMadd | RelaxedNmadd | RelaxedDotAccum type irelop = Eq | Ne | LtS | LtU | LeS | LeU | GtS | GtU | GeS | GeU type frelop = Eq | Ne | Lt | Le | Gt | Ge type icvtop = ExtendLowS | ExtendLowU | ExtendHighS | ExtendHighU diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 60f5a9d6e..33fe9f248 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -511,12 +511,12 @@ let i32x4_relaxed_trunc_f64x2_s_zero = VecConvert (V128 (I32x4 V128Op.RelaxedTru let i32x4_relaxed_trunc_f64x2_u_zero = VecConvert (V128 (I32x4 V128Op.RelaxedTruncUZeroF64x2)) let i32x4_relaxed_laneselect = VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) let i64x2_relaxed_laneselect = VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) -let f32x4_relaxed_fma = VecTernary (V128 (F32x4 V128Op.RelaxedFma)) -let f32x4_relaxed_fnma = VecTernary (V128 (F32x4 V128Op.RelaxedFnma)) +let f32x4_relaxed_madd = VecTernary (V128 (F32x4 V128Op.RelaxedMadd)) +let f32x4_relaxed_nmadd = VecTernary (V128 (F32x4 V128Op.RelaxedNmadd)) let f32x4_relaxed_min = VecBinary (V128 (F32x4 V128Op.RelaxedMin)) let f32x4_relaxed_max = VecBinary (V128 (F32x4 V128Op.RelaxedMax)) -let f64x2_relaxed_fma = VecTernary (V128 (F64x2 V128Op.RelaxedFma)) -let f64x2_relaxed_fnma = VecTernary (V128 (F64x2 V128Op.RelaxedFnma)) +let f64x2_relaxed_madd = VecTernary (V128 (F64x2 V128Op.RelaxedMadd)) +let f64x2_relaxed_nmadd = VecTernary (V128 (F64x2 V128Op.RelaxedNmadd)) let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) let i16x8_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index c3997d4c6..1f52eb446 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -280,8 +280,8 @@ struct | RelaxedMax -> "relaxed_max" let fternop xxxx (op : fternop) = match op with - | RelaxedFma -> "relaxed_fma" - | RelaxedFnma-> "relaxed_fnma" + | RelaxedMadd -> "relaxed_madd" + | RelaxedNmadd-> "relaxed_nmadd" | RelaxedDotAccum -> "relaxed_dot_bf" ^ half (half xxxx) ^ "_add_" ^ xxxx let irelop xxxx (op : irelop) = match op with diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index 82da94df9..e3e0e064a 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -658,10 +658,10 @@ rule token = parse | "i32x4.relaxed_trunc_f32x4_s" -> VEC_UNARY i32x4_relaxed_trunc_f32x4_s | "i32x4.relaxed_trunc_f64x2_u_zero" -> VEC_UNARY i32x4_relaxed_trunc_f64x2_u_zero | "i32x4.relaxed_trunc_f64x2_s_zero" -> VEC_UNARY i32x4_relaxed_trunc_f64x2_s_zero - | "f32x4.relaxed_fma" -> VEC_UNARY f32x4_relaxed_fma - | "f64x2.relaxed_fma" -> VEC_UNARY f64x2_relaxed_fma - | "f32x4.relaxed_fnma" -> VEC_UNARY f32x4_relaxed_fnma - | "f64x2.relaxed_fnma" -> VEC_UNARY f64x2_relaxed_fnma + | "f32x4.relaxed_madd" -> VEC_UNARY f32x4_relaxed_madd + | "f64x2.relaxed_madd" -> VEC_UNARY f64x2_relaxed_madd + | "f32x4.relaxed_nmadd" -> VEC_UNARY f32x4_relaxed_nmadd + | "f64x2.relaxed_nmadd" -> VEC_UNARY f64x2_relaxed_nmadd | "i8x16.relaxed_laneselect" -> VEC_TERNARY i8x16_relaxed_laneselect | "i16x8.relaxed_laneselect" -> VEC_TERNARY i16x8_relaxed_laneselect | "i32x4.relaxed_laneselect" -> VEC_TERNARY i32x4_relaxed_laneselect diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index 59bcf0bc0..14d4f6b0a 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -7,10 +7,10 @@ | `i32x4.relaxed_trunc_f32x4_u` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `i32x4.relaxed_trunc_f64x2_s_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `i32x4.relaxed_trunc_f64x2_u_zero` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.relaxed_fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f32x4.relaxed_fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.relaxed_fma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | -| `f64x2.relaxed_fnma` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_madd` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f32x4.relaxed_nmadd` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_madd` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | +| `f64x2.relaxed_nmadd` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `i8x16.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `i16x8.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | | `i32x4.relaxed_laneselect` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: | @@ -40,10 +40,10 @@ | `i32x4.relaxed_trunc_f32x4_u` | `__builtin_wasm_relaxed_trunc_u_i32x4_f32x4` | | `i32x4.relaxed_trunc_f64x2_s_zero` | `__builtin_wasm_relaxed_trunc_zero_s_i32x4_f64x2` | | `i32x4.relaxed_trunc_f64x2_u_zero` | `__builtin_wasm_relaxed_trunc_zero_u_i32x4_f64x2` | -| `f32x4.relaxed_fma` | `__builtin_wasm_fma_f32x4` | -| `f32x4.relaxed_fnma` | `__builtin_wasm_fnma_f32x4` | -| `f64x2.relaxed_fma` | `__builtin_wasm_fma_f64x2` | -| `f64x2.relaxed_fnma` | `__builtin_wasm_fnma_f64x2` | +| `f32x4.relaxed_madd` | `__builtin_wasm_fma_f32x4` | +| `f32x4.relaxed_nmadd` | `__builtin_wasm_fnma_f32x4` | +| `f64x2.relaxed_madd` | `__builtin_wasm_fma_f64x2` | +| `f64x2.relaxed_nmadd` | `__builtin_wasm_fnma_f64x2` | | `i8x16.relaxed_laneselect` | `__builtin_wasm_laneselect_i8x16` | | `i16x8.relaxed_laneselect` | `__builtin_wasm_laneselect_i16x8` | | `i32x4.relaxed_laneselect` | `__builtin_wasm_laneselect_i32x4` | diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 5a17a9ff0..b1d17cec5 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -165,17 +165,17 @@ def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4: ### Relaxed fused multiply-add and fused negative multiply-add -- `relaxed f32x4.fma` -- `relaxed f32x4.fnma` -- `relaxed f64x2.fma` -- `relaxed f64x2.fnma` +- `relaxed f32x4.madd` +- `relaxed f32x4.nmadd` +- `relaxed f64x2.madd` +- `relaxed f64x2.nmadd` All the instructions take 3 operands, `a`, `b`, `c`, perform `a * b + c` or `-(a * b) + c`: -- `relaxed f32x4.fma(a, b, c) = a * b + c` -- `relaxed f32x4.fnma(a, b, c) = -(a * b) + c` -- `relaxed f64x2.fma(a, b, c) = a * b + c` -- `relaxed f64x2.fnma(a, b, c) = -(a * b) + c` +- `relaxed f32x4.madd(a, b, c) = a * b + c` +- `relaxed f32x4.nmadd(a, b, c) = -(a * b) + c` +- `relaxed f64x2.madd(a, b, c) = a * b + c` +- `relaxed f64x2.nmadd(a, b, c) = -(a * b) + c` where: @@ -323,10 +323,10 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `i32x4.relaxed_trunc_f32x4_u` | 0x102 | 0xa6 | | `i32x4.relaxed_trunc_f64x2_s_zero` | 0x103 | 0xc5 | | `i32x4.relaxed_trunc_f64x2_u_zero` | 0x104 | 0xc6 | -| `f32x4.relaxed_fma` | 0x105 | 0xaf | -| `f32x4.relaxed_fnma` | 0x106 | 0xb0 | -| `f64x2.relaxed_fma` | 0x107 | 0xcf | -| `f64x2.relaxed_fnma` | 0x108 | 0xd0 | +| `f32x4.relaxed_madd` | 0x105 | 0xaf | +| `f32x4.relaxed_nmadd` | 0x106 | 0xb0 | +| `f64x2.relaxed_madd` | 0x107 | 0xcf | +| `f64x2.relaxed_nmadd` | 0x108 | 0xd0 | | `i8x16.relaxed_laneselect` | 0x109 | 0xb2 | | `i16x8.relaxed_laneselect` | 0x10a | 0xb3 | | `i32x4.relaxed_laneselect` | 0x10b | 0xd2 | diff --git a/test/core/relaxed-simd/relaxed_fma_fnma.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast similarity index 79% rename from test/core/relaxed-simd/relaxed_fma_fnma.wast rename to test/core/relaxed-simd/relaxed_madd_nmadd.wast index 03666a02a..d212d53fc 100644 --- a/test/core/relaxed-simd/relaxed_fma_fnma.wast +++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast @@ -1,10 +1,10 @@ -;; Tests for f32x4.relaxed_fma, f32x4.relaxed_fnma, f64x2.relaxed_fma, and f64x2.relaxed_fnma. +;; Tests for f32x4.relaxed_madd, f32x4.relaxed_nmadd, f64x2.relaxed_madd, and f64x2.relaxed_nmadd. (module - (func (export "f32x4.relaxed_fma") (param v128 v128 v128) (result v128) (f32x4.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) - (func (export "f32x4.relaxed_fnma") (param v128 v128 v128) (result v128) (f32x4.relaxed_fnma (local.get 0) (local.get 1) (local.get 2))) - (func (export "f64x2.relaxed_fnma") (param v128 v128 v128) (result v128) (f64x2.relaxed_fnma (local.get 0) (local.get 1) (local.get 2))) - (func (export "f64x2.relaxed_fma") (param v128 v128 v128) (result v128) (f64x2.relaxed_fma (local.get 0) (local.get 1) (local.get 2))) + (func (export "f32x4.relaxed_madd") (param v128 v128 v128) (result v128) (f32x4.relaxed_madd (local.get 0) (local.get 1) (local.get 2))) + (func (export "f32x4.relaxed_nmadd") (param v128 v128 v128) (result v128) (f32x4.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2))) + (func (export "f64x2.relaxed_nmadd") (param v128 v128 v128) (result v128) (f64x2.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2))) + (func (export "f64x2.relaxed_madd") (param v128 v128 v128) (result v128) (f64x2.relaxed_madd (local.get 0) (local.get 1) (local.get 2))) ) @@ -13,7 +13,7 @@ ;; FLT_MAX (if fma) ;; 0 (if no fma) ;; from https://www.vinc17.net/software/fma-tests.c -(assert_return (invoke "f32x4.relaxed_fma" +(assert_return (invoke "f32x4.relaxed_madd" (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 ) (v128.const f32x4 2.0 2.0 2.0 2.0) (v128.const f32x4 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127)) @@ -29,13 +29,13 @@ ;; x.y+z = 0 (2 roundings) ;; fma(x, y, z) = (0x1p-37) 2^-37 ;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information -(assert_return (invoke "f32x4.relaxed_fma" +(assert_return (invoke "f32x4.relaxed_madd" (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) (v128.const f32x4 0 0 0 0))) -(assert_return (invoke "f32x4.relaxed_fnma" +(assert_return (invoke "f32x4.relaxed_nmadd" (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) @@ -48,7 +48,7 @@ ;; 0 (if no fma) ;; form https://www.vinc17.net/software/fma-tests.c ;; from https://www.vinc17.net/software/fma-tests.c -(assert_return (invoke "f64x2.relaxed_fma" +(assert_return (invoke "f64x2.relaxed_madd" (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) (v128.const f64x2 2.0 2.0) (v128.const f64x2 -0x1.fffffffffffffp+1023 -0x1.fffffffffffffp+1023)) @@ -64,13 +64,13 @@ ;; x.y+z = 0 (2 roundings) ;; fma(x, y, z) = 0x1p-53 ;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information -(assert_return (invoke "f64x2.relaxed_fma" +(assert_return (invoke "f64x2.relaxed_madd" (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) -(assert_return (invoke "f64x2.relaxed_fnma" +(assert_return (invoke "f64x2.relaxed_nmadd" (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) From c199565743b079b61c1229b66ae694e4f420fc98 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 6 Dec 2022 20:57:02 +0000 Subject: [PATCH 065/230] Remove bf16 from overview and implementation status --- .../relaxed-simd/ImplementationStatus.md | 2 -- proposals/relaxed-simd/Overview.md | 30 +------------------ 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md index 14d4f6b0a..e621fcf19 100644 --- a/proposals/relaxed-simd/ImplementationStatus.md +++ b/proposals/relaxed-simd/ImplementationStatus.md @@ -22,7 +22,6 @@ | `i16x8.relaxed_q15mulr_s` | -mrelaxed-simd | | | | `i16x8.relaxed_dot_i8x16_i7x16_s` | -mrelaxed-simd | | | | `i32x4.relaxed_dot_i8x16_i7x16_add_s` | -mrelaxed-simd | | | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | -mrelaxed-simd | | | [1] Tip of tree LLVM as of 2021-10-28 @@ -55,4 +54,3 @@ | `i16x8.relaxed_q15mulr_s` | `__builtin_wasm_relaxed_q15mulr_s_i16x8` | | `i16x8.relaxed_dot_i8x16_i7x16_s` | `__builtin_wasm_dot_i8x16_i7x16_s_i16x8` | | `i32x4.relaxed_dot_i8x16_i7x16_add_s` | `__builtin_wasm_dot_i8x16_i7x16_add_s_i32x4` | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | `__builtin_wasm_relaxed_dot_bf16x8_add_f32_f32x4` | diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index b1d17cec5..4278cb930 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -279,33 +279,6 @@ i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=True, elements=4, a, b, c) ``` -### Relaxed BFloat16 dot product - -- `f32x4.relaxed_dot_bf16x8_add_f32x4(a: v128, b: v128, c: v128) -> v128` - -BFloat16 is a 16-bit floating-point format that represents the IEEE FP32 numbers -truncated to the high 16 bits. This instruction computes a FP32 dot product of 2 -BFloat16 with accumulation into another FP32. - -```python -def bfloat16_dot_product(a, b, c): - for i in range(8): - y.fp32[i] = - y.fp32[i] + - cast(a.bf16[2*i]) * cast(b.bf16[2*i]) + - cast(a.bf16[2*i+1]) * cast(b.bf16[2*i+1]) -``` - -This instruction is implementation defined in the following ways: - -- evaluation order - - can compute dot product in one step, then accumulation in another, or - - accumulate first product in one step, then accumulate second product in - another step -- fusion, the steps described above can be both fused or both unfused -- the intermediate results can be Round-to-Nearest-Even or Round-to-Odd. - - ## Binary format All opcodes have the `0xfd` prefix (same as SIMD proposal), which are omitted in the table below. @@ -338,8 +311,7 @@ forward, the opcodes for relaxed-simd specification will be the ones in the | `i16x8.relaxed_q15mulr_s` | 0x111 | 0x111 | | `i16x8.relaxed_dot_i8x16_i7x16_s` | 0x112 | 0x112 | | `i32x4.relaxed_dot_i8x16_i7x16_add_s` | 0x113 | 0x113 | -| `f32x4.relaxed_dot_bf16x8_add_f32x4` | 0x114 | 0x114 | -| Reserved | 0x115 - 0x12F | | +| Reserved | 0x114 - 0x12F | | ## References From 22eb1c0db9b6957502c7ee322899fb10f26398ad Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 18:22:06 +0000 Subject: [PATCH 066/230] Remove bf16 dot For #117 --- interpreter/binary/encode.ml | 1 - interpreter/syntax/ast.ml | 2 +- interpreter/syntax/operators.ml | 1 - interpreter/text/arrange.ml | 1 - interpreter/text/lexer.mll | 1 - test/core/relaxed-simd/relaxed_dot_product.wast | 9 --------- 6 files changed, 1 insertion(+), 14 deletions(-) diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 2f2648336..352338568 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -656,7 +656,6 @@ struct | VecTernary (V128 (I32x4 V128Op.RelaxedLaneselect)) -> vecop 0x10bl | VecTernary (V128 (I64x2 V128Op.RelaxedLaneselect)) -> vecop 0x10cl | VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) -> vecop 0x113l - | VecTernary (V128 (F32x4 V128Op.RelaxedDotAccum)) -> vecop 0x114l | VecTernary (V128 _) -> error e.at "illegal ternary vector instruction" diff --git a/interpreter/syntax/ast.ml b/interpreter/syntax/ast.ml index 4f4f9d68b..30f567990 100644 --- a/interpreter/syntax/ast.ml +++ b/interpreter/syntax/ast.ml @@ -65,7 +65,7 @@ struct type fbinop = Add | Sub | Mul | Div | Min | Max | Pmin | Pmax | RelaxedMin | RelaxedMax type iternop = RelaxedLaneselect | RelaxedDotAccum - type fternop = RelaxedMadd | RelaxedNmadd | RelaxedDotAccum + type fternop = RelaxedMadd | RelaxedNmadd type irelop = Eq | Ne | LtS | LtU | LeS | LeU | GtS | GtU | GeS | GeU type frelop = Eq | Ne | Lt | Le | Gt | Ge type icvtop = ExtendLowS | ExtendLowU | ExtendHighS | ExtendHighU diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 33fe9f248..66444caf9 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -521,4 +521,3 @@ let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) let i16x8_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) let i32x4_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) -let f32x4_relaxed_dot_bf16x8_add_f32x4 = VecTernary (V128 (F32x4 V128Op.RelaxedDotAccum)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 1f52eb446..c6704e30c 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -282,7 +282,6 @@ struct let fternop xxxx (op : fternop) = match op with | RelaxedMadd -> "relaxed_madd" | RelaxedNmadd-> "relaxed_nmadd" - | RelaxedDotAccum -> "relaxed_dot_bf" ^ half (half xxxx) ^ "_add_" ^ xxxx let irelop xxxx (op : irelop) = match op with | Eq -> "eq" diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index e3e0e064a..a8899c0af 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -673,7 +673,6 @@ rule token = parse | "i16x8.relaxed_q15mulr_s" -> VEC_BINARY i16x8_relaxed_q15mulr_s | "i16x8.dot_i8x16_i7x16_s" -> VEC_BINARY i16x8_dot_i8x16_i7x16_s | "i32x4.dot_i8x16_i7x16_add_s" -> VEC_BINARY i32x4_dot_i8x16_i7x16_add_s - | "f32x4.relaxed_dot_bf16x8_add_f32x4" -> VEC_BINARY f32x4_relaxed_dot_bf16x8_add_f32x4 | "type" -> TYPE | "func" -> FUNC diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index 245b1db17..e84dcf96d 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -3,7 +3,6 @@ (module (func (export "i16x8.dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.dot_i8x16_i7x16_s (local.get 0) (local.get 1))) (func (export "i32x4.dot_i8x16_i7x16_add_s") (param v128 v128 v128) (result v128) (i32x4.dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2))) - (func (export "f32x4.relaxed_dot_bf16x8_add_f32x4") (param v128 v128 v128) (result v128) (f32x4.relaxed_dot_bf16x8_add_f32x4 (local.get 0) (local.get 1) (local.get 2))) ) ;; Simple values to ensure things are functional. @@ -33,11 +32,3 @@ (v128.const i32x4 1 2 3 4)) ;; intermediate result is [-65024, 64516, 0, 0] (v128.const f32x4 -65023 64518 3 4)) - -;; Simple values to ensure things are functional. -(assert_return (invoke "f32x4.relaxed_dot_bf16x8_add_f32x4" - (v128.const i16x8 0x0000 0x3f80 0x4000 0x4040 0x4080 0x40a0 0x40c0 0x40e0) ;; [0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f] - (v128.const i16x8 0x0000 0x3f80 0x4000 0x4040 0x4080 0x40a0 0x40c0 0x40e0) - (v128.const f32x4 0 1 2 3)) - ;; intermediate result is [1, 13, 41, 85] - (v128.const f32x4 1 14 43 88)) From 5f39b1fd9472b1f8e91f6a1ef4b0ee10851e6227 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 18:26:02 +0000 Subject: [PATCH 067/230] Fix names of dot instructions For #117 --- interpreter/syntax/operators.ml | 4 ++-- interpreter/text/lexer.mll | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 66444caf9..7053793f2 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -519,5 +519,5 @@ let f64x2_relaxed_madd = VecTernary (V128 (F64x2 V128Op.RelaxedMadd)) let f64x2_relaxed_nmadd = VecTernary (V128 (F64x2 V128Op.RelaxedNmadd)) let f64x2_relaxed_min = VecBinary (V128 (F64x2 V128Op.RelaxedMin)) let f64x2_relaxed_max = VecBinary (V128 (F64x2 V128Op.RelaxedMax)) -let i16x8_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) -let i32x4_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) +let i16x8_relaxed_dot_i8x16_i7x16_s = VecBinary (V128 (I16x8 V128Op.RelaxedDot)) +let i32x4_relaxed_dot_i8x16_i7x16_add_s = VecTernary (V128 (I32x4 V128Op.RelaxedDotAccum)) diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index a8899c0af..75e9cfea8 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -671,8 +671,8 @@ rule token = parse | "f32x4.relaxed_max" -> VEC_UNARY f32x4_relaxed_max | "f64x2.relaxed_max" -> VEC_UNARY f64x2_relaxed_max | "i16x8.relaxed_q15mulr_s" -> VEC_BINARY i16x8_relaxed_q15mulr_s - | "i16x8.dot_i8x16_i7x16_s" -> VEC_BINARY i16x8_dot_i8x16_i7x16_s - | "i32x4.dot_i8x16_i7x16_add_s" -> VEC_BINARY i32x4_dot_i8x16_i7x16_add_s + | "i16x8.relaxed_dot_i8x16_i7x16_s" -> VEC_BINARY i16x8_relaxed_dot_i8x16_i7x16_s + | "i32x4.relaxed_dot_i8x16_i7x16_add_s" -> VEC_BINARY i32x4_relaxed_dot_i8x16_i7x16_add_s | "type" -> TYPE | "func" -> FUNC From c7f2df122f3cf5778f792ea0d097a42c436886f6 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 19:23:03 +0000 Subject: [PATCH 068/230] Rename relaxed dot in tests --- test/core/relaxed-simd/relaxed_dot_product.wast | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index e84dcf96d..80e9f4a26 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -1,24 +1,24 @@ ;; Tests for relaxed dot products. (module - (func (export "i16x8.dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.dot_i8x16_i7x16_s (local.get 0) (local.get 1))) - (func (export "i32x4.dot_i8x16_i7x16_add_s") (param v128 v128 v128) (result v128) (i32x4.dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2))) + (func (export "i16x8.relaxed_dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.relaxed_dot_i8x16_i7x16_s (local.get 0) (local.get 1))) + (func (export "i32x4.relaxed_dot_i8x16_i7x16_add_s") (param v128 v128 v128) (result v128) (i32x4.relaxed_dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2))) ) ;; Simple values to ensure things are functional. -(assert_return (invoke "i16x8.dot_i8x16_i7x16_s" +(assert_return (invoke "i16x8.relaxed_dot_i8x16_i7x16_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) (v128.const i16x8 1 13 41 85 145 221 313 421)) ;; Test max and min i8 values; -(assert_return (invoke "i16x8.dot_i8x16_i7x16_s" +(assert_return (invoke "i16x8.relaxed_dot_i8x16_i7x16_s" (v128.const i8x16 -128 -128 127 127 0 0 0 0 0 0 0 0 0 0 0 0) (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0)) (v128.const i16x8 -32512 32258 0 0 0 0 0 0)) ;; Simple values to ensure things are functional. -(assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" +(assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i32x4 0 1 2 3)) @@ -26,7 +26,7 @@ (v128.const f32x4 14 127 368 737)) ;; Test max and min i8 values; -(assert_return (invoke "i32x4.dot_i8x16_i7x16_add_s" +(assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" (v128.const i8x16 -128 -128 -128 -128 127 127 127 127 0 0 0 0 0 0 0 0) (v128.const i8x16 127 127 127 127 127 127 127 127 0 0 0 0 0 0 0 0) (v128.const i32x4 1 2 3 4)) From d908cd438e8aae8ecf2c7e06022b630cab61db7c Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 21:10:09 +0000 Subject: [PATCH 069/230] Fix expected result type in relaxed dot product tests --- test/core/relaxed-simd/relaxed_dot_product.wast | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index 80e9f4a26..e5e6e3041 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -23,7 +23,7 @@ (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (v128.const i32x4 0 1 2 3)) ;; intermediate result is [14, 126, 366, 734] - (v128.const f32x4 14 127 368 737)) + (v128.const i32x4 14 127 368 737)) ;; Test max and min i8 values; (assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" @@ -31,4 +31,4 @@ (v128.const i8x16 127 127 127 127 127 127 127 127 0 0 0 0 0 0 0 0) (v128.const i32x4 1 2 3 4)) ;; intermediate result is [-65024, 64516, 0, 0] - (v128.const f32x4 -65023 64518 3 4)) + (v128.const i32x4 -65023 64518 3 4)) From 961e0dbd52e09f0d8b1aa1f37bce83b2020d8472 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 15 Feb 2023 19:24:36 +0000 Subject: [PATCH 070/230] Check multiple calls to relaxed instructions return same results Fixes #110 --- .../relaxed-simd/i16x8_relaxed_q15mulr_s.wast | 13 +++ .../relaxed-simd/i32x4_relaxed_trunc.wast | 59 +++++++++++++ .../relaxed-simd/i8x16_relaxed_swizzle.wast | 19 +++++ .../relaxed-simd/relaxed_dot_product.wast | 25 ++++++ .../core/relaxed-simd/relaxed_laneselect.wast | 55 ++++++++++++- .../core/relaxed-simd/relaxed_madd_nmadd.wast | 82 +++++++++++++++++++ test/core/relaxed-simd/relaxed_min_max.wast | 81 +++++++++++++++++- 7 files changed, 330 insertions(+), 4 deletions(-) diff --git a/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast index 9dcb54de2..265d99160 100644 --- a/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast +++ b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast @@ -1,6 +1,11 @@ ;; Tests for i16x8.relaxed_q15mulr_s. (module (func (export "i16x8.relaxed_q15mulr_s") (param v128 v128) (result v128) (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1))) + + (func (export "i16x8.relaxed_q15mulr_s_cmp") (param v128 v128) (result v128) + (i16x8.eq + (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1)) + (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1)))) ) ;; INT16_MIN = -32768 @@ -11,3 +16,11 @@ (either (v128.const i16x8 -32768 32767 32766 0 0 0 0 0) (v128.const i16x8 32767 32767 32766 0 0 0 0 0))) +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +(assert_return (invoke "i16x8.relaxed_q15mulr_s_cmp" + (v128.const i16x8 -32768 -32767 32767 0 0 0 0 0) + (v128.const i16x8 -32768 -32768 32767 0 0 0 0 0)) + ;; overflows, return either INT16_MIN or INT16_MAX + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast index c31195d04..2628bad4d 100644 --- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -5,6 +5,23 @@ (func (export "i32x4.relaxed_trunc_f32x4_u") (param v128) (result v128) (i32x4.relaxed_trunc_f32x4_u (local.get 0))) (func (export "i32x4.relaxed_trunc_f64x2_s_zero") (param v128) (result v128) (i32x4.relaxed_trunc_f64x2_s_zero (local.get 0))) (func (export "i32x4.relaxed_trunc_f64x2_u_zero") (param v128) (result v128) (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0))) + + (func (export "i32x4.relaxed_trunc_f32x4_s_cmp") (param v128) (result v128) + (i32x4.eq + (i32x4.relaxed_trunc_f32x4_s (local.get 0)) + (i32x4.relaxed_trunc_f32x4_s (local.get 0)))) + (func (export "i32x4.relaxed_trunc_f32x4_u_cmp") (param v128) (result v128) + (i32x4.eq + (i32x4.relaxed_trunc_f32x4_u (local.get 0)) + (i32x4.relaxed_trunc_f32x4_u (local.get 0)))) + (func (export "i32x4.relaxed_trunc_f64x2_s_zero_cmp") (param v128) (result v128) + (i32x4.eq + (i32x4.relaxed_trunc_f64x2_s_zero (local.get 0)) + (i32x4.relaxed_trunc_f64x2_s_zero (local.get 0)))) + (func (export "i32x4.relaxed_trunc_f64x2_u_zero_cmp") (param v128) (result v128) + (i32x4.eq + (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0)) + (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0)))) ) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" @@ -54,3 +71,45 @@ (v128.const f64x2 nan -nan)) (either (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0xffffffff 0xffffffff))) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_s_cmp" + ;; INT32_MIN INT32_MAX + (v128.const f32x4 -2147483648.0 -2147483904.0 2147483647.0 2147483904.0)) + ;; out of range -> saturate or INT32_MIN + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_s_cmp" + (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) + ;; nans -> 0 or INT32_MIN + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_u_cmp" + ;; UINT32_MIN UINT32_MIN-1 saturate or UINT32_MAX + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f32x4_u_cmp" + (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) + ;; nans -> 0 or UINT32_MAX + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero_cmp" + (v128.const f64x2 -2147483904.0 2147483904.0)) + ;; out of range -> saturate or INT32_MIN + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_s_zero_cmp" + (v128.const f64x2 nan -nan)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero_cmp" + (v128.const f64x2 -1.0 4294967296.0)) + ;; out of range -> saturate or UINT32_MAX + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_trunc_f64x2_u_zero_cmp" + (v128.const f64x2 nan -nan)) + (v128.const i32x4 -1 -1 -1 -1)) diff --git a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast index 22c11efb2..1b20668d3 100644 --- a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast +++ b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast @@ -2,6 +2,11 @@ (module (func (export "i8x16.relaxed_swizzle") (param v128 v128) (result v128) (i8x16.relaxed_swizzle (local.get 0) (local.get 1))) + + (func (export "i8x16.relaxed_swizzle_cmp") (param v128 v128) (result v128) + (i8x16.eq + (i8x16.relaxed_swizzle (local.get 0) (local.get 1)) + (i8x16.relaxed_swizzle (local.get 0) (local.get 1)))) ) (assert_return (invoke "i8x16.relaxed_swizzle" @@ -23,3 +28,17 @@ (v128.const i8x16 128 129 130 131 132 133 134 135 248 249 250 251 252 253 254 255)) (either (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15))) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +;; out of range, returns 0 or modulo 15 if < 128 +(assert_return (invoke "i8x16.relaxed_swizzle_cmp" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + +;; out of range, returns 0 if >= 128 +(assert_return (invoke "i8x16.relaxed_swizzle_cmp" + (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 128 129 130 131 132 133 134 135 248 249 250 251 252 253 254 255)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index e5e6e3041..ff8a90151 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -3,6 +3,15 @@ (module (func (export "i16x8.relaxed_dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.relaxed_dot_i8x16_i7x16_s (local.get 0) (local.get 1))) (func (export "i32x4.relaxed_dot_i8x16_i7x16_add_s") (param v128 v128 v128) (result v128) (i32x4.relaxed_dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2))) + + (func (export "i16x8.relaxed_dot_i8x16_i7x16_s_cmp") (param v128 v128) (result v128) + (i16x8.eq + (i16x8.relaxed_dot_i8x16_i7x16_s (local.get 0) (local.get 1)) + (i16x8.relaxed_dot_i8x16_i7x16_s (local.get 0) (local.get 1)))) + (func (export "i32x4.relaxed_dot_i8x16_i7x16_add_s_cmp") (param v128 v128 v128) (result v128) + (i16x8.eq + (i32x4.relaxed_dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2)) + (i32x4.relaxed_dot_i8x16_i7x16_add_s (local.get 0) (local.get 1) (local.get 2)))) ) ;; Simple values to ensure things are functional. @@ -32,3 +41,19 @@ (v128.const i32x4 1 2 3 4)) ;; intermediate result is [-65024, 64516, 0, 0] (v128.const i32x4 -65023 64518 3 4)) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +;; Test max and min i8 values; +(assert_return (invoke "i16x8.relaxed_dot_i8x16_i7x16_s_cmp" + (v128.const i8x16 -128 -128 127 127 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + +;; Test max and min i8 values; +(assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s_cmp" + (v128.const i8x16 -128 -128 -128 -128 127 127 127 127 0 0 0 0 0 0 0 0) + (v128.const i8x16 127 127 127 127 127 127 127 127 0 0 0 0 0 0 0 0) + (v128.const i32x4 1 2 3 4)) + ;; intermediate result is [-65024, 64516, 0, 0] + (v128.const i32x4 -1 -1 -1 -1)) diff --git a/test/core/relaxed-simd/relaxed_laneselect.wast b/test/core/relaxed-simd/relaxed_laneselect.wast index e1a246fe3..4ea6eb818 100644 --- a/test/core/relaxed-simd/relaxed_laneselect.wast +++ b/test/core/relaxed-simd/relaxed_laneselect.wast @@ -2,9 +2,26 @@ (module (func (export "i8x16.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) - (func (export "i16x8.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) - (func (export "i32x4.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) - (func (export "i64x2.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i16x8.relaxed_laneselect") (param v128 v128 v128) (result v128) (i16x8.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i32x4.relaxed_laneselect") (param v128 v128 v128) (result v128) (i32x4.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + (func (export "i64x2.relaxed_laneselect") (param v128 v128 v128) (result v128) (i64x2.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2))) + + (func (export "i8x16.relaxed_laneselect_cmp") (param v128 v128 v128) (result v128) + (i8x16.eq + (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)) + (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)))) + (func (export "i16x8.relaxed_laneselect_cmp") (param v128 v128 v128) (result v128) + (i16x8.eq + (i16x8.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)) + (i16x8.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)))) + (func (export "i32x4.relaxed_laneselect_cmp") (param v128 v128 v128) (result v128) + (i32x4.eq + (i32x4.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)) + (i32x4.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)))) + (func (export "i64x2.relaxed_laneselect_cmp") (param v128 v128 v128) (result v128) + (i64x2.eq + (i64x2.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)) + (i64x2.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)))) ) (assert_return (invoke "i8x16.relaxed_laneselect" @@ -41,3 +58,35 @@ (v128.const i64x2 0xffffffff00000000 0x00000000ffffffff)) (either (v128.const i64x2 0x1234123456785678 0x5678567812341234) (v128.const i64x2 0x1234123412341234 0x5678567856785678))) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +(assert_return (invoke "i8x16.relaxed_laneselect_cmp" + (v128.const i8x16 0 1 0x12 0x12 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 16 17 0x34 0x34 20 21 22 23 24 25 26 27 28 29 30 31) + (v128.const i8x16 0xff 0 0xf0 0x0f 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + +(assert_return (invoke "i16x8.relaxed_laneselect_cmp" + (v128.const i16x8 0 1 0x1234 0x1234 4 5 6 7) + (v128.const i16x8 8 9 0x5678 0x5678 12 13 14 15) + (v128.const i16x8 0xffff 0 0xff00 0x00ff 0 0 0 0)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + +(assert_return (invoke "i32x4.relaxed_laneselect_cmp" + (v128.const i32x4 0 1 0x12341234 0x12341234) + (v128.const i32x4 4 5 0x56785678 0x56785678) + (v128.const i32x4 0xffffffff 0 0xffff0000 0x0000ffff)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "i64x2.relaxed_laneselect_cmp" + (v128.const i64x2 0 1) + (v128.const i64x2 2 3) + (v128.const i64x2 0xffffffffffffffff 0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "i64x2.relaxed_laneselect_cmp" + (v128.const i64x2 0x1234123412341234 0x1234123412341234) + (v128.const i64x2 0x5678567856785678 0x5678567856785678) + (v128.const i64x2 0xffffffff00000000 0x00000000ffffffff)) + (v128.const i64x2 -1 -1)) diff --git a/test/core/relaxed-simd/relaxed_madd_nmadd.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast index d212d53fc..2339d3773 100644 --- a/test/core/relaxed-simd/relaxed_madd_nmadd.wast +++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast @@ -5,6 +5,23 @@ (func (export "f32x4.relaxed_nmadd") (param v128 v128 v128) (result v128) (f32x4.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2))) (func (export "f64x2.relaxed_nmadd") (param v128 v128 v128) (result v128) (f64x2.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2))) (func (export "f64x2.relaxed_madd") (param v128 v128 v128) (result v128) (f64x2.relaxed_madd (local.get 0) (local.get 1) (local.get 2))) + + (func (export "f32x4.relaxed_madd_cmp") (param v128 v128 v128) (result v128) + (f32x4.eq + (f32x4.relaxed_madd (local.get 0) (local.get 1) (local.get 2)) + (f32x4.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))) + (func (export "f32x4.relaxed_nmadd_cmp") (param v128 v128 v128) (result v128) + (f32x4.eq + (f32x4.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)) + (f32x4.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)))) + (func (export "f64x2.relaxed_nmadd_cmp") (param v128 v128 v128) (result v128) + (f64x2.eq + (f64x2.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)) + (f64x2.relaxed_nmadd (local.get 0) (local.get 1) (local.get 2)))) + (func (export "f64x2.relaxed_madd_cmp") (param v128 v128 v128) (result v128) + (f64x2.eq + (f64x2.relaxed_madd (local.get 0) (local.get 1) (local.get 2)) + (f64x2.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))) ) @@ -76,3 +93,68 @@ (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +;; FLT_MAX == 0x1.fffffep+127 +;; FLT_MAX * 2 - FLT_MAX == +;; FLT_MAX (if fma) +;; 0 (if no fma) +;; from https://www.vinc17.net/software/fma-tests.c +(assert_return (invoke "f32x4.relaxed_madd_cmp" + (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 ) + (v128.const f32x4 2.0 2.0 2.0 2.0) + (v128.const f32x4 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127)) + (v128.const i32x4 -1 -1 -1 -1)) + +;; Special values for float: +;; x = 0x1.000004p+0 (1 + 2^-22) +;; y = 0x1.0002p+0 (1 + 2^-15) +;; z = -(1.0 + 0x0.0002p+0 + 0x0.000004p+0) +;; = -0x1.000204p+0 +;; x.y = 1.0 + 0x0.0002p+0 + 0x0.000004p+0 + 0x1p-37 (round bit) +;; x.y+z = 0 (2 roundings) +;; fma(x, y, z) = (0x1p-37) 2^-37 +;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information +(assert_return (invoke "f32x4.relaxed_madd_cmp" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) + (v128.const i32x4 -1 -1 -1 -1)) +(assert_return (invoke "f32x4.relaxed_nmadd_cmp" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) + (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) + (v128.const i32x4 -1 -1 -1 -1)) + +;; DBL_MAX = 0x1.fffffffffffffp+1023 +;; DLB_MAX * 2 - DLB_MAX == +;; DLB_MAX (if fma) +;; 0 (if no fma) +;; form https://www.vinc17.net/software/fma-tests.c +;; from https://www.vinc17.net/software/fma-tests.c +(assert_return (invoke "f64x2.relaxed_madd_cmp" + (v128.const f64x2 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023) + (v128.const f64x2 2.0 2.0) + (v128.const f64x2 -0x1.fffffffffffffp+1023 -0x1.fffffffffffffp+1023)) + (v128.const i64x2 -1 -1)) + +;; Special values for double: +;; x = 0x1.00000004p+0 (1 + 2^-30) +;; y = 0x1.000002p+0 (1 + 2^-23) +;; z = -(1.0 + 0x0.000002p+0 + 0x0.00000004p+0) +;; = -0x1.00000204p+0 +;; x.y = 1.0 + 0x0.000002p+0 + 0x0.00000004p+0 + 0x1p-53 (round bit) +;; x.y+z = 0 (2 roundings) +;; fma(x, y, z) = 0x1p-53 +;; from https://accurate-algorithms.readthedocs.io/en/latest/ch09appendix.html#test-system-information +(assert_return (invoke "f64x2.relaxed_madd_cmp" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) + (v128.const i64x2 -1 -1)) +(assert_return (invoke "f64x2.relaxed_nmadd_cmp" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) + (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) + (v128.const i64x2 -1 -1)) diff --git a/test/core/relaxed-simd/relaxed_min_max.wast b/test/core/relaxed-simd/relaxed_min_max.wast index 5e49ac673..d8a04ba4d 100644 --- a/test/core/relaxed-simd/relaxed_min_max.wast +++ b/test/core/relaxed-simd/relaxed_min_max.wast @@ -3,8 +3,25 @@ (module (func (export "f32x4.relaxed_min") (param v128 v128) (result v128) (f32x4.relaxed_min (local.get 0) (local.get 1))) (func (export "f32x4.relaxed_max") (param v128 v128) (result v128) (f32x4.relaxed_max (local.get 0) (local.get 1))) - (func (export "f64x2.relaxed_max") (param v128 v128) (result v128) (f64x2.relaxed_max (local.get 0) (local.get 1))) (func (export "f64x2.relaxed_min") (param v128 v128) (result v128) (f64x2.relaxed_min (local.get 0) (local.get 1))) + (func (export "f64x2.relaxed_max") (param v128 v128) (result v128) (f64x2.relaxed_max (local.get 0) (local.get 1))) + + (func (export "f32x4.relaxed_min_cmp") (param v128 v128) (result v128) + (i32x4.eq + (f32x4.relaxed_min (local.get 0) (local.get 1)) + (f32x4.relaxed_min (local.get 0) (local.get 1)))) + (func (export "f32x4.relaxed_max_cmp") (param v128 v128) (result v128) + (i32x4.eq + (f32x4.relaxed_max (local.get 0) (local.get 1)) + (f32x4.relaxed_max (local.get 0) (local.get 1)))) + (func (export "f64x2.relaxed_min_cmp") (param v128 v128) (result v128) + (i64x2.eq + (f64x2.relaxed_min (local.get 0) (local.get 1)) + (f64x2.relaxed_min (local.get 0) (local.get 1)))) + (func (export "f64x2.relaxed_max_cmp") (param v128 v128) (result v128) + (i64x2.eq + (f64x2.relaxed_max (local.get 0) (local.get 1)) + (f64x2.relaxed_max (local.get 0) (local.get 1)))) ) (assert_return (invoke "f32x4.relaxed_min" @@ -102,3 +119,65 @@ (v128.const f64x2 +0.0 -0.0) (v128.const f64x2 +0.0 -0.0) (v128.const f64x2 +0.0 -0.0))) + +;; Check that multiple calls to the relaxed instruction with same inputs returns same results. + +(assert_return (invoke "f32x4.relaxed_min_cmp" + (v128.const f32x4 -nan nan 0 0) + (v128.const f32x4 0 0 -nan nan)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "f32x4.relaxed_min_cmp" + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "f32x4.relaxed_max_cmp" + (v128.const f32x4 -nan nan 0 0) + (v128.const f32x4 0 0 -nan nan)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "f32x4.relaxed_max_cmp" + (v128.const f32x4 +0.0 -0.0 +0.0 -0.0) + (v128.const f32x4 -0.0 +0.0 +0.0 -0.0)) + (v128.const i32x4 -1 -1 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_min_cmp" + (v128.const f64x2 -nan nan) + (v128.const f64x2 0 0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_min_cmp" + (v128.const f64x2 0 0) + (v128.const f64x2 -nan nan)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_min_cmp" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_min_cmp" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_max_cmp" + (v128.const f64x2 -nan nan) + (v128.const f64x2 0 0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_max_cmp" + (v128.const f64x2 0 0) + (v128.const f64x2 -nan nan)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_max_cmp" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 -0.0 +0.0)) + (v128.const i64x2 -1 -1)) + +(assert_return (invoke "f64x2.relaxed_max_cmp" + (v128.const f64x2 +0.0 -0.0) + (v128.const f64x2 +0.0 -0.0)) + (v128.const i64x2 -1 -1)) From e53cbc98cef179c8b027d58a80f82012d30549f8 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 15 Feb 2023 22:50:48 +0000 Subject: [PATCH 071/230] Add expected results for relaxed dot --- .../relaxed-simd/relaxed_dot_product.wast | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index ff8a90151..720719ae5 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -26,6 +26,17 @@ (v128.const i8x16 127 127 127 127 0 0 0 0 0 0 0 0 0 0 0 0)) (v128.const i16x8 -32512 32258 0 0 0 0 0 0)) +;; signed * unsigned : -128 * 129 * 2 = -33,024 saturated to -32,768 +;; signed * signed : -128 * -127 * 2 = 32,512 +;; unsigned * unsigned : 128 * 129 * 2 = 33,024 +(assert_return (invoke "i16x8.relaxed_dot_i8x16_i7x16_s" + (v128.const i8x16 -128 -128 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -127 -127 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (either + (v128.const i16x8 -32768 0 0 0 0 0 0 0) + (v128.const i16x8 32512 0 0 0 0 0 0 0) + (v128.const i16x8 33024 0 0 0 0 0 0 0))) + ;; Simple values to ensure things are functional. (assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) @@ -42,6 +53,18 @@ ;; intermediate result is [-65024, 64516, 0, 0] (v128.const i32x4 -65023 64518 3 4)) +;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) +;; signed * signed : -128 * -127 * 4 = 65,024 (+ 1) +;; unsigned * unsigned : 128 * 129 * 2 = 66,048 (+ 1) +(assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" + (v128.const i8x16 -128 -128 -128 -128 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -127 -127 -127 -127 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i32x4 1 2 3 4)) + (either + (v128.const i32x4 -66047 2 3 4) + (v128.const i32x4 65025 2 3 4) + (v128.const i32x4 66049 2 3 4))) + ;; Check that multiple calls to the relaxed instruction with same inputs returns same results. ;; Test max and min i8 values; @@ -57,3 +80,20 @@ (v128.const i32x4 1 2 3 4)) ;; intermediate result is [-65024, 64516, 0, 0] (v128.const i32x4 -1 -1 -1 -1)) + +;; signed * unsigned : -128 * 129 * 2 = -33,024 saturated to -32,768 +;; signed * signed : -128 * -127 * 2 = 32,512 +;; unsigned * unsigned : 128 * 129 * 2 = 33,024 +(assert_return (invoke "i16x8.relaxed_dot_i8x16_i7x16_s_cmp" + (v128.const i8x16 -128 -128 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -127 -127 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + +;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) +;; signed * signed : -128 * -127 * 4 = 65,024 (+ 1) +;; unsigned * unsigned : 128 * 129 * 2 = 66,048 (+ 1) +(assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s_cmp" + (v128.const i8x16 -128 -128 -128 -128 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -127 -127 -127 -127 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i32x4 1 2 3 4)) + (v128.const i32x4 -1 -1 -1 -1)) From d847308e99b86dfcc4dcea772b438aba12b9340b Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 16 Feb 2023 15:51:33 -0800 Subject: [PATCH 072/230] Fix relaxed nmadd tests (#124) nmadd(x, y, z) == nmadd(-x, y, z) the tests were doing -z instead. --- .../core/relaxed-simd/relaxed_madd_nmadd.wast | 46 +++++++++++++++---- 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/test/core/relaxed-simd/relaxed_madd_nmadd.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast index 2339d3773..d3f76f810 100644 --- a/test/core/relaxed-simd/relaxed_madd_nmadd.wast +++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast @@ -52,10 +52,18 @@ (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) (v128.const f32x4 0 0 0 0))) +;; nmadd tests with negated x, same answers are expected. (assert_return (invoke "f32x4.relaxed_nmadd" - (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 -0x1.000004p+0 -0x1.000004p+0 -0x1.000004p+0 -0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) - (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) + (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) + (v128.const f32x4 0 0 0 0))) +;; nmadd tests with negated y, same answers are expected. +(assert_return (invoke "f32x4.relaxed_nmadd" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 -0x1.0002p+0 -0x1.0002p+0 -0x1.0002p+0 -0x1.0002p+0) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (either (v128.const f32x4 0x1p-37 0x1p-37 0x1p-37 0x1p-37) (v128.const f32x4 0 0 0 0))) @@ -87,10 +95,18 @@ (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) +;; nmadd tests with negated x, same answers are expected. (assert_return (invoke "f64x2.relaxed_nmadd" - (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 -0x1.00000004p+0 -0x1.00000004p+0) (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) - (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) + (either (v128.const f64x2 0x1p-53 0x1p-53) + (v128.const f64x2 0 0))) +;; nmadd tests with negated y, same answers are expected. +(assert_return (invoke "f64x2.relaxed_nmadd" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 -0x1.000002p+0 -0x1.000002p+0) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (either (v128.const f64x2 0x1p-53 0x1p-53) (v128.const f64x2 0 0))) @@ -121,10 +137,17 @@ (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (v128.const i32x4 -1 -1 -1 -1)) +;; nmadd tests with negated x, same answers are expected. (assert_return (invoke "f32x4.relaxed_nmadd_cmp" - (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 -0x1.000004p+0 -0x1.000004p+0 -0x1.000004p+0 -0x1.000004p+0) (v128.const f32x4 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0 0x1.0002p+0) - (v128.const f32x4 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0 0x1.000204p+0)) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) + (v128.const i32x4 -1 -1 -1 -1)) +;; nmadd tests with negated y, same answers are expected. +(assert_return (invoke "f32x4.relaxed_nmadd_cmp" + (v128.const f32x4 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0 0x1.000004p+0) + (v128.const f32x4 -0x1.0002p+0 -0x1.0002p+0 -0x1.0002p+0 -0x1.0002p+0) + (v128.const f32x4 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0 -0x1.000204p+0)) (v128.const i32x4 -1 -1 -1 -1)) ;; DBL_MAX = 0x1.fffffffffffffp+1023 @@ -153,8 +176,15 @@ (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (v128.const i64x2 -1 -1)) +;; nmadd tests with negated x, same answers are expected. (assert_return (invoke "f64x2.relaxed_nmadd_cmp" - (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 -0x1.00000004p+0 -0x1.00000004p+0) (v128.const f64x2 0x1.000002p+0 0x1.000002p+0) - (v128.const f64x2 0x1.00000204p+0 0x1.00000204p+0)) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) + (v128.const i64x2 -1 -1)) +;; nmadd tests with negated y, same answers are expected. +(assert_return (invoke "f64x2.relaxed_nmadd_cmp" + (v128.const f64x2 0x1.00000004p+0 0x1.00000004p+0) + (v128.const f64x2 -0x1.000002p+0 -0x1.000002p+0) + (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (v128.const i64x2 -1 -1)) From f4435904c2ad6c912a56d22faba8fd5ff15bde12 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 22 Feb 2023 13:54:13 -0800 Subject: [PATCH 073/230] Fix relaxed trunc signed (#127) Fixes #126. --- proposals/relaxed-simd/Overview.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 4278cb930..61b18fbe0 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -114,12 +114,12 @@ def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4: result = [0, 0, 0, 0] for i in range(4): if isnan(a[i]): - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MIN) r = truncate(a[i]) if r < INT32_MIN: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) + result[i] = INT32_MIN elif r > INT32_MAX - result[i] = INT32_MAX + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) else: result[i] = r @@ -140,12 +140,12 @@ def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4: result = [0, 0, 0, 0] for i in range(2): if isnan(a[i]): - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MAX) + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MIN) r = truncate(a[i]) if r < INT32_MIN: - result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) + result[i] = INT32_MIN elif r > INT32_MAX - result[i] = INT32_MAX + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(INT32_MIN, INT32_MAX) else: result[i] = r From 917bd5c842f704416c2515693e9820b9acafb49e Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Mon, 27 Feb 2023 09:47:50 -0800 Subject: [PATCH 074/230] Update int dot tests to allow for saturation of intermediate 16-bit --- test/core/relaxed-simd/relaxed_dot_product.wast | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index 720719ae5..a3f6e7caa 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -53,7 +53,10 @@ ;; intermediate result is [-65024, 64516, 0, 0] (v128.const i32x4 -65023 64518 3 4)) -;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) +;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) VPDPBUSD AVX2-VNNI or AVX512-VNNI +;; signed * unsigned with intermediate saturation : +;; (-128 * 129) + (-128 * 129) = -33024 saturated to -32768 (PMADDUBSW) +;; -32768 + -32768 = -65536 (+ 1) ;; signed * signed : -128 * -127 * 4 = 65,024 (+ 1) ;; unsigned * unsigned : 128 * 129 * 2 = 66,048 (+ 1) (assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s" @@ -62,6 +65,7 @@ (v128.const i32x4 1 2 3 4)) (either (v128.const i32x4 -66047 2 3 4) + (v128.const i32x4 -65536 2 3 4) (v128.const i32x4 65025 2 3 4) (v128.const i32x4 66049 2 3 4))) @@ -89,7 +93,10 @@ (v128.const i8x16 -127 -127 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) +;; signed * unsigned : -128 * 129 * 4 = -66,048 (+ 1) VPDPBUSD AVX2-VNNI or AVX512-VNNI +;; signed * unsigned with intermediate saturation : +;; (-128 * 129) + (-128 * 129) = -33024 saturated to -32768 (PMADDUBSW) +;; -32768 + -32768 = -65536 (+ 1) ;; signed * signed : -128 * -127 * 4 = 65,024 (+ 1) ;; unsigned * unsigned : 128 * 129 * 2 = 66,048 (+ 1) (assert_return (invoke "i32x4.relaxed_dot_i8x16_i7x16_add_s_cmp" From c423e6306becfbc7ad42976e1c536bd2b9bd9268 Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Mon, 27 Feb 2023 09:57:30 -0800 Subject: [PATCH 075/230] Fix overview for int dot to allow saturation of 16-bit intermediates --- proposals/relaxed-simd/Overview.md | 41 +++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 61b18fbe0..30b9a1733 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -261,22 +261,45 @@ When the second operand of the product has the high bit set in a lane, that lane's result is implementation defined. ```python -def dot_product(signed, elements, a, b, c): +def i16x8_dot_i8x16_i7x16_s(a, b): intermediate = [] result = [] for i in range(16): if (b[i] & 0x80): - lhs = as_signed(a[i]) if signed else a[i] - rhs = IMPLEMENTATION_DEFINED_ONE_OF(as_signed(b[i]), b[i]) + lhs = as_signed(a[i]) + rhs = IMPLEMENTATION_DEFINED_ONE_OF(as_signed(b[i]), as_unsigned(b[i])) intermediate[i] = lhs * rhs else: - intermediate[i] = (as_signed(a[i]) if signed else a[i]) * b[i] - for i in range(0, 16, elements): - result[i/elements] = sum(intermediate[i:i+elements]) - result[i/elements] += c[i/elements] if c else 0 + intermediate[i] = as_signed(a[i]) * b[i] + for i in range(0, 16, 2): + result[i/2] = IMPLEMENTATION_DEFINED_ONE_OF( + intermediate[i] + intermediate[i+1], + saturate(intermediate[i] + intermediate[i+1])) -i16x8_dot_i8x16_i7x16_s(a, b) = dot_product(signed=True, elements=2, a, b) -i32x4.dot_i8x16_i7x16_add_s(a, b, c) = dot_product(signed=True, elements=4, a, b, c) +def i32x4.dot_i8x16_i7x16_add_s(a, b, c): + intermediate = [] + tmp = [] + result = [] + for i in range(16): + if (b[i] & 0x80): + lhs = as_signed(a[i]) + rhs = IMPLEMENTATION_DEFINED_ONE_OF(as_signed(b[i]), as_unsigned(b[i])) + intermediate[i] = lhs * rhs + else: + intermediate[i] = as_signed(a[i]) * b[i] + + for i in range(0, 16, 2): + tmp[i/2] = IMPLEMENTATION_DEFINED_ONE_OF( + intermediate[i] + intermediate[i+1], + saturate(intermediate[i] + intermediate[i+1])) + + for i in range(0, 8, 2): + dst[i/4] = tmp[i] + tmp[i+1] + + for i in range(0, 4): + dst[i] += c[i] + +saturate(x) = min(INT16_MAX, max(INT16_MIN, x)) ``` ## Binary format From a9ad83903f4bcfeb9350ec052761c283dff2b3b4 Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Mon, 27 Feb 2023 10:18:19 -0800 Subject: [PATCH 076/230] Fix typo in relaxed dot test --- test/core/relaxed-simd/relaxed_dot_product.wast | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast index a3f6e7caa..41dee0afc 100644 --- a/test/core/relaxed-simd/relaxed_dot_product.wast +++ b/test/core/relaxed-simd/relaxed_dot_product.wast @@ -65,7 +65,7 @@ (v128.const i32x4 1 2 3 4)) (either (v128.const i32x4 -66047 2 3 4) - (v128.const i32x4 -65536 2 3 4) + (v128.const i32x4 -65535 2 3 4) (v128.const i32x4 65025 2 3 4) (v128.const i32x4 66049 2 3 4))) From ae8a9f98d0125838973b36b01b9fa0aceb3c847d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Feb 2023 10:12:32 -0800 Subject: [PATCH 077/230] Fix some tests in `i32x4_relaxed_trunc.wast` This fixes some minor issues I encountered when running these tests. The first is a test for the `i32x4.relaxed_trunc_f32x4_s` instruction which asserted that `2147483647.0` (INT_MAX) would get translated to INT_MAX through the conversion. This float value, however, is not representable in `f32`. The two other closest integers that `f32` can represent are 2147483648 and 2147483520, so it's not actually possible to exercise a conversion from precisely INT_MAX to INT_MAX. Due to float parsing this meant that the value was getting rounded up to 2147483648 which exceeded INT_MAX which when using `cvttpd2dq` on x86 would cause INT_MIN to get returning, failing the test. I updated the test to pass something in-bounds (2 in this case) since the other edge cases are already tested. The other issue fixed in this commit is that many tests asserted that INT_MIN was a possible result but the representation of INT_MIN was missing a 0 in its hexadecimal representation, so zeros were appended. --- test/core/relaxed-simd/i32x4_relaxed_trunc.wast | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast index 2628bad4d..6e6edd7bd 100644 --- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -25,17 +25,17 @@ ) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" - ;; INT32_MIN INT32_MAX - (v128.const f32x4 -2147483648.0 -2147483904.0 2147483647.0 2147483904.0)) + ;; INT32_MIN INT32_MAX + (v128.const f32x4 -2147483648.0 -2147483904.0 2.0 2147483904.0)) ;; out of range -> saturate or INT32_MIN - (either (v128.const i32x4 -2147483648 -2147483648 2147483647 2147483647) - (v128.const i32x4 -2147483648 -2147483648 2147483647 -2147483648))) + (either (v128.const i32x4 -2147483648 -2147483648 2 2147483647) + (v128.const i32x4 -2147483648 -2147483648 2 -2147483648))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" (v128.const f32x4 nan -nan nan:0x444444 -nan:0x444444)) ;; nans -> 0 or INT32_MIN (either (v128.const i32x4 0 0 0 0) - (v128.const i32x4 0x8000000 0x8000000 0x8000000 0x8000000))) + (v128.const i32x4 0x80000000 0x80000000 0x80000000 0x80000000))) (assert_return (invoke "i32x4.relaxed_trunc_f32x4_u" ;; UINT32_MIN UINT32_MIN-1 Date: Mon, 27 Feb 2023 10:24:02 -0800 Subject: [PATCH 078/230] Add a note about the integer value of INT_MAX --- test/core/relaxed-simd/i32x4_relaxed_trunc.wast | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast index 6e6edd7bd..889542c6a 100644 --- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast +++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast @@ -24,6 +24,14 @@ (i32x4.relaxed_trunc_f64x2_u_zero (local.get 0)))) ) +;; Test some edge cases around min/max to ensure that the instruction either +;; saturates correctly or returns INT_MIN. +;; +;; Note, though, that INT_MAX itself is not tested. The value for INT_MAX is +;; 2147483647 but that is not representable in a `f32` since it requires 31 bits +;; when a f32 has only 24 bits available. This means that the closest integers +;; to INT_MAX which can be represented are 2147483520 and 2147483648, meaning +;; that the INT_MAX test case cannot be tested. (assert_return (invoke "i32x4.relaxed_trunc_f32x4_s" ;; INT32_MIN INT32_MAX (v128.const f32x4 -2147483648.0 -2147483904.0 2.0 2147483904.0)) From 476802d1206661a29fe50dfc480450668cb91c43 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 27 Feb 2023 12:17:06 -0800 Subject: [PATCH 079/230] Implement relaxed instructions using the non-relaxed counterpart (#65) relaxed swizzle -> swizzle relaxed trunc -> trunc sat madd/nmadd -> fused multiply add/sub (2 roundings) relaxed laneselect -> bitselect relaxed min/max -> min/max i16x8 q15mulr -> i16x8.q15mulr with sat Co-authored-by: Andreas Rossberg --- interpreter/binary/decode.ml | 20 ++++++++++++++++++++ interpreter/exec/eval.ml | 4 ++++ interpreter/exec/eval_vec.ml | 26 ++++++++++++++++++++++++++ interpreter/exec/eval_vec.mli | 1 + interpreter/exec/fxx.ml | 7 +++++++ interpreter/exec/v128.ml | 30 ++++++++++++++++++++++++++++++ interpreter/exec/v128.mli | 4 ++++ interpreter/text/arrange.ml | 2 +- interpreter/util/lib.ml | 6 ++++++ interpreter/util/lib.mli | 1 + test/core/run.py | 6 +++++- 11 files changed, 105 insertions(+), 2 deletions(-) diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index fa3a0ef9e..004d0d315 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -772,6 +772,26 @@ let rec instr s = | 0xfdl -> i32x4_trunc_sat_f64x2_u_zero | 0xfel -> f64x2_convert_low_i32x4_s | 0xffl -> f64x2_convert_low_i32x4_u + | 0x100l -> i8x16_relaxed_swizzle + | 0x101l -> i32x4_relaxed_trunc_f32x4_s + | 0x102l -> i32x4_relaxed_trunc_f32x4_u + | 0x103l -> i32x4_relaxed_trunc_f64x2_s_zero + | 0x104l -> i32x4_relaxed_trunc_f64x2_u_zero + | 0x105l -> f32x4_relaxed_madd + | 0x106l -> f32x4_relaxed_nmadd + | 0x107l -> f64x2_relaxed_madd + | 0x108l -> f64x2_relaxed_nmadd + | 0x109l -> i8x16_relaxed_laneselect + | 0x10al -> i16x8_relaxed_laneselect + | 0x10bl -> i32x4_relaxed_laneselect + | 0x10cl -> i64x2_relaxed_laneselect + | 0x10dl -> f32x4_relaxed_min + | 0x10el -> f32x4_relaxed_max + | 0x10fl -> f64x2_relaxed_min + | 0x110l -> f64x2_relaxed_max + | 0x111l -> i16x8_relaxed_q15mulr_s + | 0x112l -> i16x8_relaxed_dot_i8x16_i7x16_s + | 0x113l -> i32x4_relaxed_dot_i8x16_i7x16_add_s | n -> illegal s pos (I32.to_int_u n) ) diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 18ff7150d..7938eea14 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -538,6 +538,10 @@ let rec step (c : config) : config = (try Vec (Eval_vec.eval_binop binop n1 n2) :: vs', [] with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) + | VecTernary ternop, Vec v3 :: Vec v2 :: Vec v1 :: vs' -> + (try Vec (Eval_vec.eval_ternop ternop v1 v2 v3) :: vs', [] + with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) + | VecCompare relop, Vec n2 :: Vec n1 :: vs' -> (try Vec (Eval_vec.eval_relop relop n1 n2) :: vs', [] with exn -> vs', [Trapping (numeric_error e.at exn) @@ e.at]) diff --git a/interpreter/exec/eval_vec.ml b/interpreter/exec/eval_vec.ml index d4c6e9648..68596dc58 100644 --- a/interpreter/exec/eval_vec.ml +++ b/interpreter/exec/eval_vec.ml @@ -61,6 +61,7 @@ struct | I8x16 MaxS -> V128.I8x16.max_s | I8x16 MaxU -> V128.I8x16.max_u | I8x16 AvgrU -> V128.I8x16.avgr_u + | I8x16 RelaxedSwizzle -> V128.V8x16.swizzle | I16x8 NarrowS -> V128.I16x8_convert.narrow_s | I16x8 NarrowU -> V128.I16x8_convert.narrow_u | I16x8 Add -> V128.I16x8.add @@ -80,6 +81,8 @@ struct | I16x8 ExtMulLowU -> V128.I16x8_convert.extmul_low_u | I16x8 ExtMulHighU -> V128.I16x8_convert.extmul_high_u | I16x8 Q15MulRSatS -> V128.I16x8.q15mulr_sat_s + | I16x8 RelaxedQ15MulRS -> V128.I16x8.q15mulr_sat_s + | I16x8 RelaxedDot -> V128.I16x8_convert.dot_s | I32x4 Add -> V128.I32x4.add | I32x4 Sub -> V128.I32x4.sub | I32x4 MinS -> V128.I32x4.min_s @@ -107,6 +110,8 @@ struct | F32x4 Max -> V128.F32x4.max | F32x4 Pmin -> V128.F32x4.pmin | F32x4 Pmax -> V128.F32x4.pmax + | F32x4 RelaxedMin -> V128.F32x4.min + | F32x4 RelaxedMax -> V128.F32x4.max | F64x2 Add -> V128.F64x2.add | F64x2 Sub -> V128.F64x2.sub | F64x2 Mul -> V128.F64x2.mul @@ -115,9 +120,25 @@ struct | F64x2 Max -> V128.F64x2.max | F64x2 Pmin -> V128.F64x2.pmin | F64x2 Pmax -> V128.F64x2.pmax + | F64x2 RelaxedMin -> V128.F64x2.min + | F64x2 RelaxedMax -> V128.F64x2.max | _ -> assert false in fun v1 v2 -> to_vec (f (of_vec 1 v1) (of_vec 2 v2)) + let ternop (op : ternop) = + let f = match op with + | F32x4 RelaxedMadd -> V128.F32x4.fma + | F32x4 RelaxedNmadd -> V128.F32x4.fnma + | F64x2 RelaxedMadd -> V128.F64x2.fma + | F64x2 RelaxedNmadd -> V128.F64x2.fnma + | I8x16 RelaxedLaneselect -> V128.V1x128.bitselect + | I16x8 RelaxedLaneselect -> V128.V1x128.bitselect + | I32x4 RelaxedLaneselect -> V128.V1x128.bitselect + | I64x2 RelaxedLaneselect -> V128.V1x128.bitselect + | I32x4 RelaxedDotAccum -> V128.I32x4_convert.dot_s_accum + | _ -> assert false + in fun v1 v2 v3 -> to_vec (f (of_vec 1 v1) (of_vec 2 v2) (of_vec 3 v3)) + let relop (op : relop) = let f = match op with | I8x16 Eq -> V128.I8x16.eq @@ -187,6 +208,10 @@ struct | I32x4 TruncSatUF32x4 -> V128.I32x4_convert.trunc_sat_f32x4_u | I32x4 TruncSatSZeroF64x2 -> V128.I32x4_convert.trunc_sat_f64x2_s_zero | I32x4 TruncSatUZeroF64x2 -> V128.I32x4_convert.trunc_sat_f64x2_u_zero + | I32x4 RelaxedTruncSF32x4 -> V128.I32x4_convert.trunc_sat_f32x4_s + | I32x4 RelaxedTruncUF32x4 -> V128.I32x4_convert.trunc_sat_f32x4_u + | I32x4 RelaxedTruncSZeroF64x2 -> V128.I32x4_convert.trunc_sat_f64x2_s_zero + | I32x4 RelaxedTruncUZeroF64x2 -> V128.I32x4_convert.trunc_sat_f64x2_u_zero | I32x4 ExtAddPairwiseS -> V128.I32x4_convert.extadd_pairwise_s | I32x4 ExtAddPairwiseU -> V128.I32x4_convert.extadd_pairwise_u | I64x2 ExtendLowS -> V128.I64x2_convert.extend_low_s @@ -301,6 +326,7 @@ let op v128 = function let eval_testop = op V128Op.testop let eval_unop = op V128Op.unop let eval_binop = op V128Op.binop +let eval_ternop = op V128Op.ternop let eval_relop = op V128Op.relop let eval_cvtop = op V128Op.cvtop let eval_shiftop = op V128Op.shiftop diff --git a/interpreter/exec/eval_vec.mli b/interpreter/exec/eval_vec.mli index be54f20b7..bc68ed120 100644 --- a/interpreter/exec/eval_vec.mli +++ b/interpreter/exec/eval_vec.mli @@ -3,6 +3,7 @@ open Values val eval_testop : Ast.vec_testop -> vec -> bool val eval_unop : Ast.vec_unop -> vec -> vec val eval_binop : Ast.vec_binop -> vec -> vec -> vec +val eval_ternop : Ast.vec_ternop -> vec -> vec -> vec -> vec val eval_relop : Ast.vec_relop -> vec -> vec -> vec val eval_cvtop : Ast.vec_cvtop -> vec -> vec val eval_shiftop : Ast.vec_shiftop -> vec -> num -> vec diff --git a/interpreter/exec/fxx.ml b/interpreter/exec/fxx.ml index 2385d194d..e695e0673 100644 --- a/interpreter/exec/fxx.ml +++ b/interpreter/exec/fxx.ml @@ -43,6 +43,7 @@ sig val sub : t -> t -> t val mul : t -> t -> t val div : t -> t -> t + val fma : t -> t -> t -> t val sqrt : t -> t val min : t -> t -> t val max : t -> t -> t @@ -137,6 +138,12 @@ struct let sub x y = binary x (-.) y let mul x y = binary x ( *.) y let div x y = binary x (/.) y + let fma x y z = + let xf = to_float x in + let yf = to_float y in + let zf = to_float z in + let t = Float.fma xf yf zf in + if t = t then of_float t else determine_binary_nan x y let sqrt x = unary Stdlib.sqrt x diff --git a/interpreter/exec/v128.ml b/interpreter/exec/v128.ml index 550fd9bfa..8800347fd 100644 --- a/interpreter/exec/v128.ml +++ b/interpreter/exec/v128.ml @@ -191,6 +191,8 @@ sig val sub : t -> t -> t val mul : t -> t -> t val div : t -> t -> t + val fma : t -> t -> t -> t + val fnma : t -> t -> t -> t val min : t -> t -> t val max : t -> t -> t val pmin : t -> t -> t @@ -233,6 +235,9 @@ struct let sub = binop FXX.sub let mul = binop FXX.mul let div = binop FXX.div + let fma x y z = + of_lanes (Lib.List.map3 FXX.fma (to_lanes x) (to_lanes y) (to_lanes z)) + let fnma x y z = fma (unop FXX.neg x) y z let min = binop FXX.min let max = binop FXX.max let pmin = binop (fun x y -> if FXX.lt y x then y else x) @@ -378,6 +383,17 @@ struct I16x8.of_lanes (Lib.List.pairwise (extadd ext_s) (I8x16.to_lanes x)) let extadd_pairwise_u x = I16x8.of_lanes (Lib.List.pairwise (extadd ext_u) (I8x16.to_lanes x)) + + let dot_s x y = + let xs = I8x16.to_lanes x in + let ys = I8x16.to_lanes y in + let rec dot xs ys = + match xs, ys with + | x1::x2::xs', y1::y2::ys' -> + Int32.(add (mul x1 y1) (mul x2 y2)) :: dot xs' ys' + | [], [] -> [] + | _, _ -> assert false + in I16x8.of_lanes (dot xs ys) end module I32x4_convert = @@ -412,6 +428,20 @@ struct | _, _ -> assert false in I32x4.of_lanes (dot xs ys) + let dot_s_accum x y z = + let xs = I8x16.to_lanes x in + let ys = I8x16.to_lanes y in + let rec dot xs ys = + match xs, ys with + | x1::x2::x3::x4::xs', y1::y2::y3::y4::ys' -> + Int32.(add + (add (mul x1 y1) (mul x2 y2)) + (add (mul x3 y3) (mul x4 y4))) + :: dot xs' ys' + | [], [] -> [] + | _, _ -> assert false + in I32x4.add (I32x4.of_lanes (dot xs ys)) z + let extmul_low_s x y = I32x4.mul (extend_low_s x) (extend_low_s y) let extmul_high_s x y = I32x4.mul (extend_high_s x) (extend_high_s y) let extmul_low_u x y = I32x4.mul (extend_low_u x) (extend_low_u y) diff --git a/interpreter/exec/v128.mli b/interpreter/exec/v128.mli index f9535c158..e29477945 100644 --- a/interpreter/exec/v128.mli +++ b/interpreter/exec/v128.mli @@ -108,6 +108,8 @@ sig val sub : t -> t -> t val mul : t -> t -> t val div : t -> t -> t + val fma : t -> t -> t -> t + val fnma : t -> t -> t -> t val min : t -> t -> t val max : t -> t -> t val pmin : t -> t -> t @@ -163,6 +165,7 @@ sig val extmul_high_u : t -> t -> t val extadd_pairwise_s : t -> t val extadd_pairwise_u : t -> t + val dot_s : t -> t -> t end module I32x4_convert : @@ -176,6 +179,7 @@ sig val extend_low_u : t -> t val extend_high_u : t -> t val dot_s : t -> t -> t + val dot_s_accum : t -> t -> t -> t val extmul_low_s : t -> t -> t val extmul_high_s : t -> t -> t val extmul_low_u : t -> t -> t diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index c6704e30c..6e3b6dc3a 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -265,7 +265,7 @@ struct let iternop xxxx (op : iternop) = match op with | RelaxedLaneselect -> "relaxed_laneselect" - | RelaxedDotAccum -> "relaxed_dot_i" ^ half (half xxxx) ^ "_i" ^ without_high_bit (half (half xxxx)) ^ "add_s" + | RelaxedDotAccum -> "relaxed_dot_i" ^ half (half xxxx) ^ "_i" ^ without_high_bit (half (half xxxx)) ^ "_add_s" let fbinop xxxx (op : fbinop) = match op with | Add -> "add" diff --git a/interpreter/util/lib.ml b/interpreter/util/lib.ml index 76757eb72..3d7754f0b 100644 --- a/interpreter/util/lib.ml +++ b/interpreter/util/lib.ml @@ -105,6 +105,12 @@ struct | None -> map_filter f xs | Some y -> y :: map_filter f xs + let rec map3 f xs ys zs = + match xs, ys, zs with + | [], [], [] -> [] + | x::xs', y::ys', z::zs' -> f x y z :: map3 f xs' ys' zs' + | _ -> raise (Invalid_argument "Lib.List.map3") + let rec concat_map f = function | [] -> [] | x::xs -> f x @ concat_map f xs diff --git a/interpreter/util/lib.mli b/interpreter/util/lib.mli index b66b8b0e8..badc34bc5 100644 --- a/interpreter/util/lib.mli +++ b/interpreter/util/lib.mli @@ -24,6 +24,7 @@ sig val index_of : 'a -> 'a list -> int option val index_where : ('a -> bool) -> 'a list -> int option val map_filter : ('a -> 'b option) -> 'a list -> 'b list + val map3 : ('a -> 'b -> 'c -> 'd) -> 'a list -> 'b list -> 'c list -> 'd list val concat_map : ('a -> 'b list) -> 'a list -> 'b list val pairwise : ('a -> 'a -> 'b) -> 'a list -> 'b list end diff --git a/test/core/run.py b/test/core/run.py index 27c069436..d3d5229f9 100755 --- a/test/core/run.py +++ b/test/core/run.py @@ -26,12 +26,13 @@ main_test_files = glob.glob(os.path.join(inputDir, "*.wast")) # SIMD test files are in a subdirectory. simd_test_files = glob.glob(os.path.join(inputDir, "simd", "*.wast")) +relaxed_simd_test_files = glob.glob(os.path.join(inputDir, "relaxed-simd", "*.wast")) wasmCommand = arguments.wasm jsCommand = arguments.js generateJsOnly = arguments.generate_js_only outputDir = arguments.out -inputFiles = arguments.file if arguments.file else main_test_files + simd_test_files +inputFiles = arguments.file if arguments.file else main_test_files + simd_test_files + relaxed_simd_test_files if not os.path.exists(wasmCommand): sys.stderr.write("""\ @@ -107,6 +108,9 @@ def _runTestFile(self, inputPath): self._compareFile(wastPath, wast2Path) if jsCommand != None: + # TODO: node does not support relaxed-simd yet. + if 'node' in jsCommand and 'relaxed-simd' in jsPath: + return self._runCommand(('%s "%s"') % (jsCommand, jsPath), logPath) From 1bb54a7521db20e8890d9a11cbd8bd2f977b6277 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Mon, 27 Feb 2023 11:50:57 -0800 Subject: [PATCH 080/230] Update overview spec of `laneselect` instructions Currently the overview indicates that if the mask lane is not zero, not all-ones, and the top bit is 0 then the output must be the `b` element. This doesn't match (what I believe is) the intended implementation on AArch64 using the `bsl` instruction which is the same as `v128.bitselect`. --- proposals/relaxed-simd/Overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md index 30b9a1733..1c627e7b8 100644 --- a/proposals/relaxed-simd/Overview.md +++ b/proposals/relaxed-simd/Overview.md @@ -203,7 +203,7 @@ def laneselect(a : v128, b : v128, m: v128, lanes : int): else topbit(mask) == 1: result[i] = IMPLEMENTATION_DEFINED_ONE_OF(bitselect(a[i], b[i], mask), a[i]) else: - result[i] = b[i] + result[i] = IMPLEMENTATION_DEFINED_ONE_OF(bitselect(a[i], b[i], mask), b[i]) return result ``` From 24bba96c6f6860c883e507a04fe123947f6d2aa4 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Tue, 28 Feb 2023 15:25:27 -0800 Subject: [PATCH 081/230] cherry-pick from upstream: [interpreter] Fix warning flags for OCaml 4.13 (#1481) (#34) Co-authored-by: Andreas Rossberg --- interpreter/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/Makefile b/interpreter/Makefile index c745311b9..cd05cdc81 100644 --- a/interpreter/Makefile +++ b/interpreter/Makefile @@ -19,7 +19,7 @@ WINMAKE = winmake.bat DIRS = util syntax binary text valid runtime exec script host main LIBS = bigarray -FLAGS = -lexflags -ml -cflags '-w +a-4-27-42-44-45 -warn-error +a-3' +FLAGS = -lexflags -ml -cflags '-w +a-4-27-42-44-45-70 -warn-error +a-3' OCB = ocamlbuild $(FLAGS) $(DIRS:%=-I %) $(LIBS:%=-libs %) JS = # set to JS shell command to run JS tests From 786f84dc1a2cc1fa096694d88c7bf18d6a249ff0 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 12 Dec 2022 14:08:53 +0100 Subject: [PATCH 082/230] Spec profiles --- document/core/appendix/index.rst | 1 + document/core/appendix/profiles.rst | 129 ++++++++++++++++++++++++++++ document/core/exec/instructions.rst | 4 +- document/core/exec/numerics.rst | 17 ++-- document/core/util/macros.def | 9 ++ 5 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 document/core/appendix/profiles.rst diff --git a/document/core/appendix/index.rst b/document/core/appendix/index.rst index c4173e955..bf66222e0 100644 --- a/document/core/appendix/index.rst +++ b/document/core/appendix/index.rst @@ -7,6 +7,7 @@ Appendix :maxdepth: 2 embedding + profiles implementation algorithm custom diff --git a/document/core/appendix/profiles.rst b/document/core/appendix/profiles.rst new file mode 100644 index 000000000..d0ebb0ccd --- /dev/null +++ b/document/core/appendix/profiles.rst @@ -0,0 +1,129 @@ +.. index:: ! profile, abstract syntax, validation, execution, binary format, text format +.. _profiles: + +Profiles +-------- + +To enable the use of WebAssembly in as many environments as possible, *profiles* specify coherent language subsets that fit constraints imposed by common classes of host environments. +A host platform can thereby decide to support the language only under a restricted profile, or even the intersection of multiple profiles. + + +Conventions +~~~~~~~~~~~ + +A profile modification is specified by decorating selected rules in the main body of this specification with a *profile annotation* that defines them as "conditional" on the choice of profile. + +For that purpose, every profile defines a *profile marker*, an alphanumeric short-hand like :math:`\profile{Abc}`. +A profile annotation of the form :math:`\exprofiles{\profile{Abc},\profile{Xyz}}` on a rule indicates that this rule is *excluded* for either of the profiles whose marker is :math:`\profile{Abc}` or :math:`\profile{Xyz}`. + +There are two ways of subsetting the language in a profile: + +* *Syntactic*, by *omitting* a feature, in which case certain constructs are removed from the syntax altogether. + +* *Semantic*, by *restricting* a feature, in which case certain constructs are still present but some behaviours are ruled out. + + +Syntax Annotations +.................. + +To omit a construct from a profile syntactically, respective productions in the grammar of the :ref:`abstract syntax ` are annotated with an associated profile marker. +This is defined to have the following implications: + +1. Any production in the :ref:`binary ` or :ref:`textual ` syntax that produces abstract syntax with a marked construct is omitted by extension. + +2. Any :ref:`validation ` or :ref:`execution ` rule that handles a marked construct is omitted by extension. + +The overall effect is that the respective construct is no longer part of the language under a respective profile. + +.. note:: + For example, a "busy" profile marked :math:`\profile{Busy}` could rule out the |NOP| instruction by marking the production for it in the abstract syntax as follows: + + .. math:: + \begin{array}{llcl} + \production{instruction} & \instr &::=& + \dots \\ + & \exprofiles{\profile{Busy}} &|& \NOP \\ + & &|& \UNREACHABLE \\ + \end{array} + + A rule may be annotated by multiple markers, which might be the case if a construct is in the intersection of multiple features. + + +Semantics Annotations +..................... + +To restrict certain behaviours in a profile, individual :ref:`validation ` or :ref:`reduction ` rules or auxiliary definitions are annotated with an associated marker. + +This has the simple consequence that the respective rule is no longer applicable under the given profile. + +.. note:: + For example, an "infinite" profile marked :math:`\profile{Inf}` could define that growing memory never fails: + + .. math:: + \begin{array}{llcl@{\qquad}l} + & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S'; F; (\I32.\CONST~\X{sz}) + \\&&& + \begin{array}[t]{@{}r@{~}l@{}} + (\iff & F.\AMODULE.\MIMEMS[0] = a \\ + \wedge & \X{sz} = |S.\SMEMS[a].\MIDATA|/64\,\F{Ki} \\ + \wedge & S' = S \with \SMEMS[a] = \growmem(S.\SMEMS[a], n)) \\[1ex] + \end{array} + \\[1ex] + \exprofiles{\profile{Inf}} & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1)) + \end{array} + + +Properties +.......... + +All profiles are defined such that the following properties are preserved: + +* All profiles represent syntactic and semantic subsets of the :ref:`full profile `, i.e., they do not *add* syntax or *alter* behaviour. + +* All profiles are mutually compatible, i.e., no two profiles subset semantic behaviour in inconsistent ways, and any intersection of profiles preserves the properties described here. + +* Profiles that restrict execution do not violate :ref:`soundness `, i.e., all :ref:`configurations ` valid under that profile still have well-defined execution behaviour. + +.. note:: + Tools are generally expected to handle and produce code for the full profile by default. + In particular, producers should not generate code that *depends* on specific profiles. Instead, all code should preserve correctness when executed under the full profile. + + Moreover, profiles should be considered static and fixed for a given platform or ecosystem. Runtime conditioning on the "current" profile should especially be avoided. + + + +Defined Profiles +~~~~~~~~~~~~~~~~ + +.. note:: + The number of defined profiles is expected to remain small in the future. Profiles are intended for broad and permanent use cases only. In particular, profiles are not intended for language versioning. + + +.. index:: full profile + single: profile; full +.. _profile-full: + +Full Profile (:math:`\textsc{Ful}`) +................................... + +The *full* profile contains the complete language and all possible behaviours. +It imposes no restrictions, i.e., all rules and definitions are active. +All other profiles define sub-languages of this profile. + + +.. index:: determinism, non-determinism, deterministic profile + single: profile; deterministic +.. _profile-deterministic: + +Deterministic Profile (:math:`\textsc{Det}`) +............................................ + +The *deterministic* profile excludes all rules marked :math:`\exprofiles{\PROFDET}`. +It defines a sub-language that does not exhibit any incidental non-deterministic behaviour: + +* All :ref:`NaN ` values :ref:`generated ` by :ref:`floating-point instructions ` are canonical and positive. + +Even under this profile, the |MEMORYGROW| and |TABLEGROW| instructions technically remain :ref:`non-deterministic `, in order to be able to indicate resource exhaustion. + +.. note:: + In future versions of WebAssembly, new non-deterministic behaviour may be added to the language, such that the deterministic profile will induce additional restrictions. diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 3f82dce39..828ff5d91 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -7,7 +7,7 @@ Instructions WebAssembly computation is performed by executing individual :ref:`instructions `. -.. index:: numeric instruction, determinism, trap, NaN, value, value type +.. index:: numeric instruction, determinism, non-determinism, trap, NaN, value, value type pair: execution; instruction single: abstract syntax; instruction .. _exec-instr-numeric: @@ -1263,6 +1263,7 @@ Table Instructions \end{array} +.. index:: determinism, non-determinism .. _exec-table.grow: :math:`\TABLEGROW~x` @@ -2129,6 +2130,7 @@ Memory Instructions \end{array} +.. index:: determinism, non-determinism .. _exec-memory.grow: :math:`\MEMORYGROW` diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 71dfef6a9..868ca10d3 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1,4 +1,4 @@ -.. index:: value, integer, floating-point, bit width, determinism, NaN +.. index:: value, integer, floating-point, bit width, determinism, non-determinism, NaN .. _exec-op-partial: .. _exec-numeric: @@ -1025,7 +1025,7 @@ where: \end{array} -.. index:: NaN +.. index:: NaN, determinism, non-determinism .. _aux-nans: NaN Propagation @@ -1038,14 +1038,17 @@ then its sign is non-deterministic and the :ref:`payload ` is co * Otherwise the payload is picked non-deterministically among all :ref:`arithmetic NaNs `; that is, its most significant bit is :math:`1` and all others are unspecified. +* In the :ref:`deterministic profile `, only positive canonical NaN outputs are produced. + This non-deterministic result is expressed by the following auxiliary function producing a set of allowed outputs from a set of inputs: .. math:: - \begin{array}{lll@{\qquad}l} - \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n = \canon_N \} - & (\iff \forall \NAN(n) \in z^\ast,~ n = \canon_N) \\ - \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n \geq \canon_N \} - & (\otherwise) \\ + \begin{array}{llcl@{\qquad}l} + & \nans_N\{z^\ast\} &=& \{ + \NAN(\canon_N) \} \\ + \exprofiles{\PROFDET} & \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n = \canon_N \} + & (\iff \forall \,{\pm \NAN(n)} \in z^\ast,~ n = \canon_N) \\ + \exprofiles{\PROFDET} & \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n \geq \canon_N \} + & (\iff \exists \,{\pm \NAN(n)} \in z^\ast,~ n \neq \canon_N) \\ \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 3ab6d5480..16ee13d94 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -108,6 +108,15 @@ .. |bigcompose| mathdef:: \xref{syntax/conventions}{notation-compose}{\bigoplus} +.. Notation for Profiles + +.. |exprofiles#1| mathdef:: {[\mbox{\bf !}#1]} +.. |profile#1| mathdef:: {\textsc{#1}} + +.. |PROFFULL| mathdef:: \xref{appendix/profiles}{profile-full}{\profile{Ful}} +.. |PROFDET| mathdef:: \xref{appendix/profiles}{profile-deterministic}{\profile{Det}} + + .. Abstract Syntax .. --------------- From 16f6d1f00039e6dd4d8c6335bc2a2900bfa73754 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 12 Dec 2022 16:54:06 +0100 Subject: [PATCH 083/230] Work around MathJax limitations --- document/core/appendix/profiles.rst | 20 ++++++++++---------- document/core/util/bikeshed_fixup.py | 2 ++ document/core/util/macros.def | 9 +++++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/document/core/appendix/profiles.rst b/document/core/appendix/profiles.rst index d0ebb0ccd..8d360834d 100644 --- a/document/core/appendix/profiles.rst +++ b/document/core/appendix/profiles.rst @@ -13,8 +13,8 @@ Conventions A profile modification is specified by decorating selected rules in the main body of this specification with a *profile annotation* that defines them as "conditional" on the choice of profile. -For that purpose, every profile defines a *profile marker*, an alphanumeric short-hand like :math:`\profile{Abc}`. -A profile annotation of the form :math:`\exprofiles{\profile{Abc},\profile{Xyz}}` on a rule indicates that this rule is *excluded* for either of the profiles whose marker is :math:`\profile{Abc}` or :math:`\profile{Xyz}`. +For that purpose, every profile defines a *profile marker*, an alphanumeric short-hand like :math:`\profilename{ABC}`. +A profile annotation of the form :math:`\exprofiles{\profile{ABC}~\profile{XYZ}}` on a rule indicates that this rule is *excluded* for either of the profiles whose marker is :math:`\profilename{ABC}` or :math:`\profilename{XYZ}`. There are two ways of subsetting the language in a profile: @@ -36,13 +36,13 @@ This is defined to have the following implications: The overall effect is that the respective construct is no longer part of the language under a respective profile. .. note:: - For example, a "busy" profile marked :math:`\profile{Busy}` could rule out the |NOP| instruction by marking the production for it in the abstract syntax as follows: + For example, a "busy" profile marked :math:`\profilename{BUSY}` could rule out the |NOP| instruction by marking the production for it in the abstract syntax as follows: .. math:: \begin{array}{llcl} \production{instruction} & \instr &::=& \dots \\ - & \exprofiles{\profile{Busy}} &|& \NOP \\ + & \exprofiles{\profile{BUSY}} &|& \NOP \\ & &|& \UNREACHABLE \\ \end{array} @@ -57,7 +57,7 @@ To restrict certain behaviours in a profile, individual :ref:`validation This has the simple consequence that the respective rule is no longer applicable under the given profile. .. note:: - For example, an "infinite" profile marked :math:`\profile{Inf}` could define that growing memory never fails: + For example, an "infinite" profile marked :math:`\profilename{INF}` could define that growing memory never fails: .. math:: \begin{array}{llcl@{\qquad}l} @@ -69,7 +69,7 @@ This has the simple consequence that the respective rule is no longer applicable \wedge & S' = S \with \SMEMS[a] = \growmem(S.\SMEMS[a], n)) \\[1ex] \end{array} \\[1ex] - \exprofiles{\profile{Inf}} & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1)) + \exprofiles{\profile{INF}} & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1)) \end{array} @@ -103,8 +103,8 @@ Defined Profiles single: profile; full .. _profile-full: -Full Profile (:math:`\textsc{Ful}`) -................................... +Full Profile (:math:`{\small{\mathrm{FUL}}}`) +............................................. The *full* profile contains the complete language and all possible behaviours. It imposes no restrictions, i.e., all rules and definitions are active. @@ -115,8 +115,8 @@ All other profiles define sub-languages of this profile. single: profile; deterministic .. _profile-deterministic: -Deterministic Profile (:math:`\textsc{Det}`) -............................................ +Deterministic Profile (:math:`{\small{\mathrm{DET}}}`) +...................................................... The *deterministic* profile excludes all rules marked :math:`\exprofiles{\PROFDET}`. It defines a sub-language that does not exhibit any incidental non-deterministic behaviour: diff --git a/document/core/util/bikeshed_fixup.py b/document/core/util/bikeshed_fixup.py index dcd4fd070..6cfdaa2c7 100755 --- a/document/core/util/bikeshed_fixup.py +++ b/document/core/util/bikeshed_fixup.py @@ -22,10 +22,12 @@ def Main(): number = 1 for section in [ 'Embedding', + 'Profiles', 'Implementation Limitations', 'Validation Algorithm', 'Custom Sections', 'Soundness', + 'Changes', 'Index of Types', 'Index of Instructions', 'Index of Semantic Rules']: diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 16ee13d94..1a4dd1d20 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -110,11 +110,12 @@ .. Notation for Profiles -.. |exprofiles#1| mathdef:: {[\mbox{\bf !}#1]} -.. |profile#1| mathdef:: {\textsc{#1}} +.. |exprofiles#1| mathdef:: {^{\small{[!#1]}}} +.. |profilename#1| mathdef:: {\small{\mathrm{#1}}} +.. |profile| mathdef:: \mathrm -.. |PROFFULL| mathdef:: \xref{appendix/profiles}{profile-full}{\profile{Ful}} -.. |PROFDET| mathdef:: \xref{appendix/profiles}{profile-deterministic}{\profile{Det}} +.. |PROFFULL| mathdef:: \xref{appendix/profiles}{profile-full}{\profile{FUL}} +.. |PROFDET| mathdef:: \xref{appendix/profiles}{profile-deterministic}{\profile{DET}} From 3c78e14f880ac3c8641f63d2657f895c066e006c Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 12 Oct 2021 13:29:09 -0700 Subject: [PATCH 084/230] First pass at semantics --- document/core/exec/numerics.rst | 101 ++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 868ca10d3..f284f2da1 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1970,3 +1970,104 @@ Conversions \begin{array}{lll@{\qquad}l} \narrowu_{M,N}(i) &=& \satu_N(\signed_M(i)) \end{array} + +.. _relaxed-ops: + +Relaxed operators +~~~~~~~~~~~~~~~~~ + +.. todo:: + This paragraph should go to the top of this document, but for ease of + reading, put it together with the description of all the relaxed operations + here. + +The result of *relaxed* operators are *host-dependent*, because the set of +possible results may depend on properties of the host environment (such as +hardware). Technically, each such operator produces a fixed-size *list of sets* +of allowed values. For each execution of the operator in the same environment, +only values from the set at the same position in the list are returned, i.e., +each environment globally chooses a fixed projection for each operator. + +.. note:: + Each operator can be thought of as a family of operations that is fixed to + one particular choice by the execution environment. The fixed operation + itself can still be non-deterministic or partial. + +.. todo:: + Below is a draft of concrete definitions for relaxed-simd operations. The + text description is an informal description of the instructions and are not + the final text. + +Relaxed Multiply Add (madd) and Relaxed Negative Multiply Add (nmadd) +allows for fused or unfused results. :math:`fma` is defined by |IEEE754|_ +(Section 5.4.1) as *fusedMultiplyAdd*. + +.. math:: + \begin{array}{@{}lcll} + relaxed\_madd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + \\ + relaxed\_fnma_N(z_1, z_2, z_3) &=& relaxed\_madd_N(-z_1, z_2, z_3) \\ + \end{array} + +Relaxed swizzle lane is a helper for relaxed swizzle. Result is deterministic +if the signed interpretation of the index is less than 16 (including negative). +:math:`j` is a 8-bit int. + +.. math:: + \begin{array}{@{}lcll} + relaxed\_swizzle\_lane(i^n, j) &=& [ i[j], i[j] ] & (\iff j < 16) \\ + relaxed\_swizzle\_lane(i^n, j) &=& [ 0, 0 ] & (\iff \signed_8(j) < 0) \\ + relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ + \\ + relaxed\_swizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ + \qquad \where rsl_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) + \end{array} + +Relaxed truncate converts float to int, NaN and out of range values are +hardware dependent. + +.. math:: + \begin{array}{@{}lcll} + relaxed\_trunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ + relaxed\_trunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ + relaxed\_trunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ + \\ + relaxed\_trunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ + relaxed\_trunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ + relaxed\_trunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + \end{array} + +Relaxed lane select is deterministic where all bits are set or unset in the +mask. Otherwise depending on hardware, either only the top bit is examined, or +all bits are examined (becomes a bitselect). + +.. math:: + \begin{array}{@{}lcll} + relaxed\_laneselect\_lane_N(i_1, i_2, 2^N-1) &=& [ i_1, i_1 ] \\ + relaxed\_laneselect\_lane_N(i_1, i_2, 0) &=& [ i_2, i_2 ] \\ + relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ + relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ + \\ + relaxed\_laneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ + \qquad \where rll_i &=& relaxed\_laneselect\_lane_W(a^n, b^n, c^n[i]) + \end{array} + +Relaxed min and max differs from min and max when inputs are NaNs or different +signs of 0. It allows for implementation to return the first or second input +when either input is a NaN. + +.. math:: + \begin{array}{@{}lcll} + relaxed\_min_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + relaxed\_min_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + relaxed\_min_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ + relaxed\_min_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + \end{array} + +.. math:: + \begin{array}{@{}lcll} + relaxed\_max_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + relaxed\_max_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + relaxed\_max_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ + relaxed\_max_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \end{array} From 70008acdcb7766e3d29221311358b75e22abbc6e Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 17 Jan 2023 23:28:01 +0000 Subject: [PATCH 085/230] Changes atop profiles --- .../core/appendix/gen-index-instructions.py | 2 +- document/core/appendix/index-instructions.rst | 2 +- document/core/binary/instructions.rst | 25 +++++++++++ document/core/exec/instructions.rst | 45 ++++++++++++++++--- document/core/syntax/instructions.rst | 34 ++++++++++++-- document/core/text/instructions.rst | 25 +++++++++++ document/core/util/macros.def | 6 +++ document/core/valid/instructions.rst | 10 ++--- 8 files changed, 132 insertions(+), 17 deletions(-) diff --git a/document/core/appendix/gen-index-instructions.py b/document/core/appendix/gen-index-instructions.py index fffa2b329..b533ae3c9 100755 --- a/document/core/appendix/gen-index-instructions.py +++ b/document/core/appendix/gen-index-instructions.py @@ -421,7 +421,7 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\V128.\VANDNOT', r'\hex{FD}~~\hex{4F}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-iandnot'), Instruction(r'\V128.\VOR', r'\hex{FD}~~\hex{50}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-ior'), Instruction(r'\V128.\VXOR', r'\hex{FD}~~\hex{51}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-ixor'), - Instruction(r'\V128.\BITSELECT', r'\hex{FD}~~\hex{52}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vvternop', r'exec-vvternop', r'op-ibitselect'), + Instruction(r'\V128.\BITSELECT', r'\hex{FD}~~\hex{52}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-ibitselect'), Instruction(r'\V128.\ANYTRUE', r'\hex{FD}~~\hex{53}', r'[\V128] \to [\I32]', r'valid-vvtestop', r'exec-vvtestop'), Instruction(r'\V128.\LOAD\K{8\_lane}~\memarg~\laneidx', r'\hex{FD}~~\hex{54}', r'[\I32~\V128] \to [\V128]', r'valid-load-lane', r'exec-load-lane'), Instruction(r'\V128.\LOAD\K{16\_lane}~\memarg~\laneidx', r'\hex{FD}~~\hex{55}', r'[\I32~\V128] \to [\V128]', r'valid-load-lane', r'exec-load-lane'), diff --git a/document/core/appendix/index-instructions.rst b/document/core/appendix/index-instructions.rst index 977c21fb3..8ebfc2b82 100644 --- a/document/core/appendix/index-instructions.rst +++ b/document/core/appendix/index-instructions.rst @@ -361,7 +361,7 @@ Instruction Binary Opcode :math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` :math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` :math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst index e13a03236..f6ea313e8 100644 --- a/document/core/binary/instructions.rst +++ b/document/core/binary/instructions.rst @@ -838,6 +838,31 @@ All other vector instructions are plain opcodes without any immediates. \hex{FD}~~95{:}\Bu32 &\Rightarrow& \F64X2.\VPROMOTE\K{\_low\_f32x4}\\ \end{array} +.. math:: + \begin{array}{llclll} + \phantom{\production{instruction}} & \phantom{\Binstr} &\phantom{::=}& \phantom{\dots} && \phantom{vechaslongerinstructionnames} \\[-2ex] &&|& + \hex{FD}~~256{:}\Bu32 &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& + \hex{FD}~~257{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s} \\ &&|& + \hex{FD}~~258{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u} \\ &&|& + \hex{FD}~~259{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \hex{FD}~~260{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \hex{FD}~~261{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_madd} \\ &&|& + \hex{FD}~~262{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_nmadd} \\ &&|& + \hex{FD}~~263{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_madd} \\ &&|& + \hex{FD}~~264{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_nmadd} \\ &&|& + \hex{FD}~~265{:}\Bu32 &\Rightarrow& \I8X16.\K{relaxed\_laneselect} \\ &&|& + \hex{FD}~~266{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_laneselect} \\ &&|& + \hex{FD}~~267{:}\Bu32 &\Rightarrow& \I32X4.\K{relaxed\_laneselect} \\ &&|& + \hex{FD}~~268{:}\Bu32 &\Rightarrow& \I64X2.\K{relaxed\_laneselect} \\ &&|& + \hex{FD}~~269{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_min} \\ &&|& + \hex{FD}~~270{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_max} \\ &&|& + \hex{FD}~~271{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_min} \\ &&|& + \hex{FD}~~272{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_max} \\ &&|& + \hex{FD}~~273{:}\Bu32 &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& + \hex{FD}~~274{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_s} \\ &&|& + \hex{FD}~~275{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ + \end{array} + .. index:: expression pair: binary format; expression diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 828ff5d91..c89774273 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -325,12 +325,12 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} -.. _exec-vvternop: +.. _exec-vternop: -:math:`\V128\K{.}\vvternop` +:math:`\V128\K{.}\vternop` ........................... -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -338,14 +338,14 @@ Most vector instructions are defined in terms of generic numeric operators appli 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`c` be the result of computing :math:`\vvternop_{\I128}(c_1, c_2, c_3)`. +5. Let :math:`c` be the result of computing :math:`\vternop{\I128}(c_1, c_2, c_3)`. 6. Push the value :math:`\V128.\VCONST~c` to the stack. .. math:: \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vvternop &\stepto& (\V128\K{.}\VCONST~c) - & (\iff c = \vvternop_{\I128}(c_1, c_2, c_3)) \\ + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vternop &\stepto& (\V128\K{.}\VCONST~c) + & (\iff c = \vternop{\I128}(c_1, c_2, c_3)) \\ \end{array} @@ -405,6 +405,39 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} +.. _exec-vec-relaxed-swizzle: + +:math:`\K{i8x16.}\RSWIZZLE` +........................... + +1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. + +2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. + +3. Let :math:`i^\ast` be the sequence :math:`\lanes_{i8x16}(c_2)`. + +4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. + +5. Let :math:`j^\ast` be the sequence :math:`\lanes_{i8x16}(c_1)`. + +6. Let :math:`c'` be the result of computing :math:`\RSWIZZLE(j^\ast, i^\ast)`. + +7. Push the value :math:`\V128.\VCONST~c'` onto the stack. + +.. math:: + \begin{array}{l} + \begin{array}{lcl@{\qquad}l} + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\RSWIZZLE &\stepto& (\V128\K{.}\VCONST~c') + \end{array} + \\ \qquad + \begin{array}[t]{@{}r@{~}l@{}} + (\iff & i^\ast = \lanes_{i8x16}(c_2) \\ + \wedge & c^\ast = \lanes_{i8x16}(c_1)~0^{240} \\ + \wedge & c' = \lanes^{-1}_{i8x16}(c^\ast[ i^\ast[0] ] \dots c^\ast[ i^\ast[15] ])) + \end{array} + \end{array} + + .. _exec-vec-shuffle: :math:`\K{i8x16.}\SHUFFLE~x^\ast` diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 9c48736b0..5e8888421 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -190,6 +190,9 @@ Occasionally, it is convenient to group operators together according to the foll .. _syntax-visatbinop: .. _syntax-vfunop: .. _syntax-vfbinop: +.. _syntax-rvfbinop: +.. _syntax-rvfternop: +.. _syntax-rvftruncop: .. _syntax-instr-vec: Vector Instructions @@ -273,8 +276,16 @@ Vector instructions (also known as *SIMD* instructions, *single instruction mult \K{f32x4.}\VCONVERT\K{\_i32x4\_}\sx ~|~ \K{f32x4.}\VDEMOTE\K{\_f64x2\_zero} \\&&|& \K{f64x2.}\VCONVERT\K{\_low\_i32x4\_}\sx ~|~ - \K{f64x2.}\VPROMOTE\K{\_low\_f32x4} \\&&|& - \dots \\ + \K{f64x2.}\VPROMOTE\K{\_low\_f32x4} \\ + & \exprofiles{\PROFDET} &|& \K{i8x16.relaxed\_swizzle} \\ + & \exprofiles{\PROFDET} &|& \K{i32x4.}\RVTRUNC\K{\_f32x4\_}\sx \\ + & \exprofiles{\PROFDET} &|& \fshape\K{.}\rvfternop \\ + & \exprofiles{\PROFDET} &|& \ishape\K{.relaxed\_laneselect} \\ + & \exprofiles{\PROFDET} &|& \fshape\K{.}\rvfbinop \\ + & \exprofiles{\PROFDET} &|& \K{i16x8.}\RQ15MULRS \\ + & \exprofiles{\PROFDET} &|& \K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} \\ + & \exprofiles{\PROFDET} &|& \K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ + & &|& \dots \\ \end{array} .. math:: @@ -338,6 +349,12 @@ Vector instructions (also known as *SIMD* instructions, *single instruction mult \K{max} ~|~ \K{pmin} ~|~ \K{pmax} \\ + \production{relaxed vector floating-point binary operator} & \rvfbinop &::=& + \K{relaxed\_min} ~|~ + \K{relaxed\_max} \\ + \production{relaxed vector floating-point ternary operator} & \rvfternop &::=& + \K{relaxed\_madd} ~|~ + \K{relaxed\_nmadd} \\ \end{array} .. _syntax-vec-shape: @@ -399,9 +416,17 @@ Occasionally, it is convenient to group operators together according to the foll \production{binary operator} & \vbinop &::=& \vibinop ~|~ \vfbinop \\&&|& \viminmaxop ~|~ \visatbinop \\&&|& + \rvfbinop \\&&|& \VMUL ~|~ \AVGR\K{\_u} ~|~ - \Q15MULRSAT\K{\_s} \\ + \Q15MULRSAT\K{\_s} \\&&|& + \RQ15MULRS\K{\_s} ~|~ + \K{relaxed\_dot\_i8x16\_i7x16\_s} \\ + \production{ternary operator} & \vternop &::=& + \vvternop ~|~ + \rvfternop \\&&|& + \K{relaxed\_laneselect} ~|~ + \K{relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ \production{test operator} & \vtestop &::=& \vitestop \\ \production{relational operator} & \vrelop &::=& @@ -411,7 +436,8 @@ Occasionally, it is convenient to group operators together according to the foll \VTRUNC\K{\_sat} ~|~ \VCONVERT ~|~ \VDEMOTE ~|~ - \VPROMOTE \\ + \VPROMOTE ~|~ + \RVTRUNC \\ \end{array} diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index 0e8c577de..e0ec41e4c 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -894,6 +894,31 @@ Vector constant instructions have a mandatory :ref:`shape ` de \text{f64x2.promote\_low\_f32x4} &\Rightarrow& \F64X2.\VPROMOTE\K{\_low\_f32x4}\\ \end{array} +.. math:: + \begin{array}{llclll} + \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{averyveryverylonginstructionnameforvectext} && \phantom{vechasreallyreallyreallylonginstructionnames} \\[-2ex] &&|& + \text{i16x8.relaxed\_swizzle} &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \text{f32x4.relaxed\_madd} &\Rightarrow& \F32X4.\K{relaxed\_madd} \\ &&|& + \text{f32x4.relaxed\_nmadd} &\Rightarrow& \F32X4.\K{relaxed\_nmadd} \\ &&|& + \text{f64x2.relaxed\_madd} &\Rightarrow& \F64X2.\K{relaxed\_madd} \\ &&|& + \text{f64x2.relaxed\_nmadd} &\Rightarrow& \F64X2.\K{relaxed\_nmadd} \\ &&|& + \text{i8x16.relaxed\_laneselect} &\Rightarrow& \I8X16.\K{relaxed\_laneselect} \\ &&|& + \text{i16x8.relaxed\_laneselect} &\Rightarrow& \I16X8.\K{relaxed\_laneselect} \\ &&|& + \text{i32x4.relaxed\_laneselect} &\Rightarrow& \I32X4.\K{relaxed\_laneselect} \\ &&|& + \text{i64x2.relaxed\_laneselect} &\Rightarrow& \I64X2.\K{relaxed\_laneselect} \\ &&|& + \text{f32x4.relaxed\_min} &\Rightarrow& \F32X4.\K{relaxed\_min} \\ &&|& + \text{f32x4.relaxed\_max} &\Rightarrow& \F32X4.\K{relaxed\_max} \\ &&|& + \text{f64x2.relaxed\_min} &\Rightarrow& \F64X2.\K{relaxed\_min} \\ &&|& + \text{f64x2.relaxed\_max} &\Rightarrow& \F64X2.\K{relaxed\_max} \\ &&|& + \text{i16x8.relaxed\_q15mulr\_s} &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_s} \\ &&|& + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_add\_s} + \end{array} + .. index:: ! folded instruction, S-expression .. _text-foldedinstr: diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 1a4dd1d20..a3c91298f 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -498,6 +498,9 @@ .. |EXTADDPAIRWISE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{extadd\_pairwise}} .. |VDEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{demote}} .. |VPROMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{promote}} +.. |RSWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_swizzle}} +.. |RQ15MULRS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_q15mulr\_s}} +.. |RVTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} .. Instructions, non-terminals @@ -545,6 +548,9 @@ .. |vfrelop| mathdef:: \xref{syntax/instructions}{syntax-vfrelop}{\X{vfrelop}} .. |vitestop| mathdef:: \xref{syntax/instructions}{syntax-vitestop}{\X{vitestop}} .. |vtestop| mathdef:: \xref{syntax/instructions}{syntax-vtestop}{\X{vtestop}} +.. |rvfbinop| mathdef:: \xref{syntax/instructions}{syntax-rvfbinop}{\X{rvfbinop}} +.. |rvfternop| mathdef:: \xref{syntax/instructions}{syntax-rvfternop}{\X{rvfternop}} +.. |rvftruncop| mathdef:: \xref{syntax/instructions}{syntax-rvftruncop}{\X{rvftruncop}} .. |sx| mathdef:: \xref{syntax/instructions}{syntax-sx}{\X{sx}} .. |half| mathdef:: \xref{syntax/instructions}{syntax-half}{\X{half}} diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index afcda69c0..d15c0f257 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -320,9 +320,9 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-vvternop: +.. _valid-vternop: -:math:`\V128\K{.}\vvternop` +:math:`\V128\K{.}\vternop` ........................... * The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. @@ -330,7 +330,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. math:: \frac{ }{ - C \vdashinstr \V128\K{.}\vvternop : [\V128~\V128~\V128] \to [\V128] + C \vdashinstr \V128\K{.}\vternop : [\V128~\V128~\V128] \to [\V128] } @@ -350,8 +350,8 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-vec-swizzle: -:math:`\K{i8x16.}\SWIZZLE` -.......................... +:math:`\K{i8x16.}\SWIZZLE` :math:`\K{i8x16.relaxed\_swizzle}` +............................................................. * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. From ab7d0be29469efd1a8d582219ca4f4817bb17b72 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 21:12:03 +0000 Subject: [PATCH 086/230] Changes to execution and validation --- document/core/exec/instructions.rst | 104 ++++++++++++++++++++++++-- document/core/exec/numerics.rst | 81 ++++++++++++-------- document/core/syntax/instructions.rst | 23 +++--- document/core/util/macros.def | 3 + document/core/valid/instructions.rst | 60 +++++++++++++-- 5 files changed, 215 insertions(+), 56 deletions(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index c89774273..16771a852 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -325,12 +325,12 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} -.. _exec-vternop: +.. _exec-vvternop: -:math:`\V128\K{.}\vternop` +:math:`\V128\K{.}\vvternop` ........................... -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -338,14 +338,14 @@ Most vector instructions are defined in terms of generic numeric operators appli 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`c` be the result of computing :math:`\vternop{\I128}(c_1, c_2, c_3)`. +5. Let :math:`c` be the result of computing :math:`\vvternop_{\I128}(c_1, c_2, c_3)`. 6. Push the value :math:`\V128.\VCONST~c` to the stack. .. math:: \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vternop &\stepto& (\V128\K{.}\VCONST~c) - & (\iff c = \vternop{\I128}(c_1, c_2, c_3)) \\ + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vvternop &\stepto& (\V128\K{.}\VCONST~c) + & (\iff c = \vvternop_{\I128}(c_1, c_2, c_3)) \\ \end{array} @@ -618,6 +618,28 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} +:math:`\shape\K{.}\vternop` +........................... + +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. + +2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. + +3. Pop the value :math:`\V128.\VCONST~c_2` from the stack. + +4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. + +5. Let :math:`c` be the result of computing :math:`\vternop_{\shape}(c_1, c_2, c_3)`. + +6. Push the value :math:`\V128.\VCONST~c` to the stack. + +.. math:: + \begin{array}{lcl@{\qquad}l} + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vternop &\stepto& (\V128\K{.}\VCONST~c) + & (\iff c = \vternop_{\shape}(c_1, c_2, c_3)) \\ + \end{array} + + .. _exec-vrelop: :math:`t\K{x}N\K{.}\vrelop` @@ -901,6 +923,76 @@ where: \end{array} +.. _exec-vec-rdot: + + +:math:`\K{i16x8.}\_dot\K{\_i8x16\_i7x16\_s}` +................................................... + +1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. + +2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. + +3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. + +4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\ridotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` + +5. Let :math:`j^8` be the result of computing :math:`\iadd_{16}(i_1, i_2)^8`. + +6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I16X8}(j^8)`. + +7. Push the value :math:`\V128.\VCONST~c` onto the stack. + +.. math:: + \begin{array}{l} + \begin{array}{llcl@{\qquad}l} + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}relaxed\_dot\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + \end{array} + \\ \qquad + \begin{array}[t]{@{}r@{~}l@{}} + (\iff & (i_1~i_2)^8 = \ridotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + \wedge & j^8 = \iadd_{16}(i_1, i_2)^8 \\ + \wedge & c = \lanes^{-1}_{\I16X8}(j^8)) + \end{array} + \end{array} + + +:math:`\K{i32x4.}\_dot\K{\_i8x16\_i7x16\_add\_s}` +........................................................ + +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. + +2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. + +3. Pop the value :math:`\V128.\VCONST~c_2` from the stack. + +4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. + +5. Let :math:`(i_1~i_2~i_3~i_4)^4` be the result of computing :math:`\ridotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` + +6. Let :math:`k^4` be the result of computing :math:`\lanes_{\I32X4}(c_3)`. + +7. Let :math:`j^4` be the result of computing :math:`\iadd_{32}(i_1, i_2, i_3, i_4, k)^4`. + +8. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I32X4}(j^4)`. + +9. Push the value :math:`\V128.\VCONST~c` onto the stack. + +.. math:: + \begin{array}{l} + \begin{array}{llcl@{\qquad}l} + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\_dot\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + \end{array} + \\ \qquad + \begin{array}[t]{@{}r@{~}l@{}} + (\iff & (i_1~i_2~i_3~i_4)^4 = \ridotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + \wedge & k^4 = \lanes_{\I32X4}(c_3) \\ + \wedge & j^4 = \iadd_{16}(i_1, i_2, i_3, i_4, k)^4 \\ + \wedge & c = \lanes^{-1}_{\I32X4}(j^4)) + \end{array} + \end{array} + + .. _exec-vec-extmul: :math:`t_2\K{x}N\K{.}\EXTMUL\K{\_}\half\K{\_}t_1\K{x}M\K{\_}\sx` diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index f284f2da1..2da425417 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2003,10 +2003,11 @@ allows for fused or unfused results. :math:`fma` is defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: - \begin{array}{@{}lcll} - relaxed\_madd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + \begin{array}{@{}llcll} + \EXPROFDET & relaxed\_madd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + & relaxed\_madd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ \\ - relaxed\_fnma_N(z_1, z_2, z_3) &=& relaxed\_madd_N(-z_1, z_2, z_3) \\ + & relaxed\_fnma_N(z_1, z_2, z_3) &=& relaxed\_madd_N(-z_1, z_2, z_3) \\ \end{array} Relaxed swizzle lane is a helper for relaxed swizzle. Result is deterministic @@ -2014,27 +2015,30 @@ if the signed interpretation of the index is less than 16 (including negative). :math:`j` is a 8-bit int. .. math:: - \begin{array}{@{}lcll} - relaxed\_swizzle\_lane(i^n, j) &=& [ i[j], i[j] ] & (\iff j < 16) \\ - relaxed\_swizzle\_lane(i^n, j) &=& [ 0, 0 ] & (\iff \signed_8(j) < 0) \\ - relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ + \begin{array}{@{}llcll} + & relaxed\_swizzle\_lane(i^n, j) &=& i[j] & (\iff j < 16) \\ + & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ + \EXPROFDET & relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ + & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\otherwise) \\ \\ - relaxed\_swizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ - \qquad \where rsl_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) + & relaxed\_swizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ + & \qquad \where rsl_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) \end{array} Relaxed truncate converts float to int, NaN and out of range values are hardware dependent. .. math:: - \begin{array}{@{}lcll} - relaxed\_trunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ - relaxed\_trunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ - relaxed\_trunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ + \begin{array}{@{}llcll} + \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ + \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ + \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ + & relaxed\_trunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ \\ - relaxed\_trunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ - relaxed\_trunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ - relaxed\_trunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ + \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ + \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + & relaxed\_trunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ \end{array} Relaxed lane select is deterministic where all bits are set or unset in the @@ -2042,14 +2046,15 @@ mask. Otherwise depending on hardware, either only the top bit is examined, or all bits are examined (becomes a bitselect). .. math:: - \begin{array}{@{}lcll} - relaxed\_laneselect\_lane_N(i_1, i_2, 2^N-1) &=& [ i_1, i_1 ] \\ - relaxed\_laneselect\_lane_N(i_1, i_2, 0) &=& [ i_2, i_2 ] \\ - relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ - relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ + \begin{array}{@{}llcll} + & relaxed\_laneselect\_lane_N(i_1, i_2, 2^N-1) &=& i_1 \\ + & relaxed\_laneselect\_lane_N(i_1, i_2, 0) &=& i_2 \\ + \EXPROFDET & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ + \EXPROFDET & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ + & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ \\ - relaxed\_laneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ - \qquad \where rll_i &=& relaxed\_laneselect\_lane_W(a^n, b^n, c^n[i]) + & relaxed\_laneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ + & \qquad \where rll_i &=& relaxed\_laneselect\_lane_W(a^n[i], b^n[i], c^n[i]) \\ \end{array} Relaxed min and max differs from min and max when inputs are NaNs or different @@ -2057,17 +2062,27 @@ signs of 0. It allows for implementation to return the first or second input when either input is a NaN. .. math:: - \begin{array}{@{}lcll} - relaxed\_min_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - relaxed\_min_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - relaxed\_min_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ - relaxed\_min_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + \begin{array}{@{}llcll} + \EXPROFDET & relaxed\_min_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & relaxed\_min_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & relaxed\_min_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ + & relaxed\_min_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ \end{array} .. math:: - \begin{array}{@{}lcll} - relaxed\_max_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - relaxed\_max_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - relaxed\_max_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ - relaxed\_max_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \begin{array}{@{}llcll} + \EXPROFDET & relaxed\_max_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & relaxed\_max_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & relaxed\_max_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ + & relaxed\_max_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \end{array} + +.. _op-ridotmul: + +Relaxed integer dot product differs from integer dot product when the elements of the input have top bit set. + +.. math:: + \begin{array}{@{}llcll} + \EXPROFDET & relaxed\_dot\_mul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ + & relaxed\_dot\_mul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ \end{array} diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 5e8888421..5f912a2b2 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -277,14 +277,14 @@ Vector instructions (also known as *SIMD* instructions, *single instruction mult \K{f32x4.}\VDEMOTE\K{\_f64x2\_zero} \\&&|& \K{f64x2.}\VCONVERT\K{\_low\_i32x4\_}\sx ~|~ \K{f64x2.}\VPROMOTE\K{\_low\_f32x4} \\ - & \exprofiles{\PROFDET} &|& \K{i8x16.relaxed\_swizzle} \\ - & \exprofiles{\PROFDET} &|& \K{i32x4.}\RVTRUNC\K{\_f32x4\_}\sx \\ - & \exprofiles{\PROFDET} &|& \fshape\K{.}\rvfternop \\ - & \exprofiles{\PROFDET} &|& \ishape\K{.relaxed\_laneselect} \\ - & \exprofiles{\PROFDET} &|& \fshape\K{.}\rvfbinop \\ - & \exprofiles{\PROFDET} &|& \K{i16x8.}\RQ15MULRS \\ - & \exprofiles{\PROFDET} &|& \K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} \\ - & \exprofiles{\PROFDET} &|& \K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ + & &|& \K{i8x16.relaxed\_swizzle} \\ + & &|& \K{i32x4.}\RVTRUNC\K{\_f32x4\_}\sx \\ + & &|& \fshape\K{.}\rvfternop \\ + & &|& \ishape\K{.relaxed\_laneselect} \\ + & &|& \fshape\K{.}\rvfbinop \\ + & &|& \K{i16x8.}\RQ15MULRS \\ + & &|& \K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} \\ + & &|& \K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ & &|& \dots \\ \end{array} @@ -399,6 +399,7 @@ For the other vector instructions, the use of two's complement for the signed in .. _syntax-vunop: .. _syntax-vbinop: .. _syntax-vrelop: +.. _syntax-vternop: .. _syntax-vtestop: .. _syntax-vcvtop: @@ -420,13 +421,11 @@ Occasionally, it is convenient to group operators together according to the foll \VMUL ~|~ \AVGR\K{\_u} ~|~ \Q15MULRSAT\K{\_s} \\&&|& - \RQ15MULRS\K{\_s} ~|~ - \K{relaxed\_dot\_i8x16\_i7x16\_s} \\ + \RQ15MULRS\K{\_s} \\ \production{ternary operator} & \vternop &::=& \vvternop ~|~ \rvfternop \\&&|& - \K{relaxed\_laneselect} ~|~ - \K{relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ + \K{relaxed\_laneselect} \\ \production{test operator} & \vtestop &::=& \vitestop \\ \production{relational operator} & \vrelop &::=& diff --git a/document/core/util/macros.def b/document/core/util/macros.def index a3c91298f..a41c701ff 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -116,6 +116,7 @@ .. |PROFFULL| mathdef:: \xref{appendix/profiles}{profile-full}{\profile{FUL}} .. |PROFDET| mathdef:: \xref{appendix/profiles}{profile-deterministic}{\profile{DET}} +.. |EXPROFDET| mathdef:: \exprofiles{\PROFDET} @@ -1197,6 +1198,8 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} +.. |ridotmul| mathdef:: \xref{exec/numerics}{op-ridotmul}{\F{relaxed\_dot\_mul}} + .. Numerics, meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index d15c0f257..c5544f97e 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -320,9 +320,9 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-vternop: +.. _valid-vvternop: -:math:`\V128\K{.}\vternop` +:math:`\V128\K{.}\vvternop` ........................... * The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. @@ -330,7 +330,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. math:: \frac{ }{ - C \vdashinstr \V128\K{.}\vternop : [\V128~\V128~\V128] \to [\V128] + C \vdashinstr \V128\K{.}\vvternop : [\V128~\V128~\V128] \to [\V128] } @@ -350,8 +350,8 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-vec-swizzle: -:math:`\K{i8x16.}\SWIZZLE` :math:`\K{i8x16.relaxed\_swizzle}` -............................................................. +:math:`\K{i8x16.}\SWIZZLE` +..................................... * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. @@ -362,6 +362,20 @@ The following auxiliary function denotes the number of lanes in a vector shape, } +.. _valid-vec-rswizzle: + +:math:`\K{i8x16.}relaxed\_\SWIZZLE` +..................................... + +* The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. + +.. math:: + \frac{ + }{ + C \vdashinstr \K{i8x16.}relaxed\_\SWIZZLE : [\V128~\V128] \to [\V128] + } + + .. _valid-vec-shuffle: :math:`\K{i8x16.}\SHUFFLE~\laneidx^{16}` @@ -459,6 +473,20 @@ The following auxiliary function denotes the number of lanes in a vector shape, } +.. _valid-vternop: + +:math:`\shape\K{.}\vternop` +........................... + +* The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. + +.. math:: + \frac{ + }{ + C \vdashinstr \shape\K{.}\vternop : [\V128~\V128~\V128] \to [\V128] + } + + .. _valid-vrelop: :math:`\shape\K{.}\vrelop` @@ -556,6 +584,28 @@ The following auxiliary function denotes the number of lanes in a vector shape, C \vdashinstr \ishape_1\K{.}\DOT\K{\_}\ishape_2\K{\_s} : [\V128~\V128] \to [\V128] } +:math:`\ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_s}` +....................................................... + +* The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. + +.. math:: + \frac{ + }{ + C \vdashinstr \ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_s} : [\V128~\V128] \to [\V128] + } + +:math:`\ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_add\_\_s}` +.............................................................. + +* The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. + +.. math:: + \frac{ + }{ + C \vdashinstr \ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_add\_\_s} : [\V128~\V128~\V128] \to [\V128] + } + .. _valid-vec-extmul: From 1cf8ca9b880d47e98f6b767273a3c16fa4c9427c Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 21:12:58 +0000 Subject: [PATCH 087/230] Fix to index instructions --- document/core/appendix/index-instructions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/index-instructions.rst b/document/core/appendix/index-instructions.rst index 8ebfc2b82..977c21fb3 100644 --- a/document/core/appendix/index-instructions.rst +++ b/document/core/appendix/index-instructions.rst @@ -361,7 +361,7 @@ Instruction Binary Opcode :math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` :math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` :math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` :math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` From 52668fa048399e517fa6e2bae22a8df11bbcb5bb Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 21:15:19 +0000 Subject: [PATCH 088/230] Fix instruction generation script --- document/core/appendix/gen-index-instructions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/gen-index-instructions.py b/document/core/appendix/gen-index-instructions.py index b533ae3c9..fffa2b329 100755 --- a/document/core/appendix/gen-index-instructions.py +++ b/document/core/appendix/gen-index-instructions.py @@ -421,7 +421,7 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\V128.\VANDNOT', r'\hex{FD}~~\hex{4F}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-iandnot'), Instruction(r'\V128.\VOR', r'\hex{FD}~~\hex{50}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-ior'), Instruction(r'\V128.\VXOR', r'\hex{FD}~~\hex{51}', r'[\V128~\V128] \to [\V128]', r'valid-vvbinop', r'exec-vvbinop', r'op-ixor'), - Instruction(r'\V128.\BITSELECT', r'\hex{FD}~~\hex{52}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-ibitselect'), + Instruction(r'\V128.\BITSELECT', r'\hex{FD}~~\hex{52}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vvternop', r'exec-vvternop', r'op-ibitselect'), Instruction(r'\V128.\ANYTRUE', r'\hex{FD}~~\hex{53}', r'[\V128] \to [\I32]', r'valid-vvtestop', r'exec-vvtestop'), Instruction(r'\V128.\LOAD\K{8\_lane}~\memarg~\laneidx', r'\hex{FD}~~\hex{54}', r'[\I32~\V128] \to [\V128]', r'valid-load-lane', r'exec-load-lane'), Instruction(r'\V128.\LOAD\K{16\_lane}~\memarg~\laneidx', r'\hex{FD}~~\hex{55}', r'[\I32~\V128] \to [\V128]', r'valid-load-lane', r'exec-load-lane'), From 83b983d4d46070860ffbae736a2c0ec3de5cc938 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 21:28:35 +0000 Subject: [PATCH 089/230] Add macros --- document/core/exec/instructions.rst | 8 ++--- document/core/exec/numerics.rst | 42 +++++++++++++++++++-------- document/core/syntax/instructions.rst | 1 - document/core/util/macros.def | 10 +++++-- document/core/valid/instructions.rst | 8 ++--- 5 files changed, 46 insertions(+), 23 deletions(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 16771a852..5989a1fdd 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -926,7 +926,7 @@ where: .. _exec-vec-rdot: -:math:`\K{i16x8.}\_dot\K{\_i8x16\_i7x16\_s}` +:math:`\K{i16x8.}\DOT\K{\_i8x16\_i7x16\_s}` ................................................... 1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. @@ -946,7 +946,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}relaxed\_dot\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}\DOT\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -957,7 +957,7 @@ where: \end{array} -:math:`\K{i32x4.}\_dot\K{\_i8x16\_i7x16\_add\_s}` +:math:`\K{i32x4.}\DOT\K{\_i8x16\_i7x16\_add\_s}` ........................................................ 1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. @@ -981,7 +981,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\_dot\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\DOT\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 2da425417..c327cc8cc 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1998,18 +1998,25 @@ each environment globally chooses a fixed projection for each operator. text description is an informal description of the instructions and are not the final text. + +.. _op-relaxed_madd: +.. _op-relaxed_nmadd: + Relaxed Multiply Add (madd) and Relaxed Negative Multiply Add (nmadd) allows for fused or unfused results. :math:`fma` is defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & relaxed\_madd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ - & relaxed\_madd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ + \EXPROFDET & \rmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + & \rmadd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ \\ - & relaxed\_fnma_N(z_1, z_2, z_3) &=& relaxed\_madd_N(-z_1, z_2, z_3) \\ + & \rnmadd_N(z_1, z_2, z_3) &=& \rmadd_N(-z_1, z_2, z_3) \\ \end{array} + +.. _op-relaxed_swizzle: + Relaxed swizzle lane is a helper for relaxed swizzle. Result is deterministic if the signed interpretation of the index is less than 16 (including negative). :math:`j` is a 8-bit int. @@ -2021,10 +2028,13 @@ if the signed interpretation of the index is less than 16 (including negative). \EXPROFDET & relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\otherwise) \\ \\ - & relaxed\_swizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ + & \rswizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ & \qquad \where rsl_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) \end{array} + +.. _op-relaxed_trunc: + Relaxed truncate converts float to int, NaN and out of range values are hardware dependent. @@ -2033,14 +2043,17 @@ hardware dependent. \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ - & relaxed\_trunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ + & \rtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ \\ \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ - & relaxed\_trunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ + & \rtrunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ \end{array} + +.. _op-relaxed_laneselect: + Relaxed lane select is deterministic where all bits are set or unset in the mask. Otherwise depending on hardware, either only the top bit is examined, or all bits are examined (becomes a bitselect). @@ -2053,10 +2066,14 @@ all bits are examined (becomes a bitselect). \EXPROFDET & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ \\ - & relaxed\_laneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ + & \rlaneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ & \qquad \where rll_i &=& relaxed\_laneselect\_lane_W(a^n[i], b^n[i], c^n[i]) \\ \end{array} + +.. _op-relaxed_min: +.. _op-relaxed_max: + Relaxed min and max differs from min and max when inputs are NaNs or different signs of 0. It allows for implementation to return the first or second input when either input is a NaN. @@ -2066,7 +2083,7 @@ when either input is a NaN. \EXPROFDET & relaxed\_min_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ \EXPROFDET & relaxed\_min_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ \EXPROFDET & relaxed\_min_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ - & relaxed\_min_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + & \rmin(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ \end{array} .. math:: @@ -2074,15 +2091,16 @@ when either input is a NaN. \EXPROFDET & relaxed\_max_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ \EXPROFDET & relaxed\_max_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ \EXPROFDET & relaxed\_max_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ - & relaxed\_max_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + & \rmax(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ \end{array} -.. _op-ridotmul: + +.. _op-relaxed_idotmul: Relaxed integer dot product differs from integer dot product when the elements of the input have top bit set. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & relaxed\_dot\_mul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ - & relaxed\_dot\_mul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ + \EXPROFDET & \ridotmul{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ + & \ridotmul{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ \end{array} diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 5f912a2b2..63aaaa44b 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -192,7 +192,6 @@ Occasionally, it is convenient to group operators together according to the foll .. _syntax-vfbinop: .. _syntax-rvfbinop: .. _syntax-rvfternop: -.. _syntax-rvftruncop: .. _syntax-instr-vec: Vector Instructions diff --git a/document/core/util/macros.def b/document/core/util/macros.def index a41c701ff..31383012d 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -551,7 +551,6 @@ .. |vtestop| mathdef:: \xref{syntax/instructions}{syntax-vtestop}{\X{vtestop}} .. |rvfbinop| mathdef:: \xref{syntax/instructions}{syntax-rvfbinop}{\X{rvfbinop}} .. |rvfternop| mathdef:: \xref{syntax/instructions}{syntax-rvfternop}{\X{rvfternop}} -.. |rvftruncop| mathdef:: \xref{syntax/instructions}{syntax-rvftruncop}{\X{rvftruncop}} .. |sx| mathdef:: \xref{syntax/instructions}{syntax-sx}{\X{sx}} .. |half| mathdef:: \xref{syntax/instructions}{syntax-half}{\X{half}} @@ -1198,7 +1197,14 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} -.. |ridotmul| mathdef:: \xref{exec/numerics}{op-ridotmul}{\F{relaxed\_dot\_mul}} +.. |rmadd| mathdef:: \xref{exec/numerics}{op-relaxed_madd}{\F{relaxed\_madd}} +.. |rnmadd| mathdef:: \xref{exec/numerics}{op-relaxed_nmadd}{\F{relaxed\_nmadd}} +.. |rswizzle| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle}{\F{relaxed\_swizzle}} +.. |rtrunc| mathdef:: \xref{exec/numerics}{op-relaxed_trunc}{\F{relaxed\_trunc}} +.. |rlaneselect| mathdef:: \xref{exec/numerics}{op-relaxed_laneselect}{\F{relaxed\_laneselect}} +.. |rmin| mathdef:: \xref{exec/numerics}{op-relaxed_min}{\F{relaxed\_min}} +.. |rmax| mathdef:: \xref{exec/numerics}{op-relaxed_max}{\F{relaxed\_max}} +.. |ridotmul| mathdef:: \xref{exec/numerics}{op-relaxed_idotmul}{\F{relaxed\_dot\_mul}} .. Numerics, meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index c5544f97e..6d2783e73 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -351,7 +351,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-vec-swizzle: :math:`\K{i8x16.}\SWIZZLE` -..................................... +.......................... * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. @@ -364,15 +364,15 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-vec-rswizzle: -:math:`\K{i8x16.}relaxed\_\SWIZZLE` -..................................... +:math:`\K{i8x16.}\RSWIZZLE` +................................... * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. .. math:: \frac{ }{ - C \vdashinstr \K{i8x16.}relaxed\_\SWIZZLE : [\V128~\V128] \to [\V128] + C \vdashinstr \K{i8x16.}\RSWIZZLE : [\V128~\V128] \to [\V128] } From 8824d97dcb8f6448fd8c33d309b3bb10bd34cc5d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 23:23:54 +0000 Subject: [PATCH 090/230] Update index of instructions, exec/numerics --- .../core/appendix/gen-index-instructions.py | 20 + document/core/appendix/index-instructions.rst | 1040 +++++++++-------- document/core/exec/instructions.rst | 64 +- document/core/exec/numerics.rst | 151 ++- document/core/syntax/instructions.rst | 17 +- document/core/util/macros.def | 25 +- document/core/valid/instructions.rst | 17 + 7 files changed, 740 insertions(+), 594 deletions(-) diff --git a/document/core/appendix/gen-index-instructions.py b/document/core/appendix/gen-index-instructions.py index fffa2b329..b0aba79c2 100755 --- a/document/core/appendix/gen-index-instructions.py +++ b/document/core/appendix/gen-index-instructions.py @@ -575,6 +575,26 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}', r'\hex{FD}~~\hex{FD}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-trunc_sat_u'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_s}', r'\hex{FD}~~\hex{FE}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_s'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_u}', r'\hex{FD}~~\hex{FF}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_u'), + Instruction(r'\I8X16.\RSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vec-rswizzle', r'exec-vec-rswizzle', r'op-rswizzle'), + Instruction(r'\I32X4.\RTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), + Instruction(r'\I32X4.\RTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), + Instruction(r'\I32X4.\RTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), + Instruction(r'\I32X4.\RTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), + Instruction(r'\F32X4.\RMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), + Instruction(r'\F32X4.\RNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), + Instruction(r'\F64X2.\RMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), + Instruction(r'\F64X2.\RNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), + Instruction(r'\I8X16.\RLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I16X8.\RLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I32X4.\RLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I64X2.\RLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\F32X4.\RMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), + Instruction(r'\F32X4.\RMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), + Instruction(r'\F64X2.\RMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), + Instruction(r'\F64X2.\RMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), + Instruction(r'\I16X8.\RQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-irq15mulr_s'), + Instruction(r'\I16X8.\RDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vec-rdot', r'exec-vec-rdot', r'op-ridotmul'), + Instruction(r'\I32X4.\RDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vec-rdot', r'exec-vec-rdot', r'op-ridotmul'), ] diff --git a/document/core/appendix/index-instructions.rst b/document/core/appendix/index-instructions.rst index 977c21fb3..502935af0 100644 --- a/document/core/appendix/index-instructions.rst +++ b/document/core/appendix/index-instructions.rst @@ -6,516 +6,536 @@ Index of Instructions --------------------- -================================================= ==================================== ============================================= ============================================= ================================================================== -Instruction Binary Opcode Type Validation Execution -================================================= ==================================== ============================================= ============================================= ================================================================== -:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\ELSE` :math:`\hex{05}` -(reserved) :math:`\hex{06}` -(reserved) :math:`\hex{07}` -(reserved) :math:`\hex{08}` -(reserved) :math:`\hex{09}` -(reserved) :math:`\hex{0A}` -:math:`\END` :math:`\hex{0B}` -:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{12}` -(reserved) :math:`\hex{13}` -(reserved) :math:`\hex{14}` -(reserved) :math:`\hex{15}` -(reserved) :math:`\hex{16}` -(reserved) :math:`\hex{17}` -(reserved) :math:`\hex{18}` -(reserved) :math:`\hex{19}` -:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{1D}` -(reserved) :math:`\hex{1E}` -(reserved) :math:`\hex{1F}` -:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{27}` -:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -(reserved) :math:`\hex{C5}` -(reserved) :math:`\hex{C6}` -(reserved) :math:`\hex{C7}` -(reserved) :math:`\hex{C8}` -(reserved) :math:`\hex{C9}` -(reserved) :math:`\hex{CA}` -(reserved) :math:`\hex{CB}` -(reserved) :math:`\hex{CC}` -(reserved) :math:`\hex{CD}` -(reserved) :math:`\hex{CE}` -(reserved) :math:`\hex{CF}` -:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{D3}` -(reserved) :math:`\hex{D4}` -(reserved) :math:`\hex{D5}` -(reserved) :math:`\hex{D6}` -(reserved) :math:`\hex{D7}` -(reserved) :math:`\hex{D8}` -(reserved) :math:`\hex{D9}` -(reserved) :math:`\hex{DA}` -(reserved) :math:`\hex{DB}` -(reserved) :math:`\hex{DC}` -(reserved) :math:`\hex{DD}` -(reserved) :math:`\hex{DE}` -(reserved) :math:`\hex{DF}` -(reserved) :math:`\hex{E0}` -(reserved) :math:`\hex{E1}` -(reserved) :math:`\hex{E2}` -(reserved) :math:`\hex{E3}` -(reserved) :math:`\hex{E4}` -(reserved) :math:`\hex{E5}` -(reserved) :math:`\hex{E6}` -(reserved) :math:`\hex{E7}` -(reserved) :math:`\hex{E8}` -(reserved) :math:`\hex{E9}` -(reserved) :math:`\hex{EA}` -(reserved) :math:`\hex{EB}` -(reserved) :math:`\hex{EC}` -(reserved) :math:`\hex{ED}` -(reserved) :math:`\hex{EE}` -(reserved) :math:`\hex{EF}` -(reserved) :math:`\hex{F0}` -(reserved) :math:`\hex{F1}` -(reserved) :math:`\hex{F2}` -(reserved) :math:`\hex{F3}` -(reserved) :math:`\hex{F4}` -(reserved) :math:`\hex{F5}` -(reserved) :math:`\hex{F6}` -(reserved) :math:`\hex{F7}` -(reserved) :math:`\hex{F8}` -(reserved) :math:`\hex{F9}` -(reserved) :math:`\hex{FA}` -(reserved) :math:`\hex{FB}` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -================================================= ==================================== ============================================= ============================================= ================================================================== +================================================= ==================================== ============================================= ============================================= ===================================================================== +Instruction Binary Opcode Type Validation Execution +================================================= ==================================== ============================================= ============================================= ===================================================================== +:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\ELSE` :math:`\hex{05}` +(reserved) :math:`\hex{06}` +(reserved) :math:`\hex{07}` +(reserved) :math:`\hex{08}` +(reserved) :math:`\hex{09}` +(reserved) :math:`\hex{0A}` +:math:`\END` :math:`\hex{0B}` +:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{12}` +(reserved) :math:`\hex{13}` +(reserved) :math:`\hex{14}` +(reserved) :math:`\hex{15}` +(reserved) :math:`\hex{16}` +(reserved) :math:`\hex{17}` +(reserved) :math:`\hex{18}` +(reserved) :math:`\hex{19}` +:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{1D}` +(reserved) :math:`\hex{1E}` +(reserved) :math:`\hex{1F}` +:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{27}` +:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +(reserved) :math:`\hex{C5}` +(reserved) :math:`\hex{C6}` +(reserved) :math:`\hex{C7}` +(reserved) :math:`\hex{C8}` +(reserved) :math:`\hex{C9}` +(reserved) :math:`\hex{CA}` +(reserved) :math:`\hex{CB}` +(reserved) :math:`\hex{CC}` +(reserved) :math:`\hex{CD}` +(reserved) :math:`\hex{CE}` +(reserved) :math:`\hex{CF}` +:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{D3}` +(reserved) :math:`\hex{D4}` +(reserved) :math:`\hex{D5}` +(reserved) :math:`\hex{D6}` +(reserved) :math:`\hex{D7}` +(reserved) :math:`\hex{D8}` +(reserved) :math:`\hex{D9}` +(reserved) :math:`\hex{DA}` +(reserved) :math:`\hex{DB}` +(reserved) :math:`\hex{DC}` +(reserved) :math:`\hex{DD}` +(reserved) :math:`\hex{DE}` +(reserved) :math:`\hex{DF}` +(reserved) :math:`\hex{E0}` +(reserved) :math:`\hex{E1}` +(reserved) :math:`\hex{E2}` +(reserved) :math:`\hex{E3}` +(reserved) :math:`\hex{E4}` +(reserved) :math:`\hex{E5}` +(reserved) :math:`\hex{E6}` +(reserved) :math:`\hex{E7}` +(reserved) :math:`\hex{E8}` +(reserved) :math:`\hex{E9}` +(reserved) :math:`\hex{EA}` +(reserved) :math:`\hex{EB}` +(reserved) :math:`\hex{EC}` +(reserved) :math:`\hex{ED}` +(reserved) :math:`\hex{EE}` +(reserved) :math:`\hex{EF}` +(reserved) :math:`\hex{F0}` +(reserved) :math:`\hex{F1}` +(reserved) :math:`\hex{F2}` +(reserved) :math:`\hex{F3}` +(reserved) :math:`\hex{F4}` +(reserved) :math:`\hex{F5}` +(reserved) :math:`\hex{F6}` +(reserved) :math:`\hex{F7}` +(reserved) :math:`\hex{F8}` +(reserved) :math:`\hex{F9}` +(reserved) :math:`\hex{FA}` +(reserved) :math:`\hex{FB}` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RSWIZZLE` :math:`\hex{FD}~~\hex{80}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RTRUNC\K{\_f32x4\_s}` :math:`\hex{FD}~~\hex{81}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RTRUNC\K{\_f32x4\_u}` :math:`\hex{FD}~~\hex{82}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RTRUNC\K{\_f64x2\_s}` :math:`\hex{FD}~~\hex{83}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RTRUNC\K{\_f64x2\_u}` :math:`\hex{FD}~~\hex{84}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RMADD` :math:`\hex{FD}~~\hex{85}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RNMADD` :math:`\hex{FD}~~\hex{86}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RMADD` :math:`\hex{FD}~~\hex{87}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RNMADD` :math:`\hex{FD}~~\hex{88}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RLANESELECT` :math:`\hex{FD}~~\hex{89}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RLANESELECT` :math:`\hex{FD}~~\hex{8A}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RLANESELECT` :math:`\hex{FD}~~\hex{8B}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\RLANESELECT` :math:`\hex{FD}~~\hex{8C}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RMIN` :math:`\hex{FD}~~\hex{8D}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RMAX` :math:`\hex{FD}~~\hex{8E}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RMIN` :math:`\hex{FD}~~\hex{8F}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RMAX` :math:`\hex{FD}~~\hex{90}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RQ15MULRS` :math:`\hex{FD}~~\hex{91}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RDOT\K{\_i8x16\_i7x16\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RDOT\K{\_i8x16\_i7x16\_add\_s}` :math:`\hex{FD}~~\hex{93}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +================================================= ==================================== ============================================= ============================================= ===================================================================== .. note:: Multi-byte opcodes are given with the shortest possible encoding in the table. diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 5989a1fdd..51728124a 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -405,7 +405,7 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} -.. _exec-vec-relaxed-swizzle: +.. _exec-vec-rswizzle: :math:`\K{i8x16.}\RSWIZZLE` ........................... @@ -414,26 +414,20 @@ Most vector instructions are defined in terms of generic numeric operators appli 2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. -3. Let :math:`i^\ast` be the sequence :math:`\lanes_{i8x16}(c_2)`. - -4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. - -5. Let :math:`j^\ast` be the sequence :math:`\lanes_{i8x16}(c_1)`. +3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -6. Let :math:`c'` be the result of computing :math:`\RSWIZZLE(j^\ast, i^\ast)`. +4. Let :math:`c'` be the result of computing :math:`\lanes^{-1}_{\I8X16}(\rswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2)))`. -7. Push the value :math:`\V128.\VCONST~c'` onto the stack. +5. Push the value :math:`\V128.\VCONST~c'` onto the stack. .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\RSWIZZLE &\stepto& (\V128\K{.}\VCONST~c') + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\rswizzle &\stepto& (\V128\K{.}\VCONST~c') \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & i^\ast = \lanes_{i8x16}(c_2) \\ - \wedge & c^\ast = \lanes_{i8x16}(c_1)~0^{240} \\ - \wedge & c' = \lanes^{-1}_{i8x16}(c^\ast[ i^\ast[0] ] \dots c^\ast[ i^\ast[15] ])) + (\iff & c' = \lanes^{-1}_{i8x16}(\rswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2))) \end{array} \end{array} @@ -618,6 +612,8 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} +.. _exec-vternop: + :math:`\shape\K{.}\vternop` ........................... @@ -634,9 +630,45 @@ Most vector instructions are defined in terms of generic numeric operators appli 6. Push the value :math:`\V128.\VCONST~c` to the stack. .. math:: + \begin{array}{l} \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vternop &\stepto& (\V128\K{.}\VCONST~c) - & (\iff c = \vternop_{\shape}(c_1, c_2, c_3)) \\ + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\vternop &\stepto& (\V128\K{.}\VCONST~c) & + \end{array} + \\ \qquad + \begin{array}[t]{@{}r@{~}l@{}} + (\iff c = \vternop_{\shape}(c_1, c_2, c_3)) \\ + \end{array} + \end{array} + + +.. _exec-rlaneselect: + +:math:`t\K{x}N\K{.}\RLANESELECT` +................................ + +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. + +2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. + +3. Pop the value :math:`\V128.\VCONST~c_2` from the stack. + +4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. + +5. Let :math:`B` be the :ref:`bit width ` :math:`|t|` of :ref:`value type ` :math:`t`. + +6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{t\K{x}N}(\rlaneselect_{B}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))`. + +7. Push the value :math:`\V128.\VCONST~c` to the stack. + +.. math:: + \begin{array}{l} + \begin{array}{lcl@{\qquad}l} + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\RLANESELECT &\stepto& (\V128\K{.}\VCONST~c) & \\ + \end{array} + \\ \qquad + \begin{array}[t]{@{}r@{~}l@{}} + (\iff c = \lanes^{-1}_{t\K{x}N}(\rlaneselect_{|t|}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))) \\ + \end{array} \end{array} @@ -929,7 +961,7 @@ where: :math:`\K{i16x8.}\DOT\K{\_i8x16\_i7x16\_s}` ................................................... -1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. @@ -960,7 +992,7 @@ where: :math:`\K{i32x4.}\DOT\K{\_i8x16\_i7x16\_add\_s}` ........................................................ -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index c327cc8cc..24d552229 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1976,11 +1976,6 @@ Conversions Relaxed operators ~~~~~~~~~~~~~~~~~ -.. todo:: - This paragraph should go to the top of this document, but for ease of - reading, put it together with the description of all the relaxed operations - here. - The result of *relaxed* operators are *host-dependent*, because the set of possible results may depend on properties of the host environment (such as hardware). Technically, each such operator produces a fixed-size *list of sets* @@ -1993,29 +1988,39 @@ each environment globally chooses a fixed projection for each operator. one particular choice by the execution environment. The fixed operation itself can still be non-deterministic or partial. -.. todo:: - Below is a draft of concrete definitions for relaxed-simd operations. The - text description is an informal description of the instructions and are not - the final text. +.. _op-frmadd: -.. _op-relaxed_madd: -.. _op-relaxed_nmadd: +:math:`\frmadd_N(z_1, z_2, z_3)` +................................ -Relaxed Multiply Add (madd) and Relaxed Negative Multiply Add (nmadd) -allows for fused or unfused results. :math:`fma` is defined by |IEEE754|_ -(Section 5.4.1) as *fusedMultiplyAdd*. +Relaxed Multiply Add (madd) allows for fused or unfused results. :math:`fma` is +defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \rmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ - & \rmadd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ - \\ - & \rnmadd_N(z_1, z_2, z_3) &=& \rmadd_N(-z_1, z_2, z_3) \\ + \EXPROFDET & \frmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + & \frmadd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ + \end{array} + + +.. _op-frnmadd: + +:math:`\frnmadd_N(z_1, z_2, z_3)` +................................. + +Relaxed Negative Multiply Add (nmadd) allows for fused or unfused results. + +.. math:: + \begin{array}{@{}llcll} + & \frnmadd_N(z_1, z_2, z_3) &=& \frmadd_N(-z_1, z_2, z_3) \\ \end{array} -.. _op-relaxed_swizzle: +.. _op-rswizzle: + +:math:`\rswizzle(a^n, s^n)` +........................... Relaxed swizzle lane is a helper for relaxed swizzle. Result is deterministic if the signed interpretation of the index is less than 16 (including negative). @@ -2033,26 +2038,45 @@ if the signed interpretation of the index is less than 16 (including negative). \end{array} -.. _op-relaxed_trunc: +.. _op-rtrunc: +.. _op-rtrunc_u: + +:math:`\rtrunc^u_{M,N}(z)` +.......................... Relaxed truncate converts float to int, NaN and out of range values are hardware dependent. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ - \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ - \EXPROFDET & relaxed\_trunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ - & \rtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ - \\ - \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ - \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ - \EXPROFDET & relaxed\_trunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + \EXPROFDET & \rtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ + \EXPROFDET & \rtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ + \EXPROFDET & \rtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ & \rtrunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ \end{array} -.. _op-relaxed_laneselect: +.. _op-rtrunc_s: + +:math:`\rtrunc^s_{M,N}(z)` +.......................... + +Relaxed truncate converts float to int, NaN and out of range values are +hardware dependent. + +.. math:: + \begin{array}{@{}llcll} + \EXPROFDET & \rtrunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ + \EXPROFDET & \rtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ + \EXPROFDET & \rtrunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ + & \rtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ + \end{array} + + +.. _op-rlaneselect: + +:math:`\rlaneselect_B(a^n, b^n, c^n)` +..................................... Relaxed lane select is deterministic where all bits are set or unset in the mask. Otherwise depending on hardware, either only the top bit is examined, or @@ -2060,47 +2084,74 @@ all bits are examined (becomes a bitselect). .. math:: \begin{array}{@{}llcll} - & relaxed\_laneselect\_lane_N(i_1, i_2, 2^N-1) &=& i_1 \\ - & relaxed\_laneselect\_lane_N(i_1, i_2, 0) &=& i_2 \\ - \EXPROFDET & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ - \EXPROFDET & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ - & relaxed\_laneselect\_lane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ + & relaxed\_lane_N(i_1, i_2, 2^N-1) &=& i_1 \\ + & relaxed\_lane_N(i_1, i_2, 0) &=& i_2 \\ + \EXPROFDET & relaxed\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ + \EXPROFDET & relaxed\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ + & relaxed\_lane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ \\ - & \rlaneselect_W(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ - & \qquad \where rll_i &=& relaxed\_laneselect\_lane_W(a^n[i], b^n[i], c^n[i]) \\ + & \rlaneselect_B(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ + & \qquad \where rll_i &=& relaxed\_lane_B(a^n[i], b^n[i], c^n[i]) \\ + \end{array} + + +.. _op-frmin: + +:math:`\frmin_N(z_1, z_2)` +.......................... + +Relaxed min differs from min when inputs are NaNs or different +signs of 0. It allows for implementation to return the first or second input +when either input is a NaN. + +.. math:: + \begin{array}{@{}llcll} + \EXPROFDET & \frmin_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & \frmin_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & \frmin_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ + & \frmin_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ \end{array} -.. _op-relaxed_min: -.. _op-relaxed_max: +.. _op-frmax: + +:math:`\frmax_N(z_1, z_2)` +.......................... -Relaxed min and max differs from min and max when inputs are NaNs or different +Relaxed max differs from max when inputs are NaNs or different signs of 0. It allows for implementation to return the first or second input when either input is a NaN. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & relaxed\_min_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & relaxed\_min_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & relaxed\_min_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ - & \rmin(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + \EXPROFDET & \frmax_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & \frmax_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & \frmax_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ + & \frmax_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ \end{array} + +.. _op-irq15mulr_s: + +:math:`\irq15mulrs_N(i_1, i_2)` +............................... + .. math:: \begin{array}{@{}llcll} - \EXPROFDET & relaxed\_max_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & relaxed\_max_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & relaxed\_max_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ - & \rmax(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \EXPROFDET & \irq15mulrs_N(i_1, i_2) &=& [ \sats_N(i), i \mod 2^N ] & (\iff i = \ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) \\ + & \irq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) \end{array} -.. _op-relaxed_idotmul: +.. _op-ridotmul: + +:math:`\ridotmul_{M,N}(i_1, i_2)` +................................. Relaxed integer dot product differs from integer dot product when the elements of the input have top bit set. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \ridotmul{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ - & \ridotmul{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ + \EXPROFDET & \ridotmul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ + & \ridotmul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ \end{array} diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 63aaaa44b..49fd639a7 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -276,14 +276,14 @@ Vector instructions (also known as *SIMD* instructions, *single instruction mult \K{f32x4.}\VDEMOTE\K{\_f64x2\_zero} \\&&|& \K{f64x2.}\VCONVERT\K{\_low\_i32x4\_}\sx ~|~ \K{f64x2.}\VPROMOTE\K{\_low\_f32x4} \\ - & &|& \K{i8x16.relaxed\_swizzle} \\ - & &|& \K{i32x4.}\RVTRUNC\K{\_f32x4\_}\sx \\ + & &|& \K{i8x16.}\RSWIZZLE \\ + & &|& \K{i16x8.}\RQ15MULRS \\ + & &|& \K{i32x4.}\RTRUNC\K{\_f32x4\_}\sx \\ + & &|& \K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s} \\ + & &|& \K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s} \\ + & &|& \ishape\K{.}\RLANESELECT \\ & &|& \fshape\K{.}\rvfternop \\ - & &|& \ishape\K{.relaxed\_laneselect} \\ & &|& \fshape\K{.}\rvfbinop \\ - & &|& \K{i16x8.}\RQ15MULRS \\ - & &|& \K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} \\ - & &|& \K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ & &|& \dots \\ \end{array} @@ -423,8 +423,7 @@ Occasionally, it is convenient to group operators together according to the foll \RQ15MULRS\K{\_s} \\ \production{ternary operator} & \vternop &::=& \vvternop ~|~ - \rvfternop \\&&|& - \K{relaxed\_laneselect} \\ + \rvfternop \\ \production{test operator} & \vtestop &::=& \vitestop \\ \production{relational operator} & \vrelop &::=& @@ -435,7 +434,7 @@ Occasionally, it is convenient to group operators together according to the foll \VCONVERT ~|~ \VDEMOTE ~|~ \VPROMOTE ~|~ - \RVTRUNC \\ + \RTRUNC \\ \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 31383012d..7fa5ff0f2 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -499,9 +499,15 @@ .. |EXTADDPAIRWISE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{extadd\_pairwise}} .. |VDEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{demote}} .. |VPROMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{promote}} +.. |RMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_madd}} +.. |RNMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_nmadd}} .. |RSWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_swizzle}} +.. |RLANESELECT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_laneselect}} +.. |RMIN| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_min}} +.. |RMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_max}} .. |RQ15MULRS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_q15mulr\_s}} -.. |RVTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} +.. |RTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} +.. |RDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{\_dot}} .. Instructions, non-terminals @@ -1197,14 +1203,15 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} -.. |rmadd| mathdef:: \xref{exec/numerics}{op-relaxed_madd}{\F{relaxed\_madd}} -.. |rnmadd| mathdef:: \xref{exec/numerics}{op-relaxed_nmadd}{\F{relaxed\_nmadd}} -.. |rswizzle| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle}{\F{relaxed\_swizzle}} -.. |rtrunc| mathdef:: \xref{exec/numerics}{op-relaxed_trunc}{\F{relaxed\_trunc}} -.. |rlaneselect| mathdef:: \xref{exec/numerics}{op-relaxed_laneselect}{\F{relaxed\_laneselect}} -.. |rmin| mathdef:: \xref{exec/numerics}{op-relaxed_min}{\F{relaxed\_min}} -.. |rmax| mathdef:: \xref{exec/numerics}{op-relaxed_max}{\F{relaxed\_max}} -.. |ridotmul| mathdef:: \xref{exec/numerics}{op-relaxed_idotmul}{\F{relaxed\_dot\_mul}} +.. |frmadd| mathdef:: \xref{exec/numerics}{op-frmaddd}{\F{frelaxed\_madd}} +.. |frnmadd| mathdef:: \xref{exec/numerics}{op-frnmadd}{\F{frelaxed\_nmadd}} +.. |rswizzle| mathdef:: \xref{exec/numerics}{op-rswizzle}{\F{relaxed\_swizzle}} +.. |rtrunc| mathdef:: \xref{exec/numerics}{op-rtrunc}{\F{relaxed\_trunc}} +.. |rlaneselect| mathdef:: \xref{exec/numerics}{op-rlaneselect}{\F{relaxed\_laneselect}} +.. |frmin| mathdef:: \xref{exec/numerics}{op-frmin}{\F{frelaxed\_min}} +.. |frmax| mathdef:: \xref{exec/numerics}{op-frmax}{\F{frelaxed\_max}} +.. |irq15mulrs| mathdef:: \xref{exec/numerics}{op-irq15mulr_s}{\F{irelaxed\_q15mulr\_s}} +.. |ridotmul| mathdef:: \xref{exec/numerics}{op-ridotmul}{\F{relaxed\_dot\_mul}} .. Numerics, meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 6d2783e73..33222a3b8 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -487,6 +487,20 @@ The following auxiliary function denotes the number of lanes in a vector shape, } +.. _valid-rlaneselect: + +:math:`\shape\K{.}\RLANESELECT` +............................... + +* The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. + +.. math:: + \frac{ + }{ + C \vdashinstr \shape\K{.}\vternop : [\V128~\V128~\V128] \to [\V128] + } + + .. _valid-vrelop: :math:`\shape\K{.}\vrelop` @@ -584,6 +598,9 @@ The following auxiliary function denotes the number of lanes in a vector shape, C \vdashinstr \ishape_1\K{.}\DOT\K{\_}\ishape_2\K{\_s} : [\V128~\V128] \to [\V128] } + +.. _valid-vec-rdot: + :math:`\ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_s}` ....................................................... From 2a8208ec72f5c5344c3453111571dcdeff7e7573 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 25 Jan 2023 23:35:00 +0000 Subject: [PATCH 091/230] Fix binary and text --- document/core/binary/instructions.rst | 36 ++++++++++++------------- document/core/exec/instructions.rst | 8 +++--- document/core/text/instructions.rst | 38 +++++++++++++-------------- document/core/util/macros.def | 2 +- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst index f6ea313e8..9c9bd18b8 100644 --- a/document/core/binary/instructions.rst +++ b/document/core/binary/instructions.rst @@ -842,25 +842,25 @@ All other vector instructions are plain opcodes without any immediates. \begin{array}{llclll} \phantom{\production{instruction}} & \phantom{\Binstr} &\phantom{::=}& \phantom{\dots} && \phantom{vechaslongerinstructionnames} \\[-2ex] &&|& \hex{FD}~~256{:}\Bu32 &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& - \hex{FD}~~257{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s} \\ &&|& - \hex{FD}~~258{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u} \\ &&|& - \hex{FD}~~259{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s\_zero} \\ &&|& - \hex{FD}~~260{:}\Bu32 &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u\_zero} \\ &&|& - \hex{FD}~~261{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_madd} \\ &&|& - \hex{FD}~~262{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_nmadd} \\ &&|& - \hex{FD}~~263{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_madd} \\ &&|& - \hex{FD}~~264{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_nmadd} \\ &&|& - \hex{FD}~~265{:}\Bu32 &\Rightarrow& \I8X16.\K{relaxed\_laneselect} \\ &&|& - \hex{FD}~~266{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_laneselect} \\ &&|& - \hex{FD}~~267{:}\Bu32 &\Rightarrow& \I32X4.\K{relaxed\_laneselect} \\ &&|& - \hex{FD}~~268{:}\Bu32 &\Rightarrow& \I64X2.\K{relaxed\_laneselect} \\ &&|& - \hex{FD}~~269{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_min} \\ &&|& - \hex{FD}~~270{:}\Bu32 &\Rightarrow& \F32X4.\K{relaxed\_max} \\ &&|& - \hex{FD}~~271{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_min} \\ &&|& - \hex{FD}~~272{:}\Bu32 &\Rightarrow& \F64X2.\K{relaxed\_max} \\ &&|& + \hex{FD}~~257{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s} \\ &&|& + \hex{FD}~~258{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u} \\ &&|& + \hex{FD}~~259{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \hex{FD}~~260{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \hex{FD}~~261{:}\Bu32 &\Rightarrow& \F32X4.\RMADD \\ &&|& + \hex{FD}~~262{:}\Bu32 &\Rightarrow& \F32X4.\RNMADD \\ &&|& + \hex{FD}~~263{:}\Bu32 &\Rightarrow& \F64X2.\RMADD \\ &&|& + \hex{FD}~~264{:}\Bu32 &\Rightarrow& \F64X2.\RNMADD \\ &&|& + \hex{FD}~~265{:}\Bu32 &\Rightarrow& \I8X16.\RLANESELECT \\ &&|& + \hex{FD}~~266{:}\Bu32 &\Rightarrow& \I16X8.\RLANESELECT \\ &&|& + \hex{FD}~~267{:}\Bu32 &\Rightarrow& \I32X4.\RLANESELECT \\ &&|& + \hex{FD}~~268{:}\Bu32 &\Rightarrow& \I64X2.\RLANESELECT \\ &&|& + \hex{FD}~~269{:}\Bu32 &\Rightarrow& \F32X4.\RMIN \\ &&|& + \hex{FD}~~270{:}\Bu32 &\Rightarrow& \F32X4.\RMAX \\ &&|& + \hex{FD}~~271{:}\Bu32 &\Rightarrow& \F64X2.\RMIN \\ &&|& + \hex{FD}~~272{:}\Bu32 &\Rightarrow& \F64X2.\RMAX \\ &&|& \hex{FD}~~273{:}\Bu32 &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& - \hex{FD}~~274{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_s} \\ &&|& - \hex{FD}~~275{:}\Bu32 &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_add\_s} \\ + \hex{FD}~~274{:}\Bu32 &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_s} \\ &&|& + \hex{FD}~~275{:}\Bu32 &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_add\_s} \\ \end{array} diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 51728124a..654dbaeb1 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -958,7 +958,7 @@ where: .. _exec-vec-rdot: -:math:`\K{i16x8.}\DOT\K{\_i8x16\_i7x16\_s}` +:math:`\K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s}` ................................................... 1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. @@ -978,7 +978,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}\DOT\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -989,7 +989,7 @@ where: \end{array} -:math:`\K{i32x4.}\DOT\K{\_i8x16\_i7x16\_add\_s}` +:math:`\K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s}` ........................................................ 1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. @@ -1013,7 +1013,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\DOT\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index e0ec41e4c..2ec4a83c4 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -896,27 +896,27 @@ Vector constant instructions have a mandatory :ref:`shape ` de .. math:: \begin{array}{llclll} - \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{averyveryverylonginstructionnameforvectext} && \phantom{vechasreallyreallyreallylonginstructionnames} \\[-2ex] &&|& + \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallyreallyreallylonginstructionnames} \\[-2ex] &&|& \text{i16x8.relaxed\_swizzle} &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_s\_zero} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \I32X4.\RVTRUNC\K{\_f32x4\_u\_zero} \\ &&|& - \text{f32x4.relaxed\_madd} &\Rightarrow& \F32X4.\K{relaxed\_madd} \\ &&|& - \text{f32x4.relaxed\_nmadd} &\Rightarrow& \F32X4.\K{relaxed\_nmadd} \\ &&|& - \text{f64x2.relaxed\_madd} &\Rightarrow& \F64X2.\K{relaxed\_madd} \\ &&|& - \text{f64x2.relaxed\_nmadd} &\Rightarrow& \F64X2.\K{relaxed\_nmadd} \\ &&|& - \text{i8x16.relaxed\_laneselect} &\Rightarrow& \I8X16.\K{relaxed\_laneselect} \\ &&|& - \text{i16x8.relaxed\_laneselect} &\Rightarrow& \I16X8.\K{relaxed\_laneselect} \\ &&|& - \text{i32x4.relaxed\_laneselect} &\Rightarrow& \I32X4.\K{relaxed\_laneselect} \\ &&|& - \text{i64x2.relaxed\_laneselect} &\Rightarrow& \I64X2.\K{relaxed\_laneselect} \\ &&|& - \text{f32x4.relaxed\_min} &\Rightarrow& \F32X4.\K{relaxed\_min} \\ &&|& - \text{f32x4.relaxed\_max} &\Rightarrow& \F32X4.\K{relaxed\_max} \\ &&|& - \text{f64x2.relaxed\_min} &\Rightarrow& \F64X2.\K{relaxed\_min} \\ &&|& - \text{f64x2.relaxed\_max} &\Rightarrow& \F64X2.\K{relaxed\_max} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \text{f32x4.relaxed\_madd} &\Rightarrow& \F32X4.\RMADD \\ &&|& + \text{f32x4.relaxed\_nmadd} &\Rightarrow& \F32X4.\RNMADD \\ &&|& + \text{f64x2.relaxed\_madd} &\Rightarrow& \F64X2.\RMADD \\ &&|& + \text{f64x2.relaxed\_nmadd} &\Rightarrow& \F64X2.\RNMADD \\ &&|& + \text{i8x16.relaxed\_laneselect} &\Rightarrow& \I8X16.\RLANESELECT \\ &&|& + \text{i16x8.relaxed\_laneselect} &\Rightarrow& \I16X8.\RLANESELECT \\ &&|& + \text{i32x4.relaxed\_laneselect} &\Rightarrow& \I32X4.\RLANESELECT \\ &&|& + \text{i64x2.relaxed\_laneselect} &\Rightarrow& \I64X2.\RLANESELECT \\ &&|& + \text{f32x4.relaxed\_min} &\Rightarrow& \F32X4.\RMIN \\ &&|& + \text{f32x4.relaxed\_max} &\Rightarrow& \F32X4.\RMAX \\ &&|& + \text{f64x2.relaxed\_min} &\Rightarrow& \F64X2.\RMIN \\ &&|& + \text{f64x2.relaxed\_max} &\Rightarrow& \F64X2.\RMAX \\ &&|& \text{i16x8.relaxed\_q15mulr\_s} &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& - \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_s} \\ &&|& - \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \I16X8.\K{relaxed\_dot\_i8x16\_i7x16\_add\_s} + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_s} \\ &&|& + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_add\_s} \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 7fa5ff0f2..9e213948e 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -507,7 +507,7 @@ .. |RMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_max}} .. |RQ15MULRS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_q15mulr\_s}} .. |RTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} -.. |RDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{\_dot}} +.. |RDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_dot}} .. Instructions, non-terminals From f8cac7f3a02826ddbf608abdc19d37d38f9ebbc9 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:22:03 -0800 Subject: [PATCH 092/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 24d552229..3e48060fe 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2022,7 +2022,7 @@ Relaxed Negative Multiply Add (nmadd) allows for fused or unfused results. :math:`\rswizzle(a^n, s^n)` ........................... -Relaxed swizzle lane is a helper for relaxed swizzle. Result is deterministic +Relaxed swizzle lane is deterministic if the signed interpretation of the index is less than 16 (including negative). :math:`j` is a 8-bit int. From 5e08ffca5ba7eb0073d9ad6e1f592c9137ec34ed Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:22:14 -0800 Subject: [PATCH 093/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 3e48060fe..9cd0bc033 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2023,7 +2023,7 @@ Relaxed Negative Multiply Add (nmadd) allows for fused or unfused results. ........................... Relaxed swizzle lane is deterministic -if the signed interpretation of the index is less than 16 (including negative). +if the signed interpretation of the index is less than 16 (including negative values). :math:`j` is a 8-bit int. .. math:: From c3f3239721276c6a241776a0a147266b72d5a431 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:22:36 -0800 Subject: [PATCH 094/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 9cd0bc033..96ee12dab 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2061,8 +2061,8 @@ hardware dependent. :math:`\rtrunc^s_{M,N}(z)` .......................... -Relaxed truncate converts float to int, NaN and out of range values are -hardware dependent. +Relaxed signed truncation converts floating point numbers to integers. +The result for NaN's and out-of-range values is host-dependent. .. math:: \begin{array}{@{}llcll} From ddcc7ed5ca7afffdf65c8f1c6a07aa72f02dd796 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:23:05 -0800 Subject: [PATCH 095/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 96ee12dab..27380cf10 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2148,7 +2148,7 @@ when either input is a NaN. :math:`\ridotmul_{M,N}(i_1, i_2)` ................................. -Relaxed integer dot product differs from integer dot product when the elements of the input have top bit set. +Relaxed integer dot product differs from regular integer dot product when the elements of the input have their most significant bit set. .. math:: \begin{array}{@{}llcll} From b2fe562dfd79fd78313145c2467a056d5566633f Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:23:19 -0800 Subject: [PATCH 096/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 27380cf10..a9f298082 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2118,9 +2118,8 @@ when either input is a NaN. :math:`\frmax_N(z_1, z_2)` .......................... -Relaxed max differs from max when inputs are NaNs or different -signs of 0. It allows for implementation to return the first or second input -when either input is a NaN. +Relaxed maximum differs from regular maximum when inputs are NaN's or zeroes with different signs. +It allows for implementations to return the first or second input when either input is a NaN. .. math:: \begin{array}{@{}llcll} From 64bdd028828b7139ba4a9c387df2b6ff874a7f8d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 09:23:26 -0800 Subject: [PATCH 097/230] Update document/core/exec/numerics.rst Co-authored-by: Andreas Rossberg --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index a9f298082..519396b9e 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2009,7 +2009,7 @@ defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. :math:`\frnmadd_N(z_1, z_2, z_3)` ................................. -Relaxed Negative Multiply Add (nmadd) allows for fused or unfused results. +Relaxed negative multiply-add allows for fused or unfused results. .. math:: \begin{array}{@{}llcll} From caee90620ad7bc5ee69e3b5aca4ef4b6dca7230b Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 17:35:08 +0000 Subject: [PATCH 098/230] Spell out instruction mnemonic --- .../core/appendix/gen-index-instructions.py | 40 +- document/core/appendix/index-instructions.rst | 1060 ++++++++--------- document/core/binary/instructions.rst | 40 +- document/core/exec/instructions.rst | 30 +- document/core/syntax/instructions.rst | 16 +- document/core/text/instructions.rst | 40 +- document/core/util/macros.def | 18 +- document/core/valid/instructions.rst | 10 +- 8 files changed, 627 insertions(+), 627 deletions(-) diff --git a/document/core/appendix/gen-index-instructions.py b/document/core/appendix/gen-index-instructions.py index b0aba79c2..722c7152c 100755 --- a/document/core/appendix/gen-index-instructions.py +++ b/document/core/appendix/gen-index-instructions.py @@ -575,26 +575,26 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}', r'\hex{FD}~~\hex{FD}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-trunc_sat_u'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_s}', r'\hex{FD}~~\hex{FE}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_s'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_u}', r'\hex{FD}~~\hex{FF}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_u'), - Instruction(r'\I8X16.\RSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vec-rswizzle', r'exec-vec-rswizzle', r'op-rswizzle'), - Instruction(r'\I32X4.\RTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), - Instruction(r'\I32X4.\RTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), - Instruction(r'\I32X4.\RTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), - Instruction(r'\I32X4.\RTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), - Instruction(r'\F32X4.\RMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), - Instruction(r'\F32X4.\RNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), - Instruction(r'\F64X2.\RMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), - Instruction(r'\F64X2.\RNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), - Instruction(r'\I8X16.\RLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I16X8.\RLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I32X4.\RLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I64X2.\RLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\F32X4.\RMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), - Instruction(r'\F32X4.\RMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), - Instruction(r'\F64X2.\RMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), - Instruction(r'\F64X2.\RMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), - Instruction(r'\I16X8.\RQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-irq15mulr_s'), - Instruction(r'\I16X8.\RDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vec-rdot', r'exec-vec-rdot', r'op-ridotmul'), - Instruction(r'\I32X4.\RDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vec-rdot', r'exec-vec-rdot', r'op-ridotmul'), + Instruction(r'\I8X16.\RELAXEDSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_swizzle', r'exec-relaxed_swizzle', r'op-rswizzle'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), + Instruction(r'\F32X4.\RELAXEDMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), + Instruction(r'\F32X4.\RELAXEDNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), + Instruction(r'\F64X2.\RELAXEDMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), + Instruction(r'\F64X2.\RELAXEDNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), + Instruction(r'\I8X16.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I16X8.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I32X4.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\I64X2.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), + Instruction(r'\F32X4.\RELAXEDMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), + Instruction(r'\F32X4.\RELAXEDMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), + Instruction(r'\F64X2.\RELAXEDMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), + Instruction(r'\F64X2.\RELAXEDMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), + Instruction(r'\I16X8.\RELAXEDQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-irq15mulr_s'), + Instruction(r'\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-ridotmul'), + Instruction(r'\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-ridotmul'), ] diff --git a/document/core/appendix/index-instructions.rst b/document/core/appendix/index-instructions.rst index 502935af0..df2cecd92 100644 --- a/document/core/appendix/index-instructions.rst +++ b/document/core/appendix/index-instructions.rst @@ -6,536 +6,536 @@ Index of Instructions --------------------- -================================================= ==================================== ============================================= ============================================= ===================================================================== -Instruction Binary Opcode Type Validation Execution -================================================= ==================================== ============================================= ============================================= ===================================================================== -:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\ELSE` :math:`\hex{05}` -(reserved) :math:`\hex{06}` -(reserved) :math:`\hex{07}` -(reserved) :math:`\hex{08}` -(reserved) :math:`\hex{09}` -(reserved) :math:`\hex{0A}` -:math:`\END` :math:`\hex{0B}` -:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{12}` -(reserved) :math:`\hex{13}` -(reserved) :math:`\hex{14}` -(reserved) :math:`\hex{15}` -(reserved) :math:`\hex{16}` -(reserved) :math:`\hex{17}` -(reserved) :math:`\hex{18}` -(reserved) :math:`\hex{19}` -:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{1D}` -(reserved) :math:`\hex{1E}` -(reserved) :math:`\hex{1F}` -:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{27}` -:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -(reserved) :math:`\hex{C5}` -(reserved) :math:`\hex{C6}` -(reserved) :math:`\hex{C7}` -(reserved) :math:`\hex{C8}` -(reserved) :math:`\hex{C9}` -(reserved) :math:`\hex{CA}` -(reserved) :math:`\hex{CB}` -(reserved) :math:`\hex{CC}` -(reserved) :math:`\hex{CD}` -(reserved) :math:`\hex{CE}` -(reserved) :math:`\hex{CF}` -:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{D3}` -(reserved) :math:`\hex{D4}` -(reserved) :math:`\hex{D5}` -(reserved) :math:`\hex{D6}` -(reserved) :math:`\hex{D7}` -(reserved) :math:`\hex{D8}` -(reserved) :math:`\hex{D9}` -(reserved) :math:`\hex{DA}` -(reserved) :math:`\hex{DB}` -(reserved) :math:`\hex{DC}` -(reserved) :math:`\hex{DD}` -(reserved) :math:`\hex{DE}` -(reserved) :math:`\hex{DF}` -(reserved) :math:`\hex{E0}` -(reserved) :math:`\hex{E1}` -(reserved) :math:`\hex{E2}` -(reserved) :math:`\hex{E3}` -(reserved) :math:`\hex{E4}` -(reserved) :math:`\hex{E5}` -(reserved) :math:`\hex{E6}` -(reserved) :math:`\hex{E7}` -(reserved) :math:`\hex{E8}` -(reserved) :math:`\hex{E9}` -(reserved) :math:`\hex{EA}` -(reserved) :math:`\hex{EB}` -(reserved) :math:`\hex{EC}` -(reserved) :math:`\hex{ED}` -(reserved) :math:`\hex{EE}` -(reserved) :math:`\hex{EF}` -(reserved) :math:`\hex{F0}` -(reserved) :math:`\hex{F1}` -(reserved) :math:`\hex{F2}` -(reserved) :math:`\hex{F3}` -(reserved) :math:`\hex{F4}` -(reserved) :math:`\hex{F5}` -(reserved) :math:`\hex{F6}` -(reserved) :math:`\hex{F7}` -(reserved) :math:`\hex{F8}` -(reserved) :math:`\hex{F9}` -(reserved) :math:`\hex{FA}` -(reserved) :math:`\hex{FB}` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\RSWIZZLE` :math:`\hex{FD}~~\hex{80}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RTRUNC\K{\_f32x4\_s}` :math:`\hex{FD}~~\hex{81}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RTRUNC\K{\_f32x4\_u}` :math:`\hex{FD}~~\hex{82}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RTRUNC\K{\_f64x2\_s}` :math:`\hex{FD}~~\hex{83}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RTRUNC\K{\_f64x2\_u}` :math:`\hex{FD}~~\hex{84}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RMADD` :math:`\hex{FD}~~\hex{85}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RNMADD` :math:`\hex{FD}~~\hex{86}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RMADD` :math:`\hex{FD}~~\hex{87}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RNMADD` :math:`\hex{FD}~~\hex{88}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\RLANESELECT` :math:`\hex{FD}~~\hex{89}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RLANESELECT` :math:`\hex{FD}~~\hex{8A}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RLANESELECT` :math:`\hex{FD}~~\hex{8B}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\RLANESELECT` :math:`\hex{FD}~~\hex{8C}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RMIN` :math:`\hex{FD}~~\hex{8D}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RMAX` :math:`\hex{FD}~~\hex{8E}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RMIN` :math:`\hex{FD}~~\hex{8F}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RMAX` :math:`\hex{FD}~~\hex{90}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RQ15MULRS` :math:`\hex{FD}~~\hex{91}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RDOT\K{\_i8x16\_i7x16\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RDOT\K{\_i8x16\_i7x16\_add\_s}` :math:`\hex{FD}~~\hex{93}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -================================================= ==================================== ============================================= ============================================= ===================================================================== +==================================================== ==================================== ============================================= ============================================= ====================================================================== +Instruction Binary Opcode Type Validation Execution +==================================================== ==================================== ============================================= ============================================= ====================================================================== +:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\ELSE` :math:`\hex{05}` +(reserved) :math:`\hex{06}` +(reserved) :math:`\hex{07}` +(reserved) :math:`\hex{08}` +(reserved) :math:`\hex{09}` +(reserved) :math:`\hex{0A}` +:math:`\END` :math:`\hex{0B}` +:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{12}` +(reserved) :math:`\hex{13}` +(reserved) :math:`\hex{14}` +(reserved) :math:`\hex{15}` +(reserved) :math:`\hex{16}` +(reserved) :math:`\hex{17}` +(reserved) :math:`\hex{18}` +(reserved) :math:`\hex{19}` +:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{1D}` +(reserved) :math:`\hex{1E}` +(reserved) :math:`\hex{1F}` +:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{27}` +:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +(reserved) :math:`\hex{C5}` +(reserved) :math:`\hex{C6}` +(reserved) :math:`\hex{C7}` +(reserved) :math:`\hex{C8}` +(reserved) :math:`\hex{C9}` +(reserved) :math:`\hex{CA}` +(reserved) :math:`\hex{CB}` +(reserved) :math:`\hex{CC}` +(reserved) :math:`\hex{CD}` +(reserved) :math:`\hex{CE}` +(reserved) :math:`\hex{CF}` +:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{D3}` +(reserved) :math:`\hex{D4}` +(reserved) :math:`\hex{D5}` +(reserved) :math:`\hex{D6}` +(reserved) :math:`\hex{D7}` +(reserved) :math:`\hex{D8}` +(reserved) :math:`\hex{D9}` +(reserved) :math:`\hex{DA}` +(reserved) :math:`\hex{DB}` +(reserved) :math:`\hex{DC}` +(reserved) :math:`\hex{DD}` +(reserved) :math:`\hex{DE}` +(reserved) :math:`\hex{DF}` +(reserved) :math:`\hex{E0}` +(reserved) :math:`\hex{E1}` +(reserved) :math:`\hex{E2}` +(reserved) :math:`\hex{E3}` +(reserved) :math:`\hex{E4}` +(reserved) :math:`\hex{E5}` +(reserved) :math:`\hex{E6}` +(reserved) :math:`\hex{E7}` +(reserved) :math:`\hex{E8}` +(reserved) :math:`\hex{E9}` +(reserved) :math:`\hex{EA}` +(reserved) :math:`\hex{EB}` +(reserved) :math:`\hex{EC}` +(reserved) :math:`\hex{ED}` +(reserved) :math:`\hex{EE}` +(reserved) :math:`\hex{EF}` +(reserved) :math:`\hex{F0}` +(reserved) :math:`\hex{F1}` +(reserved) :math:`\hex{F2}` +(reserved) :math:`\hex{F3}` +(reserved) :math:`\hex{F4}` +(reserved) :math:`\hex{F5}` +(reserved) :math:`\hex{F6}` +(reserved) :math:`\hex{F7}` +(reserved) :math:`\hex{F8}` +(reserved) :math:`\hex{F9}` +(reserved) :math:`\hex{FA}` +(reserved) :math:`\hex{FB}` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RELAXEDSWIZZLE` :math:`\hex{FD}~~\hex{80}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}` :math:`\hex{FD}~~\hex{81}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}` :math:`\hex{FD}~~\hex{82}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}` :math:`\hex{FD}~~\hex{83}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}` :math:`\hex{FD}~~\hex{84}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMADD` :math:`\hex{FD}~~\hex{85}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{86}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMADD` :math:`\hex{FD}~~\hex{87}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{88}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{89}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8A}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8B}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8C}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8D}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMAX` :math:`\hex{FD}~~\hex{8E}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8F}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMAX` :math:`\hex{FD}~~\hex{90}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDQ15MULRS` :math:`\hex{FD}~~\hex{91}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}` :math:`\hex{FD}~~\hex{93}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +==================================================== ==================================== ============================================= ============================================= ====================================================================== .. note:: Multi-byte opcodes are given with the shortest possible encoding in the table. diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst index 9c9bd18b8..e943402f5 100644 --- a/document/core/binary/instructions.rst +++ b/document/core/binary/instructions.rst @@ -841,26 +841,26 @@ All other vector instructions are plain opcodes without any immediates. .. math:: \begin{array}{llclll} \phantom{\production{instruction}} & \phantom{\Binstr} &\phantom{::=}& \phantom{\dots} && \phantom{vechaslongerinstructionnames} \\[-2ex] &&|& - \hex{FD}~~256{:}\Bu32 &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& - \hex{FD}~~257{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s} \\ &&|& - \hex{FD}~~258{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u} \\ &&|& - \hex{FD}~~259{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s\_zero} \\ &&|& - \hex{FD}~~260{:}\Bu32 &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u\_zero} \\ &&|& - \hex{FD}~~261{:}\Bu32 &\Rightarrow& \F32X4.\RMADD \\ &&|& - \hex{FD}~~262{:}\Bu32 &\Rightarrow& \F32X4.\RNMADD \\ &&|& - \hex{FD}~~263{:}\Bu32 &\Rightarrow& \F64X2.\RMADD \\ &&|& - \hex{FD}~~264{:}\Bu32 &\Rightarrow& \F64X2.\RNMADD \\ &&|& - \hex{FD}~~265{:}\Bu32 &\Rightarrow& \I8X16.\RLANESELECT \\ &&|& - \hex{FD}~~266{:}\Bu32 &\Rightarrow& \I16X8.\RLANESELECT \\ &&|& - \hex{FD}~~267{:}\Bu32 &\Rightarrow& \I32X4.\RLANESELECT \\ &&|& - \hex{FD}~~268{:}\Bu32 &\Rightarrow& \I64X2.\RLANESELECT \\ &&|& - \hex{FD}~~269{:}\Bu32 &\Rightarrow& \F32X4.\RMIN \\ &&|& - \hex{FD}~~270{:}\Bu32 &\Rightarrow& \F32X4.\RMAX \\ &&|& - \hex{FD}~~271{:}\Bu32 &\Rightarrow& \F64X2.\RMIN \\ &&|& - \hex{FD}~~272{:}\Bu32 &\Rightarrow& \F64X2.\RMAX \\ &&|& - \hex{FD}~~273{:}\Bu32 &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& - \hex{FD}~~274{:}\Bu32 &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_s} \\ &&|& - \hex{FD}~~275{:}\Bu32 &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_add\_s} \\ + \hex{FD}~~256{:}\Bu32 &\Rightarrow& \I16X8.\RELAXEDSWIZZLE \\ &&|& + \hex{FD}~~257{:}\Bu32 &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_s} \\ &&|& + \hex{FD}~~258{:}\Bu32 &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_u} \\ &&|& + \hex{FD}~~259{:}\Bu32 &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \hex{FD}~~260{:}\Bu32 &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \hex{FD}~~261{:}\Bu32 &\Rightarrow& \F32X4.\RELAXEDMADD \\ &&|& + \hex{FD}~~262{:}\Bu32 &\Rightarrow& \F32X4.\RELAXEDNMADD \\ &&|& + \hex{FD}~~263{:}\Bu32 &\Rightarrow& \F64X2.\RELAXEDMADD \\ &&|& + \hex{FD}~~264{:}\Bu32 &\Rightarrow& \F64X2.\RELAXEDNMADD \\ &&|& + \hex{FD}~~265{:}\Bu32 &\Rightarrow& \I8X16.\RELAXEDLANESELECT \\ &&|& + \hex{FD}~~266{:}\Bu32 &\Rightarrow& \I16X8.\RELAXEDLANESELECT \\ &&|& + \hex{FD}~~267{:}\Bu32 &\Rightarrow& \I32X4.\RELAXEDLANESELECT \\ &&|& + \hex{FD}~~268{:}\Bu32 &\Rightarrow& \I64X2.\RELAXEDLANESELECT \\ &&|& + \hex{FD}~~269{:}\Bu32 &\Rightarrow& \F32X4.\RELAXEDMIN \\ &&|& + \hex{FD}~~270{:}\Bu32 &\Rightarrow& \F32X4.\RELAXEDMAX \\ &&|& + \hex{FD}~~271{:}\Bu32 &\Rightarrow& \F64X2.\RELAXEDMIN \\ &&|& + \hex{FD}~~272{:}\Bu32 &\Rightarrow& \F64X2.\RELAXEDMAX \\ &&|& + \hex{FD}~~273{:}\Bu32 &\Rightarrow& \I16X8.\RELAXEDQ15MULRS \\ &&|& + \hex{FD}~~274{:}\Bu32 &\Rightarrow& \I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s} \\ &&|& + \hex{FD}~~275{:}\Bu32 &\Rightarrow& \I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s} \\ \end{array} diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 654dbaeb1..b96ed4f48 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -405,10 +405,10 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} -.. _exec-vec-rswizzle: +.. _exec-relaxed_swizzle: -:math:`\K{i8x16.}\RSWIZZLE` -........................... +:math:`\K{i8x16.}\RELAXEDSWIZZLE` +................................. 1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. @@ -643,8 +643,8 @@ Most vector instructions are defined in terms of generic numeric operators appli .. _exec-rlaneselect: -:math:`t\K{x}N\K{.}\RLANESELECT` -................................ +:math:`t\K{x}N\K{.}\RELAXEDLANESELECT` +...................................... 1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. @@ -663,7 +663,7 @@ Most vector instructions are defined in terms of generic numeric operators appli .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\RLANESELECT &\stepto& (\V128\K{.}\VCONST~c) & \\ + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\V128\K{.}\RELAXEDLANESELECT &\stepto& (\V128\K{.}\VCONST~c) & \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -955,13 +955,13 @@ where: \end{array} -.. _exec-vec-rdot: +.. _exec-relaxed_dot: -:math:`\K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s}` -................................................... +:math:`\K{i16x8.}\RELAXEDDOT\K{\_i8x16\_i7x16\_s}` +.................................................. -1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. @@ -978,7 +978,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i16x8.}\RELAXEDDOT\K{\_i8x16\_i7x16\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -989,10 +989,10 @@ where: \end{array} -:math:`\K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s}` -........................................................ +:math:`\K{i32x4.}\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}` +....................................................... -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -1013,7 +1013,7 @@ where: .. math:: \begin{array}{l} \begin{array}{llcl@{\qquad}l} - & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ + & (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~(\V128\K{.}\VCONST~c_3)~\K{i32x4.}\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s} &\stepto& (\V128\K{.}\VCONST~c) \\ \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index 49fd639a7..f5ea8454a 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -276,12 +276,12 @@ Vector instructions (also known as *SIMD* instructions, *single instruction mult \K{f32x4.}\VDEMOTE\K{\_f64x2\_zero} \\&&|& \K{f64x2.}\VCONVERT\K{\_low\_i32x4\_}\sx ~|~ \K{f64x2.}\VPROMOTE\K{\_low\_f32x4} \\ - & &|& \K{i8x16.}\RSWIZZLE \\ - & &|& \K{i16x8.}\RQ15MULRS \\ - & &|& \K{i32x4.}\RTRUNC\K{\_f32x4\_}\sx \\ - & &|& \K{i16x8.}\RDOT\K{\_i8x16\_i7x16\_s} \\ - & &|& \K{i32x4.}\RDOT\K{\_i8x16\_i7x16\_add\_s} \\ - & &|& \ishape\K{.}\RLANESELECT \\ + & &|& \K{i8x16.}\RELAXEDSWIZZLE \\ + & &|& \K{i16x8.}\RELAXEDQ15MULRS \\ + & &|& \K{i32x4.}\RELAXEDTRUNC\K{\_f32x4\_}\sx \\ + & &|& \K{i16x8.}\RELAXEDDOT\K{\_i8x16\_i7x16\_s} \\ + & &|& \K{i32x4.}\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s} \\ + & &|& \ishape\K{.}\RELAXEDLANESELECT \\ & &|& \fshape\K{.}\rvfternop \\ & &|& \fshape\K{.}\rvfbinop \\ & &|& \dots \\ @@ -420,7 +420,7 @@ Occasionally, it is convenient to group operators together according to the foll \VMUL ~|~ \AVGR\K{\_u} ~|~ \Q15MULRSAT\K{\_s} \\&&|& - \RQ15MULRS\K{\_s} \\ + \RELAXEDQ15MULRS\K{\_s} \\ \production{ternary operator} & \vternop &::=& \vvternop ~|~ \rvfternop \\ @@ -434,7 +434,7 @@ Occasionally, it is convenient to group operators together according to the foll \VCONVERT ~|~ \VDEMOTE ~|~ \VPROMOTE ~|~ - \RTRUNC \\ + \RELAXEDTRUNC \\ \end{array} diff --git a/document/core/text/instructions.rst b/document/core/text/instructions.rst index 2ec4a83c4..91db92fc7 100644 --- a/document/core/text/instructions.rst +++ b/document/core/text/instructions.rst @@ -897,26 +897,26 @@ Vector constant instructions have a mandatory :ref:`shape ` de .. math:: \begin{array}{llclll} \phantom{\production{instruction}} & \phantom{\Tplaininstr_I} &\phantom{::=}& \phantom{averylonginstructionnameforvectext} && \phantom{vechasreallyreallyreallylonginstructionnames} \\[-2ex] &&|& - \text{i16x8.relaxed\_swizzle} &\Rightarrow& \I16X8.\RSWIZZLE \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_s\_zero} \\ &&|& - \text{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \I32X4.\RTRUNC\K{\_f32x4\_u\_zero} \\ &&|& - \text{f32x4.relaxed\_madd} &\Rightarrow& \F32X4.\RMADD \\ &&|& - \text{f32x4.relaxed\_nmadd} &\Rightarrow& \F32X4.\RNMADD \\ &&|& - \text{f64x2.relaxed\_madd} &\Rightarrow& \F64X2.\RMADD \\ &&|& - \text{f64x2.relaxed\_nmadd} &\Rightarrow& \F64X2.\RNMADD \\ &&|& - \text{i8x16.relaxed\_laneselect} &\Rightarrow& \I8X16.\RLANESELECT \\ &&|& - \text{i16x8.relaxed\_laneselect} &\Rightarrow& \I16X8.\RLANESELECT \\ &&|& - \text{i32x4.relaxed\_laneselect} &\Rightarrow& \I32X4.\RLANESELECT \\ &&|& - \text{i64x2.relaxed\_laneselect} &\Rightarrow& \I64X2.\RLANESELECT \\ &&|& - \text{f32x4.relaxed\_min} &\Rightarrow& \F32X4.\RMIN \\ &&|& - \text{f32x4.relaxed\_max} &\Rightarrow& \F32X4.\RMAX \\ &&|& - \text{f64x2.relaxed\_min} &\Rightarrow& \F64X2.\RMIN \\ &&|& - \text{f64x2.relaxed\_max} &\Rightarrow& \F64X2.\RMAX \\ &&|& - \text{i16x8.relaxed\_q15mulr\_s} &\Rightarrow& \I16X8.\RQ15MULRS \\ &&|& - \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_s} \\ &&|& - \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \I16X8.\RDOT\K{\_i8x16\_i7x16\_add\_s} + \text{i16x8.relaxed\_swizzle} &\Rightarrow& \I16X8.\RELAXEDSWIZZLE \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s} &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_s} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u} &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_u} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_s\_zero} &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_s\_zero} \\ &&|& + \text{i32x4.relaxed\_trunc\_f32x4\_u\_zero} &\Rightarrow& \I32X4.\RELAXEDTRUNC\K{\_f32x4\_u\_zero} \\ &&|& + \text{f32x4.relaxed\_madd} &\Rightarrow& \F32X4.\RELAXEDMADD \\ &&|& + \text{f32x4.relaxed\_nmadd} &\Rightarrow& \F32X4.\RELAXEDNMADD \\ &&|& + \text{f64x2.relaxed\_madd} &\Rightarrow& \F64X2.\RELAXEDMADD \\ &&|& + \text{f64x2.relaxed\_nmadd} &\Rightarrow& \F64X2.\RELAXEDNMADD \\ &&|& + \text{i8x16.relaxed\_laneselect} &\Rightarrow& \I8X16.\RELAXEDLANESELECT \\ &&|& + \text{i16x8.relaxed\_laneselect} &\Rightarrow& \I16X8.\RELAXEDLANESELECT \\ &&|& + \text{i32x4.relaxed\_laneselect} &\Rightarrow& \I32X4.\RELAXEDLANESELECT \\ &&|& + \text{i64x2.relaxed\_laneselect} &\Rightarrow& \I64X2.\RELAXEDLANESELECT \\ &&|& + \text{f32x4.relaxed\_min} &\Rightarrow& \F32X4.\RELAXEDMIN \\ &&|& + \text{f32x4.relaxed\_max} &\Rightarrow& \F32X4.\RELAXEDMAX \\ &&|& + \text{f64x2.relaxed\_min} &\Rightarrow& \F64X2.\RELAXEDMIN \\ &&|& + \text{f64x2.relaxed\_max} &\Rightarrow& \F64X2.\RELAXEDMAX \\ &&|& + \text{i16x8.relaxed\_q15mulr\_s} &\Rightarrow& \I16X8.\RELAXEDQ15MULRS \\ &&|& + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_s} &\Rightarrow& \I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s} \\ &&|& + \text{i16x8.relaxed\_dot\_i8x16\_i7x16\_add\_s} &\Rightarrow& \I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s} \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 9e213948e..4aa95e05e 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -499,15 +499,15 @@ .. |EXTADDPAIRWISE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{extadd\_pairwise}} .. |VDEMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{demote}} .. |VPROMOTE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{promote}} -.. |RMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_madd}} -.. |RNMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_nmadd}} -.. |RSWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_swizzle}} -.. |RLANESELECT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_laneselect}} -.. |RMIN| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_min}} -.. |RMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_max}} -.. |RQ15MULRS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_q15mulr\_s}} -.. |RTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} -.. |RDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_dot}} +.. |RELAXEDMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_madd}} +.. |RELAXEDNMADD| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_nmadd}} +.. |RELAXEDSWIZZLE| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_swizzle}} +.. |RELAXEDLANESELECT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_laneselect}} +.. |RELAXEDMIN| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_min}} +.. |RELAXEDMAX| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_max}} +.. |RELAXEDQ15MULRS| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_q15mulr\_s}} +.. |RELAXEDTRUNC| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_trunc}} +.. |RELAXEDDOT| mathdef:: \xref{syntax/instructions}{syntax-instr-vec}{\K{relaxed\_dot}} .. Instructions, non-terminals diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 33222a3b8..d8e8f2b7d 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -362,9 +362,9 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-vec-rswizzle: +.. _valid-relaxed_swizzle: -:math:`\K{i8x16.}\RSWIZZLE` +:math:`\K{i8x16.}\RELAXEDSWIZZLE` ................................... * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. @@ -372,7 +372,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. math:: \frac{ }{ - C \vdashinstr \K{i8x16.}\RSWIZZLE : [\V128~\V128] \to [\V128] + C \vdashinstr \K{i8x16.}\RELAXEDSWIZZLE : [\V128~\V128] \to [\V128] } @@ -489,7 +489,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-rlaneselect: -:math:`\shape\K{.}\RLANESELECT` +:math:`\shape\K{.}\RELAXEDLANESELECT` ............................... * The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. @@ -599,7 +599,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-vec-rdot: +.. _valid-relaxed_dot: :math:`\ishape_1\K{.}\DOT\K{\_}\ishape_2\_\K{i7x16\_s}` ....................................................... From a1a8a127489a45e987c06f77b594dbb9cdc9b45b Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 17:43:00 +0000 Subject: [PATCH 099/230] Fix text --- document/core/exec/numerics.rst | 21 ++++++++++----------- document/core/valid/instructions.rst | 6 +++--- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 519396b9e..b17e32fd1 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1994,7 +1994,7 @@ each environment globally chooses a fixed projection for each operator. :math:`\frmadd_N(z_1, z_2, z_3)` ................................ -Relaxed Multiply Add (madd) allows for fused or unfused results. :math:`fma` is +Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`fma` is defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: @@ -2033,8 +2033,8 @@ if the signed interpretation of the index is less than 16 (including negative va \EXPROFDET & relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\otherwise) \\ \\ - & \rswizzle(a^n, s^n) &=& rsl_0 \dots rsl_{n-1} \\ - & \qquad \where rsl_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) + & \rswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ + & \qquad \where \X{rsl}_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) \end{array} @@ -2044,8 +2044,8 @@ if the signed interpretation of the index is less than 16 (including negative va :math:`\rtrunc^u_{M,N}(z)` .......................... -Relaxed truncate converts float to int, NaN and out of range values are -hardware dependent. +Relaxed unsigned truncation converts floating point numbers to integers. +The result for NaN's and out-of-range values is host-dependent. .. math:: \begin{array}{@{}llcll} @@ -2078,9 +2078,9 @@ The result for NaN's and out-of-range values is host-dependent. :math:`\rlaneselect_B(a^n, b^n, c^n)` ..................................... -Relaxed lane select is deterministic where all bits are set or unset in the -mask. Otherwise depending on hardware, either only the top bit is examined, or -all bits are examined (becomes a bitselect). +Relaxed lane selection is deterministic when all bits are set or unset in the +mask. Otherwise depending on the host, either only the top bit is examined, or +all bits are examined (i.e. it becomes a bit select). .. math:: \begin{array}{@{}llcll} @@ -2100,9 +2100,8 @@ all bits are examined (becomes a bitselect). :math:`\frmin_N(z_1, z_2)` .......................... -Relaxed min differs from min when inputs are NaNs or different -signs of 0. It allows for implementation to return the first or second input -when either input is a NaN. +Relaxed minimum differs from regular minimum when inputs are NaN's or zeroes with different signs. +It allows for implementation to return the first or second input when either input is a NaN. .. math:: \begin{array}{@{}llcll} diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index d8e8f2b7d..ed09468be 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -365,7 +365,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-relaxed_swizzle: :math:`\K{i8x16.}\RELAXEDSWIZZLE` -................................... +................................. * The instruction is valid with type :math:`[\V128~\V128] \to [\V128]`. @@ -490,14 +490,14 @@ The following auxiliary function denotes the number of lanes in a vector shape, .. _valid-rlaneselect: :math:`\shape\K{.}\RELAXEDLANESELECT` -............................... +..................................... * The instruction is valid with type :math:`[\V128~\V128~\V128] \to [\V128]`. .. math:: \frac{ }{ - C \vdashinstr \shape\K{.}\vternop : [\V128~\V128~\V128] \to [\V128] + C \vdashinstr \shape\K{.}\RELAXEDLANESELECT : [\V128~\V128~\V128] \to [\V128] } From 2c51978376a065f99b3addf1bcf0ac0a66a3bb06 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 17:46:32 +0000 Subject: [PATCH 100/230] Fix relaxed swizzle lane macro --- document/core/exec/numerics.rst | 10 +++++----- document/core/util/macros.def | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index b17e32fd1..6560aefc4 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2028,13 +2028,13 @@ if the signed interpretation of the index is less than 16 (including negative va .. math:: \begin{array}{@{}llcll} - & relaxed\_swizzle\_lane(i^n, j) &=& i[j] & (\iff j < 16) \\ - & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ - \EXPROFDET & relaxed\_swizzle\_lane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ - & relaxed\_swizzle\_lane(i^n, j) &=& 0 & (\otherwise) \\ + & \rswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ + & \rswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ + \EXPROFDET & \rswizzlelane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ + & \rswizzlelane(i^n, j) &=& 0 & (\otherwise) \\ \\ & \rswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ - & \qquad \where \X{rsl}_i &=& relaxed\_swizzle\_lane(a^n, s^n[i]) + & \qquad \where \X{rsl}_i &=& \rswizzlelane(a^n, s^n[i]) \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 4aa95e05e..77a51e35e 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1205,6 +1205,7 @@ .. |frmadd| mathdef:: \xref{exec/numerics}{op-frmaddd}{\F{frelaxed\_madd}} .. |frnmadd| mathdef:: \xref{exec/numerics}{op-frnmadd}{\F{frelaxed\_nmadd}} +.. |rswizzlelane| mathdef:: \xref{exec/numerics}{op-rswizzle_lane}{\F{relaxed\_swizzle\_lane}} .. |rswizzle| mathdef:: \xref{exec/numerics}{op-rswizzle}{\F{relaxed\_swizzle}} .. |rtrunc| mathdef:: \xref{exec/numerics}{op-rtrunc}{\F{relaxed\_trunc}} .. |rlaneselect| mathdef:: \xref{exec/numerics}{op-rlaneselect}{\F{relaxed\_laneselect}} From 847b40fef72982b64a2018f73d722fedc7a7c733 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 17:47:50 +0000 Subject: [PATCH 101/230] Fix fma det --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 6560aefc4..92c994397 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2000,7 +2000,7 @@ defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: \begin{array}{@{}llcll} \EXPROFDET & \frmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ - & \frmadd_N(z_1, z_2, z_3) &=& \fadd_N(\fmul_N(z_1, z_2), z_3) \\ + & \frmadd_N(z_1, z_2, z_3) &=& fma_N(z_1, z_2, z_3) \\ \end{array} From ce1d31d15180f99a094489303f8f538578866ae5 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 18:03:58 +0000 Subject: [PATCH 102/230] Fix mnemonics --- .../core/appendix/gen-index-instructions.py | 40 +- document/core/appendix/index-instructions.rst | 1060 ++++++++--------- document/core/exec/instructions.rst | 22 +- document/core/exec/numerics.rst | 135 +-- document/core/util/macros.def | 21 +- document/core/valid/instructions.rst | 2 +- 6 files changed, 641 insertions(+), 639 deletions(-) diff --git a/document/core/appendix/gen-index-instructions.py b/document/core/appendix/gen-index-instructions.py index 722c7152c..f16b5d23f 100755 --- a/document/core/appendix/gen-index-instructions.py +++ b/document/core/appendix/gen-index-instructions.py @@ -575,26 +575,26 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}', r'\hex{FD}~~\hex{FD}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-trunc_sat_u'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_s}', r'\hex{FD}~~\hex{FE}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_s'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_u}', r'\hex{FD}~~\hex{FF}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_u'), - Instruction(r'\I8X16.\RELAXEDSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_swizzle', r'exec-relaxed_swizzle', r'op-rswizzle'), - Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), - Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), - Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_s'), - Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-rtrunc_u'), - Instruction(r'\F32X4.\RELAXEDMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), - Instruction(r'\F32X4.\RELAXEDNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), - Instruction(r'\F64X2.\RELAXEDMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frmadd'), - Instruction(r'\F64X2.\RELAXEDNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frnmadd'), - Instruction(r'\I8X16.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I16X8.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I32X4.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\I64X2.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-rlaneselect', r'exec-rlaneselect', r'op-rlaneselect'), - Instruction(r'\F32X4.\RELAXEDMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), - Instruction(r'\F32X4.\RELAXEDMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), - Instruction(r'\F64X2.\RELAXEDMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmin'), - Instruction(r'\F64X2.\RELAXEDMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frmax'), - Instruction(r'\I16X8.\RELAXEDQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-irq15mulr_s'), - Instruction(r'\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-ridotmul'), - Instruction(r'\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-ridotmul'), + Instruction(r'\I8X16.\RELAXEDSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_swizzle', r'exec-relaxed_swizzle', r'op-relaxed_swizzle'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_s'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_u'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_s'), + Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_u'), + Instruction(r'\F32X4.\RELAXEDMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_madd'), + Instruction(r'\F32X4.\RELAXEDNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_nmadd'), + Instruction(r'\F64X2.\RELAXEDMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_madd'), + Instruction(r'\F64X2.\RELAXEDNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_nmadd'), + Instruction(r'\I8X16.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), + Instruction(r'\I16X8.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), + Instruction(r'\I32X4.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), + Instruction(r'\I64X2.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), + Instruction(r'\F32X4.\RELAXEDMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_min'), + Instruction(r'\F32X4.\RELAXEDMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_max'), + Instruction(r'\F64X2.\RELAXEDMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_min'), + Instruction(r'\F64X2.\RELAXEDMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_max'), + Instruction(r'\I16X8.\RELAXEDQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_q15mulr_s'), + Instruction(r'\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-relaxed_dot_mul'), + Instruction(r'\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-relaxed_dot_mul'), ] diff --git a/document/core/appendix/index-instructions.rst b/document/core/appendix/index-instructions.rst index df2cecd92..934369052 100644 --- a/document/core/appendix/index-instructions.rst +++ b/document/core/appendix/index-instructions.rst @@ -6,536 +6,536 @@ Index of Instructions --------------------- -==================================================== ==================================== ============================================= ============================================= ====================================================================== -Instruction Binary Opcode Type Validation Execution -==================================================== ==================================== ============================================= ============================================= ====================================================================== -:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\ELSE` :math:`\hex{05}` -(reserved) :math:`\hex{06}` -(reserved) :math:`\hex{07}` -(reserved) :math:`\hex{08}` -(reserved) :math:`\hex{09}` -(reserved) :math:`\hex{0A}` -:math:`\END` :math:`\hex{0B}` -:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{12}` -(reserved) :math:`\hex{13}` -(reserved) :math:`\hex{14}` -(reserved) :math:`\hex{15}` -(reserved) :math:`\hex{16}` -(reserved) :math:`\hex{17}` -(reserved) :math:`\hex{18}` -(reserved) :math:`\hex{19}` -:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{1D}` -(reserved) :math:`\hex{1E}` -(reserved) :math:`\hex{1F}` -:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{27}` -:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -(reserved) :math:`\hex{C5}` -(reserved) :math:`\hex{C6}` -(reserved) :math:`\hex{C7}` -(reserved) :math:`\hex{C8}` -(reserved) :math:`\hex{C9}` -(reserved) :math:`\hex{CA}` -(reserved) :math:`\hex{CB}` -(reserved) :math:`\hex{CC}` -(reserved) :math:`\hex{CD}` -(reserved) :math:`\hex{CE}` -(reserved) :math:`\hex{CF}` -:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` -:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` -(reserved) :math:`\hex{D3}` -(reserved) :math:`\hex{D4}` -(reserved) :math:`\hex{D5}` -(reserved) :math:`\hex{D6}` -(reserved) :math:`\hex{D7}` -(reserved) :math:`\hex{D8}` -(reserved) :math:`\hex{D9}` -(reserved) :math:`\hex{DA}` -(reserved) :math:`\hex{DB}` -(reserved) :math:`\hex{DC}` -(reserved) :math:`\hex{DD}` -(reserved) :math:`\hex{DE}` -(reserved) :math:`\hex{DF}` -(reserved) :math:`\hex{E0}` -(reserved) :math:`\hex{E1}` -(reserved) :math:`\hex{E2}` -(reserved) :math:`\hex{E3}` -(reserved) :math:`\hex{E4}` -(reserved) :math:`\hex{E5}` -(reserved) :math:`\hex{E6}` -(reserved) :math:`\hex{E7}` -(reserved) :math:`\hex{E8}` -(reserved) :math:`\hex{E9}` -(reserved) :math:`\hex{EA}` -(reserved) :math:`\hex{EB}` -(reserved) :math:`\hex{EC}` -(reserved) :math:`\hex{ED}` -(reserved) :math:`\hex{EE}` -(reserved) :math:`\hex{EF}` -(reserved) :math:`\hex{F0}` -(reserved) :math:`\hex{F1}` -(reserved) :math:`\hex{F2}` -(reserved) :math:`\hex{F3}` -(reserved) :math:`\hex{F4}` -(reserved) :math:`\hex{F5}` -(reserved) :math:`\hex{F6}` -(reserved) :math:`\hex{F7}` -(reserved) :math:`\hex{F8}` -(reserved) :math:`\hex{F9}` -(reserved) :math:`\hex{FA}` -(reserved) :math:`\hex{FB}` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` -:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` -:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\RELAXEDSWIZZLE` :math:`\hex{FD}~~\hex{80}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}` :math:`\hex{FD}~~\hex{81}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}` :math:`\hex{FD}~~\hex{82}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}` :math:`\hex{FD}~~\hex{83}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}` :math:`\hex{FD}~~\hex{84}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RELAXEDMADD` :math:`\hex{FD}~~\hex{85}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{86}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RELAXEDMADD` :math:`\hex{FD}~~\hex{87}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{88}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I8X16.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{89}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8A}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8B}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I64X2.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8C}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8D}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F32X4.\RELAXEDMAX` :math:`\hex{FD}~~\hex{8E}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8F}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\F64X2.\RELAXEDMAX` :math:`\hex{FD}~~\hex{90}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RELAXEDQ15MULRS` :math:`\hex{FD}~~\hex{91}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -:math:`\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}` :math:`\hex{FD}~~\hex{93}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` -==================================================== ==================================== ============================================= ============================================= ====================================================================== +==================================================== ==================================== ============================================= ============================================= =================================================================================== +Instruction Binary Opcode Type Validation Execution +==================================================== ==================================== ============================================= ============================================= =================================================================================== +:math:`\UNREACHABLE` :math:`\hex{00}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\NOP` :math:`\hex{01}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\BLOCK~\X{bt}` :math:`\hex{02}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\LOOP~\X{bt}` :math:`\hex{03}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\IF~\X{bt}` :math:`\hex{04}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\ELSE` :math:`\hex{05}` +(reserved) :math:`\hex{06}` +(reserved) :math:`\hex{07}` +(reserved) :math:`\hex{08}` +(reserved) :math:`\hex{09}` +(reserved) :math:`\hex{0A}` +:math:`\END` :math:`\hex{0B}` +:math:`\BR~l` :math:`\hex{0C}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRIF~l` :math:`\hex{0D}` :math:`[t^\ast~\I32] \to [t^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\BRTABLE~l^\ast~l` :math:`\hex{0E}` :math:`[t_1^\ast~t^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\RETURN` :math:`\hex{0F}` :math:`[t_1^\ast~t^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALL~x` :math:`\hex{10}` :math:`[t_1^\ast] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +:math:`\CALLINDIRECT~x~y` :math:`\hex{11}` :math:`[t_1^\ast~\I32] \to [t_2^\ast]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{12}` +(reserved) :math:`\hex{13}` +(reserved) :math:`\hex{14}` +(reserved) :math:`\hex{15}` +(reserved) :math:`\hex{16}` +(reserved) :math:`\hex{17}` +(reserved) :math:`\hex{18}` +(reserved) :math:`\hex{19}` +:math:`\DROP` :math:`\hex{1A}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\SELECT` :math:`\hex{1B}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\SELECT~t` :math:`\hex{1C}` :math:`[t~t~\I32] \to [t]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{1D}` +(reserved) :math:`\hex{1E}` +(reserved) :math:`\hex{1F}` +:math:`\LOCALGET~x` :math:`\hex{20}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\LOCALSET~x` :math:`\hex{21}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\LOCALTEE~x` :math:`\hex{22}` :math:`[t] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALGET~x` :math:`\hex{23}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\GLOBALSET~x` :math:`\hex{24}` :math:`[t] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGET~x` :math:`\hex{25}` :math:`[\I32] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESET~x` :math:`\hex{26}` :math:`[\I32~t] \to []` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{27}` +:math:`\I32.\LOAD~\memarg` :math:`\hex{28}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD~\memarg` :math:`\hex{29}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\LOAD~\memarg` :math:`\hex{2A}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\LOAD~\memarg` :math:`\hex{2B}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_s}~\memarg` :math:`\hex{2C}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{8\_u}~\memarg` :math:`\hex{2D}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_s}~\memarg` :math:`\hex{2E}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\LOAD\K{16\_u}~\memarg` :math:`\hex{2F}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_s}~\memarg` :math:`\hex{30}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{8\_u}~\memarg` :math:`\hex{31}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_s}~\memarg` :math:`\hex{32}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{16\_u}~\memarg` :math:`\hex{33}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_s}~\memarg` :math:`\hex{34}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\LOAD\K{32\_u}~\memarg` :math:`\hex{35}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE~\memarg` :math:`\hex{36}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE~\memarg` :math:`\hex{37}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F32.\STORE~\memarg` :math:`\hex{38}` :math:`[\I32~\F32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\F64.\STORE~\memarg` :math:`\hex{39}` :math:`[\I32~\F64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{8}~\memarg` :math:`\hex{3A}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I32.\STORE\K{16}~\memarg` :math:`\hex{3B}` :math:`[\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{8}~\memarg` :math:`\hex{3C}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{16}~\memarg` :math:`\hex{3D}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\I64.\STORE\K{32}~\memarg` :math:`\hex{3E}` :math:`[\I32~\I64] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYSIZE` :math:`\hex{3F}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYGROW` :math:`\hex{40}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\CONST~\i32` :math:`\hex{41}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64.\CONST~\i64` :math:`\hex{42}` :math:`[] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\F32.\CONST~\f32` :math:`\hex{43}` :math:`[] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F64.\CONST~\f64` :math:`\hex{44}` :math:`[] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\I32.\EQZ` :math:`\hex{45}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EQ` :math:`\hex{46}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\NE` :math:`\hex{47}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_s}` :math:`\hex{48}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LT\K{\_u}` :math:`\hex{49}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_s}` :math:`\hex{4A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GT\K{\_u}` :math:`\hex{4B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_s}` :math:`\hex{4C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\LE\K{\_u}` :math:`\hex{4D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_s}` :math:`\hex{4E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\GE\K{\_u}` :math:`\hex{4F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQZ` :math:`\hex{50}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EQ` :math:`\hex{51}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\NE` :math:`\hex{52}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_s}` :math:`\hex{53}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LT\K{\_u}` :math:`\hex{54}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_s}` :math:`\hex{55}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GT\K{\_u}` :math:`\hex{56}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_s}` :math:`\hex{57}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\LE\K{\_u}` :math:`\hex{58}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_s}` :math:`\hex{59}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\GE\K{\_u}` :math:`\hex{5A}` :math:`[\I64~\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\EQ` :math:`\hex{5B}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NE` :math:`\hex{5C}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LT` :math:`\hex{5D}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GT` :math:`\hex{5E}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\LE` :math:`\hex{5F}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\GE` :math:`\hex{60}` :math:`[\F32~\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\EQ` :math:`\hex{61}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NE` :math:`\hex{62}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LT` :math:`\hex{63}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GT` :math:`\hex{64}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\LE` :math:`\hex{65}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\GE` :math:`\hex{66}` :math:`[\F64~\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CLZ` :math:`\hex{67}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\CTZ` :math:`\hex{68}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\POPCNT` :math:`\hex{69}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ADD` :math:`\hex{6A}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SUB` :math:`\hex{6B}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\MUL` :math:`\hex{6C}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_s}` :math:`\hex{6D}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\DIV\K{\_u}` :math:`\hex{6E}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_s}` :math:`\hex{6F}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REM\K{\_u}` :math:`\hex{70}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\AND` :math:`\hex{71}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\OR` :math:`\hex{72}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\XOR` :math:`\hex{73}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHL` :math:`\hex{74}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_s}` :math:`\hex{75}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\SHR\K{\_u}` :math:`\hex{76}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTL` :math:`\hex{77}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\ROTR` :math:`\hex{78}` :math:`[\I32~\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CLZ` :math:`\hex{79}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\CTZ` :math:`\hex{7A}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\POPCNT` :math:`\hex{7B}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ADD` :math:`\hex{7C}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SUB` :math:`\hex{7D}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\MUL` :math:`\hex{7E}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_s}` :math:`\hex{7F}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\DIV\K{\_u}` :math:`\hex{80}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_s}` :math:`\hex{81}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REM\K{\_u}` :math:`\hex{82}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\AND` :math:`\hex{83}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\OR` :math:`\hex{84}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\XOR` :math:`\hex{85}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHL` :math:`\hex{86}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_s}` :math:`\hex{87}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\SHR\K{\_u}` :math:`\hex{88}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTL` :math:`\hex{89}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\ROTR` :math:`\hex{8A}` :math:`[\I64~\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ABS` :math:`\hex{8B}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEG` :math:`\hex{8C}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CEIL` :math:`\hex{8D}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FLOOR` :math:`\hex{8E}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\TRUNC` :math:`\hex{8F}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\NEAREST` :math:`\hex{90}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SQRT` :math:`\hex{91}` :math:`[\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\ADD` :math:`\hex{92}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\SUB` :math:`\hex{93}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\MUL` :math:`\hex{94}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DIV` :math:`\hex{95}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMIN` :math:`\hex{96}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\FMAX` :math:`\hex{97}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\COPYSIGN` :math:`\hex{98}` :math:`[\F32~\F32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ABS` :math:`\hex{99}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEG` :math:`\hex{9A}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CEIL` :math:`\hex{9B}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FLOOR` :math:`\hex{9C}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\TRUNC` :math:`\hex{9D}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\NEAREST` :math:`\hex{9E}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SQRT` :math:`\hex{9F}` :math:`[\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\ADD` :math:`\hex{A0}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\SUB` :math:`\hex{A1}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\MUL` :math:`\hex{A2}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\DIV` :math:`\hex{A3}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMIN` :math:`\hex{A4}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\FMAX` :math:`\hex{A5}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\COPYSIGN` :math:`\hex{A6}` :math:`[\F64~\F64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\WRAP\K{\_}\I64` :math:`\hex{A7}` :math:`[\I64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{A8}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{A9}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{AA}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{AB}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_s}` :math:`\hex{AC}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{\_}\I32\K{\_u}` :math:`\hex{AD}` :math:`[\I32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_s}` :math:`\hex{AE}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F32\K{\_u}` :math:`\hex{AF}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_s}` :math:`\hex{B0}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_}\F64\K{\_u}` :math:`\hex{B1}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B2}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B3}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B4}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{B5}` :math:`[\I64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\DEMOTE\K{\_}\F64` :math:`\hex{B6}` :math:`[\F64] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_s}` :math:`\hex{B7}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I32\K{\_u}` :math:`\hex{B8}` :math:`[\I32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_s}` :math:`\hex{B9}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\CONVERT\K{\_}\I64\K{\_u}` :math:`\hex{BA}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\PROMOTE\K{\_}\F32` :math:`\hex{BB}` :math:`[\F32] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\REINTERPRET\K{\_}\F32` :math:`\hex{BC}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\REINTERPRET\K{\_}\F64` :math:`\hex{BD}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32.\REINTERPRET\K{\_}\I32` :math:`\hex{BE}` :math:`[\I32] \to [\F32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64.\REINTERPRET\K{\_}\I64` :math:`\hex{BF}` :math:`[\I64] \to [\F64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{8\_s}` :math:`\hex{C0}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\EXTEND\K{16\_s}` :math:`\hex{C1}` :math:`[\I32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{8\_s}` :math:`\hex{C2}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{16\_s}` :math:`\hex{C3}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\EXTEND\K{32\_s}` :math:`\hex{C4}` :math:`[\I64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +(reserved) :math:`\hex{C5}` +(reserved) :math:`\hex{C6}` +(reserved) :math:`\hex{C7}` +(reserved) :math:`\hex{C8}` +(reserved) :math:`\hex{C9}` +(reserved) :math:`\hex{CA}` +(reserved) :math:`\hex{CB}` +(reserved) :math:`\hex{CC}` +(reserved) :math:`\hex{CD}` +(reserved) :math:`\hex{CE}` +(reserved) :math:`\hex{CF}` +:math:`\REFNULL~t` :math:`\hex{D0}` :math:`[] \to [t]` :ref:`validation ` :ref:`execution ` +:math:`\REFISNULL` :math:`\hex{D1}` :math:`[t] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\REFFUNC~x` :math:`\hex{D2}` :math:`[] \to [\FUNCREF]` :ref:`validation ` :ref:`execution ` +(reserved) :math:`\hex{D3}` +(reserved) :math:`\hex{D4}` +(reserved) :math:`\hex{D5}` +(reserved) :math:`\hex{D6}` +(reserved) :math:`\hex{D7}` +(reserved) :math:`\hex{D8}` +(reserved) :math:`\hex{D9}` +(reserved) :math:`\hex{DA}` +(reserved) :math:`\hex{DB}` +(reserved) :math:`\hex{DC}` +(reserved) :math:`\hex{DD}` +(reserved) :math:`\hex{DE}` +(reserved) :math:`\hex{DF}` +(reserved) :math:`\hex{E0}` +(reserved) :math:`\hex{E1}` +(reserved) :math:`\hex{E2}` +(reserved) :math:`\hex{E3}` +(reserved) :math:`\hex{E4}` +(reserved) :math:`\hex{E5}` +(reserved) :math:`\hex{E6}` +(reserved) :math:`\hex{E7}` +(reserved) :math:`\hex{E8}` +(reserved) :math:`\hex{E9}` +(reserved) :math:`\hex{EA}` +(reserved) :math:`\hex{EB}` +(reserved) :math:`\hex{EC}` +(reserved) :math:`\hex{ED}` +(reserved) :math:`\hex{EE}` +(reserved) :math:`\hex{EF}` +(reserved) :math:`\hex{F0}` +(reserved) :math:`\hex{F1}` +(reserved) :math:`\hex{F2}` +(reserved) :math:`\hex{F3}` +(reserved) :math:`\hex{F4}` +(reserved) :math:`\hex{F5}` +(reserved) :math:`\hex{F6}` +(reserved) :math:`\hex{F7}` +(reserved) :math:`\hex{F8}` +(reserved) :math:`\hex{F9}` +(reserved) :math:`\hex{FA}` +(reserved) :math:`\hex{FB}` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{00}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{01}` :math:`[\F32] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{02}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{03}` :math:`[\F64] \to [\I32]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_s}` :math:`\hex{FC}~\hex{04}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F32\K{\_u}` :math:`\hex{FC}~\hex{05}` :math:`[\F32] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_s}` :math:`\hex{FC}~\hex{06}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64.\TRUNC\K{\_sat\_}\F64\K{\_u}` :math:`\hex{FC}~\hex{07}` :math:`[\F64] \to [\I64]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\MEMORYINIT~x` :math:`\hex{FC}~\hex{08}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\DATADROP~x` :math:`\hex{FC}~\hex{09}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYCOPY` :math:`\hex{FC}~\hex{0A}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\MEMORYFILL` :math:`\hex{FC}~\hex{0B}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEINIT~x~y` :math:`\hex{FC}~\hex{0C}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\ELEMDROP~x` :math:`\hex{FC}~\hex{0D}` :math:`[] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLECOPY~x~y` :math:`\hex{FC}~\hex{0E}` :math:`[\I32~\I32~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\TABLEGROW~x` :math:`\hex{FC}~\hex{0F}` :math:`[t~\I32] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLESIZE~x` :math:`\hex{FC}~\hex{10}` :math:`[] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\TABLEFILL~x` :math:`\hex{FC}~\hex{11}` :math:`[\I32~t~\I32] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD~\memarg` :math:`\hex{FD}~~\hex{00}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_s}~\memarg` :math:`\hex{FD}~~\hex{01}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8x8\_u}~\memarg` :math:`\hex{FD}~~\hex{02}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_s}~\memarg` :math:`\hex{FD}~~\hex{03}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16x4\_u}~\memarg` :math:`\hex{FD}~~\hex{04}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_s}~\memarg` :math:`\hex{FD}~~\hex{05}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32x2\_u}~\memarg` :math:`\hex{FD}~~\hex{06}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_splat}~\memarg` :math:`\hex{FD}~~\hex{07}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_splat}~\memarg` :math:`\hex{FD}~~\hex{08}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_splat}~\memarg` :math:`\hex{FD}~~\hex{09}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_splat}~\memarg` :math:`\hex{FD}~~\hex{0A}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE~\memarg` :math:`\hex{FD}~~\hex{0B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\VCONST~\i128` :math:`\hex{FD}~~\hex{0C}` :math:`[] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SHUFFLE~\laneidx^{16}` :math:`\hex{FD}~~\hex{0D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SWIZZLE` :math:`\hex{FD}~~\hex{0E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\SPLAT` :math:`\hex{FD}~~\hex{0F}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\SPLAT` :math:`\hex{FD}~~\hex{10}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\SPLAT` :math:`\hex{FD}~~\hex{11}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\SPLAT` :math:`\hex{FD}~~\hex{12}` :math:`[\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\SPLAT` :math:`\hex{FD}~~\hex{13}` :math:`[\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\SPLAT` :math:`\hex{FD}~~\hex{14}` :math:`[\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{15}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{16}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{17}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_s}~\laneidx` :math:`\hex{FD}~~\hex{18}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTRACTLANE\K{\_u}~\laneidx` :math:`\hex{FD}~~\hex{19}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1A}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1B}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1D}` :math:`[\V128] \to [\I64]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{1E}` :math:`[\V128~\I64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{1F}` :math:`[\V128] \to [\F32]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{20}` :math:`[\V128~\F32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\EXTRACTLANE~\laneidx` :math:`\hex{FD}~~\hex{21}` :math:`[\V128] \to [\F64]` :ref:`validation ` :ref:`execution ` +:math:`\F64X2.\REPLACELANE~\laneidx` :math:`\hex{FD}~~\hex{22}` :math:`[\V128~\F64] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\VEQ` :math:`\hex{FD}~~\hex{23}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNE` :math:`\hex{FD}~~\hex{24}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{25}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{26}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{27}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{28}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{29}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{2A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{2B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{2C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VEQ` :math:`\hex{FD}~~\hex{2D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNE` :math:`\hex{FD}~~\hex{2E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{2F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{30}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{31}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{32}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{33}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{34}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{35}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{36}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VEQ` :math:`\hex{FD}~~\hex{37}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNE` :math:`\hex{FD}~~\hex{38}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{39}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLT\K{\_u}` :math:`\hex{FD}~~\hex{3A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{3B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGT\K{\_u}` :math:`\hex{FD}~~\hex{3C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{3D}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VLE\K{\_u}` :math:`\hex{FD}~~\hex{3E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{3F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VGE\K{\_u}` :math:`\hex{FD}~~\hex{40}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VEQ` :math:`\hex{FD}~~\hex{41}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNE` :math:`\hex{FD}~~\hex{42}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLT` :math:`\hex{FD}~~\hex{43}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGT` :math:`\hex{FD}~~\hex{44}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VLE` :math:`\hex{FD}~~\hex{45}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VGE` :math:`\hex{FD}~~\hex{46}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VEQ` :math:`\hex{FD}~~\hex{47}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNE` :math:`\hex{FD}~~\hex{48}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLT` :math:`\hex{FD}~~\hex{49}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGT` :math:`\hex{FD}~~\hex{4A}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VLE` :math:`\hex{FD}~~\hex{4B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VGE` :math:`\hex{FD}~~\hex{4C}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VNOT` :math:`\hex{FD}~~\hex{4D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VAND` :math:`\hex{FD}~~\hex{4E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VANDNOT` :math:`\hex{FD}~~\hex{4F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VOR` :math:`\hex{FD}~~\hex{50}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\VXOR` :math:`\hex{FD}~~\hex{51}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\BITSELECT` :math:`\hex{FD}~~\hex{52}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\V128.\ANYTRUE` :math:`\hex{FD}~~\hex{53}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{54}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{55}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{56}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{57}` :math:`[\I32~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{8\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{58}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{16\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{59}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{32\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5A}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\STORE\K{64\_lane}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5B}` :math:`[\I32~\V128] \to []` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{32\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5C}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\V128.\LOAD\K{64\_zero}~\memarg~\laneidx` :math:`\hex{FD}~~\hex{5D}` :math:`[\I32] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VDEMOTE\K{\_f64x2\_zero}` :math:`\hex{FD}~~\hex{5E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPROMOTE\K{\_low\_f32x4}` :math:`\hex{FD}~~\hex{5F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VABS` :math:`\hex{FD}~~\hex{60}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VNEG` :math:`\hex{FD}~~\hex{61}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VPOPCNT` :math:`\hex{FD}~~\hex{62}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\ALLTRUE` :math:`\hex{FD}~~\hex{63}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\BITMASK` :math:`\hex{FD}~~\hex{64}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{65}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I8X16.\NARROW\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{66}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VCEIL` :math:`\hex{FD}~~\hex{67}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VFLOOR` :math:`\hex{FD}~~\hex{68}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VTRUNC` :math:`\hex{FD}~~\hex{69}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEAREST` :math:`\hex{FD}~~\hex{6A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHL` :math:`\hex{FD}~~\hex{6B}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{6C}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{6D}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD` :math:`\hex{FD}~~\hex{6E}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{6F}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{70}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB` :math:`\hex{FD}~~\hex{71}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{72}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{73}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCEIL` :math:`\hex{FD}~~\hex{74}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VFLOOR` :math:`\hex{FD}~~\hex{75}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{76}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{77}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{78}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{79}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VTRUNC` :math:`\hex{FD}~~\hex{7A}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{7B}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_s}` :math:`\hex{FD}~~\hex{7C}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTADDPAIRWISE\K{\_i8x16\_u}` :math:`\hex{FD}~~\hex{7D}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{7E}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTADDPAIRWISE\K{\_i16x8\_u}` :math:`\hex{FD}~~\hex{7F}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VABS` :math:`\hex{FD}~~\hex{80}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VNEG` :math:`\hex{FD}~~\hex{81}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\Q15MULRSAT\K{\_s}` :math:`\hex{FD}~~\hex{82}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\ALLTRUE` :math:`\hex{FD}~~\hex{83}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\BITMASK` :math:`\hex{FD}~~\hex{84}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{85}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\NARROW\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{86}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{87}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{88}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{89}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VEXTEND\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{8A}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\VSHL` :math:`\hex{FD}~~\hex{8B}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{8C}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{8D}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD` :math:`\hex{FD}~~\hex{8E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_s}` :math:`\hex{FD}~~\hex{8F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VADD\K{\_sat\_u}` :math:`\hex{FD}~~\hex{90}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB` :math:`\hex{FD}~~\hex{91}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VSUB\K{\_sat\_u}` :math:`\hex{FD}~~\hex{93}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEAREST` :math:`\hex{FD}~~\hex{94}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMUL` :math:`\hex{FD}~~\hex{95}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{96}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{97}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{98}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{99}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\AVGR\K{\_u}` :math:`\hex{FD}~~\hex{9B}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_s}` :math:`\hex{FD}~~\hex{9C}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_s}` :math:`\hex{FD}~~\hex{9D}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_low\_i8x16\_u}` :math:`\hex{FD}~~\hex{9E}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I16X8.\EXTMUL\K{\_high\_i8x16\_u}` :math:`\hex{FD}~~\hex{9F}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VABS` :math:`\hex{FD}~~\hex{A0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VNEG` :math:`\hex{FD}~~\hex{A1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\ALLTRUE` :math:`\hex{FD}~~\hex{A3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\BITMASK` :math:`\hex{FD}~~\hex{A4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{A7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{A8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{A9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VEXTEND\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{AA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\VSHL` :math:`\hex{FD}~~\hex{AB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{AC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{AD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VADD` :math:`\hex{FD}~~\hex{AE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VSUB` :math:`\hex{FD}~~\hex{B1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMUL` :math:`\hex{FD}~~\hex{B5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_s}` :math:`\hex{FD}~~\hex{B6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMIN\K{\_u}` :math:`\hex{FD}~~\hex{B7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_s}` :math:`\hex{FD}~~\hex{B8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VMAX\K{\_u}` :math:`\hex{FD}~~\hex{B9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\DOT\K{\_i16x8\_s}` :math:`\hex{FD}~~\hex{BA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_s}` :math:`\hex{FD}~~\hex{BC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_s}` :math:`\hex{FD}~~\hex{BD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_low\_i16x8\_u}` :math:`\hex{FD}~~\hex{BE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I32X4.\EXTMUL\K{\_high\_i16x8\_u}` :math:`\hex{FD}~~\hex{BF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VABS` :math:`\hex{FD}~~\hex{C0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNEG` :math:`\hex{FD}~~\hex{C1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\ALLTRUE` :math:`\hex{FD}~~\hex{C3}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\BITMASK` :math:`\hex{FD}~~\hex{C4}~~\hex{01}` :math:`[\V128] \to [\I32]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{C7}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{C8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{C9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VEXTEND\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{CA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\VSHL` :math:`\hex{FD}~~\hex{CB}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_s}` :math:`\hex{FD}~~\hex{CC}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSHR\K{\_u}` :math:`\hex{FD}~~\hex{CD}~~\hex{01}` :math:`[\V128~\I32] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VADD` :math:`\hex{FD}~~\hex{CE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VSUB` :math:`\hex{FD}~~\hex{D1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VMUL` :math:`\hex{FD}~~\hex{D5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VEQ` :math:`\hex{FD}~~\hex{D6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VNE` :math:`\hex{FD}~~\hex{D7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLT\K{\_s}` :math:`\hex{FD}~~\hex{D8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGT\K{\_s}` :math:`\hex{FD}~~\hex{D9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VLE\K{\_s}` :math:`\hex{FD}~~\hex{DA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\VGE\K{\_s}` :math:`\hex{FD}~~\hex{DB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{DC}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_s}` :math:`\hex{FD}~~\hex{DD}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{DE}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\I64X2.\EXTMUL\K{\_high\_i32x4\_u}` :math:`\hex{FD}~~\hex{DF}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution ` +:math:`\F32X4.\VABS` :math:`\hex{FD}~~\hex{E0}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VNEG` :math:`\hex{FD}~~\hex{E1}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSQRT` :math:`\hex{FD}~~\hex{E3}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VADD` :math:`\hex{FD}~~\hex{E4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VSUB` :math:`\hex{FD}~~\hex{E5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMUL` :math:`\hex{FD}~~\hex{E6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VDIV` :math:`\hex{FD}~~\hex{E7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMIN` :math:`\hex{FD}~~\hex{E8}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VMAX` :math:`\hex{FD}~~\hex{E9}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMIN` :math:`\hex{FD}~~\hex{EA}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VPMAX` :math:`\hex{FD}~~\hex{EB}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VABS` :math:`\hex{FD}~~\hex{EC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VNEG` :math:`\hex{FD}~~\hex{ED}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSQRT` :math:`\hex{FD}~~\hex{EF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VADD` :math:`\hex{FD}~~\hex{F0}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VSUB` :math:`\hex{FD}~~\hex{F1}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMUL` :math:`\hex{FD}~~\hex{F2}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VDIV` :math:`\hex{FD}~~\hex{F3}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMIN` :math:`\hex{FD}~~\hex{F4}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VMAX` :math:`\hex{FD}~~\hex{F5}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMIN` :math:`\hex{FD}~~\hex{F6}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VPMAX` :math:`\hex{FD}~~\hex{F7}~~\hex{01}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_s}` :math:`\hex{FD}~~\hex{F8}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\TRUNC\K{\_sat\_f32x4\_u}` :math:`\hex{FD}~~\hex{F9}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_s}` :math:`\hex{FD}~~\hex{FA}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\VCONVERT\K{\_i32x4\_u}` :math:`\hex{FD}~~\hex{FB}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_s\_zero}` :math:`\hex{FD}~~\hex{FC}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}` :math:`\hex{FD}~~\hex{FD}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_s}` :math:`\hex{FD}~~\hex{FE}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\VCONVERT\K{\_low\_i32x4\_u}` :math:`\hex{FD}~~\hex{FF}~~\hex{01}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RELAXEDSWIZZLE` :math:`\hex{FD}~~\hex{80}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}` :math:`\hex{FD}~~\hex{81}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}` :math:`\hex{FD}~~\hex{82}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}` :math:`\hex{FD}~~\hex{83}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}` :math:`\hex{FD}~~\hex{84}~~\hex{02}` :math:`[\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMADD` :math:`\hex{FD}~~\hex{85}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{86}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMADD` :math:`\hex{FD}~~\hex{87}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDNMADD` :math:`\hex{FD}~~\hex{88}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I8X16.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{89}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8A}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8B}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I64X2.\RELAXEDLANESELECT` :math:`\hex{FD}~~\hex{8C}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8D}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F32X4.\RELAXEDMAX` :math:`\hex{FD}~~\hex{8E}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMIN` :math:`\hex{FD}~~\hex{8F}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\F64X2.\RELAXEDMAX` :math:`\hex{FD}~~\hex{90}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDQ15MULRS` :math:`\hex{FD}~~\hex{91}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}` :math:`\hex{FD}~~\hex{92}~~\hex{02}` :math:`[\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +:math:`\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}` :math:`\hex{FD}~~\hex{93}~~\hex{02}` :math:`[\V128~\V128~\V128] \to [\V128]` :ref:`validation ` :ref:`execution `, :ref:`operator ` +==================================================== ==================================== ============================================= ============================================= =================================================================================== .. note:: Multi-byte opcodes are given with the shortest possible encoding in the table. diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index b96ed4f48..91dbcb922 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -416,18 +416,18 @@ Most vector instructions are defined in terms of generic numeric operators appli 3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -4. Let :math:`c'` be the result of computing :math:`\lanes^{-1}_{\I8X16}(\rswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2)))`. +4. Let :math:`c'` be the result of computing :math:`\lanes^{-1}_{\I8X16}(\relaxedswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2)))`. 5. Push the value :math:`\V128.\VCONST~c'` onto the stack. .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\rswizzle &\stepto& (\V128\K{.}\VCONST~c') + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\relaxedswizzle &\stepto& (\V128\K{.}\VCONST~c') \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & c' = \lanes^{-1}_{i8x16}(\rswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2))) + (\iff & c' = \lanes^{-1}_{i8x16}(\relaxedswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2))) \end{array} \end{array} @@ -641,12 +641,12 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} -.. _exec-rlaneselect: +.. _exec-relaxedlaneselect: :math:`t\K{x}N\K{.}\RELAXEDLANESELECT` ...................................... -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -656,7 +656,7 @@ Most vector instructions are defined in terms of generic numeric operators appli 5. Let :math:`B` be the :ref:`bit width ` :math:`|t|` of :ref:`value type ` :math:`t`. -6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{t\K{x}N}(\rlaneselect_{B}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))`. +6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{t\K{x}N}(\relaxedlaneselect_{B}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))`. 7. Push the value :math:`\V128.\VCONST~c` to the stack. @@ -667,7 +667,7 @@ Most vector instructions are defined in terms of generic numeric operators appli \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff c = \lanes^{-1}_{t\K{x}N}(\rlaneselect_{|t|}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))) \\ + (\iff c = \lanes^{-1}_{t\K{x}N}(\relaxedlaneselect_{|t|}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))) \\ \end{array} \end{array} @@ -967,7 +967,7 @@ where: 3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\ridotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` 5. Let :math:`j^8` be the result of computing :math:`\iadd_{16}(i_1, i_2)^8`. @@ -982,7 +982,7 @@ where: \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & (i_1~i_2)^8 = \ridotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + (\iff & (i_1~i_2)^8 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ \wedge & j^8 = \iadd_{16}(i_1, i_2)^8 \\ \wedge & c = \lanes^{-1}_{\I16X8}(j^8)) \end{array} @@ -1000,7 +1000,7 @@ where: 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`(i_1~i_2~i_3~i_4)^4` be the result of computing :math:`\ridotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +5. Let :math:`(i_1~i_2~i_3~i_4)^4` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` 6. Let :math:`k^4` be the result of computing :math:`\lanes_{\I32X4}(c_3)`. @@ -1017,7 +1017,7 @@ where: \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & (i_1~i_2~i_3~i_4)^4 = \ridotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + (\iff & (i_1~i_2~i_3~i_4)^4 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ \wedge & k^4 = \lanes_{\I32X4}(c_3) \\ \wedge & j^4 = \iadd_{16}(i_1, i_2, i_3, i_4, k)^4 \\ \wedge & c = \lanes^{-1}_{\I32X4}(j^4)) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 92c994397..c7fbefc19 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1989,38 +1989,38 @@ each environment globally chooses a fixed projection for each operator. itself can still be non-deterministic or partial. -.. _op-frmadd: +.. _op-relaxed_madd: -:math:`\frmadd_N(z_1, z_2, z_3)` -................................ +:math:`\relaxedmadd_N(z_1, z_2, z_3)` +..................................... Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`fma` is defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \frmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ - & \frmadd_N(z_1, z_2, z_3) &=& fma_N(z_1, z_2, z_3) \\ + \EXPROFDET & \relaxedmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ + & \relaxedmadd_N(z_1, z_2, z_3) &=& fma_N(z_1, z_2, z_3) \\ \end{array} -.. _op-frnmadd: +.. _op-relaxed_nmadd: -:math:`\frnmadd_N(z_1, z_2, z_3)` -................................. +:math:`\relaxednmadd_N(z_1, z_2, z_3)` +...................................... Relaxed negative multiply-add allows for fused or unfused results. .. math:: \begin{array}{@{}llcll} - & \frnmadd_N(z_1, z_2, z_3) &=& \frmadd_N(-z_1, z_2, z_3) \\ + & \relaxednmadd_N(z_1, z_2, z_3) &=& \relaxedmadd_N(-z_1, z_2, z_3) \\ \end{array} -.. _op-rswizzle: +.. _op-relaxed_swizzle: -:math:`\rswizzle(a^n, s^n)` -........................... +:math:`\relaxedswizzle(a^n, s^n)` +................................. Relaxed swizzle lane is deterministic if the signed interpretation of the index is less than 16 (including negative values). @@ -2028,55 +2028,56 @@ if the signed interpretation of the index is less than 16 (including negative va .. math:: \begin{array}{@{}llcll} - & \rswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ - & \rswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ - \EXPROFDET & \rswizzlelane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ - & \rswizzlelane(i^n, j) &=& 0 & (\otherwise) \\ + & \relaxedswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ + & \relaxedswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ + \EXPROFDET & \relaxedswizzlelane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ + & \relaxedswizzlelane(i^n, j) &=& 0 & (\otherwise) \\ \\ - & \rswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ - & \qquad \where \X{rsl}_i &=& \rswizzlelane(a^n, s^n[i]) + & \relaxedswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ + & \qquad \where \X{rsl}_i &=& \relaxedswizzlelane(a^n, s^n[i]) \end{array} -.. _op-rtrunc: -.. _op-rtrunc_u: +.. _op-relaxed_trunc: +.. _op-relaxed_trunc_u: -:math:`\rtrunc^u_{M,N}(z)` -.......................... +:math:`\relaxedtrunc^u_{M,N}(z)` +................................ Relaxed unsigned truncation converts floating point numbers to integers. The result for NaN's and out-of-range values is host-dependent. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \rtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ - \EXPROFDET & \rtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ - \EXPROFDET & \rtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ - & \rtrunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ + \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ + \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ + \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + & \relaxedtrunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ \end{array} -.. _op-rtrunc_s: +.. _op-relaxed_trunc_s: -:math:`\rtrunc^s_{M,N}(z)` -.......................... +:math:`\relaxedtrunc^s_{M,N}(z)` +................................ Relaxed signed truncation converts floating point numbers to integers. The result for NaN's and out-of-range values is host-dependent. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \rtrunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ - \EXPROFDET & \rtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ - \EXPROFDET & \rtrunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ - & \rtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ + \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ + \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ + \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ + & \relaxedtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ \end{array} -.. _op-rlaneselect: +.. _op-relaxed_lane_select: +.. _op-relaxed_lane: -:math:`\rlaneselect_B(a^n, b^n, c^n)` -..................................... +:math:`\relaxedlaneselect_B(a^n, b^n, c^n)` +........................................... Relaxed lane selection is deterministic when all bits are set or unset in the mask. Otherwise depending on the host, either only the top bit is examined, or @@ -2084,72 +2085,72 @@ all bits are examined (i.e. it becomes a bit select). .. math:: \begin{array}{@{}llcll} - & relaxed\_lane_N(i_1, i_2, 2^N-1) &=& i_1 \\ - & relaxed\_lane_N(i_1, i_2, 0) &=& i_2 \\ - \EXPROFDET & relaxed\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ - \EXPROFDET & relaxed\_lane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ - & relaxed\_lane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ + & \relaxedlane_N(i_1, i_2, 2^N-1) &=& i_1 \\ + & \relaxedlane_N(i_1, i_2, 0) &=& i_2 \\ + \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ + \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ + & \relaxedlane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ \\ - & \rlaneselect_B(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ - & \qquad \where rll_i &=& relaxed\_lane_B(a^n[i], b^n[i], c^n[i]) \\ + & \relaxedlaneselect_B(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ + & \qquad \where rll_i &=& \relaxedlane_B(a^n[i], b^n[i], c^n[i]) \\ \end{array} -.. _op-frmin: +.. _op-relaxed_min: -:math:`\frmin_N(z_1, z_2)` -.......................... +:math:`\relaxedmin_N(z_1, z_2)` +............................... Relaxed minimum differs from regular minimum when inputs are NaN's or zeroes with different signs. It allows for implementation to return the first or second input when either input is a NaN. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \frmin_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & \frmin_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & \frmin_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ - & \frmin_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + \EXPROFDET & \relaxedmin_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & \relaxedmin_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & \relaxedmin_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ + & \relaxedmin_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ \end{array} -.. _op-frmax: +.. _op-relaxed_max: -:math:`\frmax_N(z_1, z_2)` -.......................... +:math:`\relaxedmax_N(z_1, z_2)` +............................... Relaxed maximum differs from regular maximum when inputs are NaN's or zeroes with different signs. It allows for implementations to return the first or second input when either input is a NaN. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \frmax_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & \frmax_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & \frmax_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ - & \frmax_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \EXPROFDET & \relaxedmax_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ + \EXPROFDET & \relaxedmax_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ + \EXPROFDET & \relaxedmax_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ + & \relaxedmax_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ \end{array} -.. _op-irq15mulr_s: +.. _op-relaxed_q15mulr_s: -:math:`\irq15mulrs_N(i_1, i_2)` -............................... +:math:`\relaxedq15mulrs_N(i_1, i_2)` +.................................... .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \irq15mulrs_N(i_1, i_2) &=& [ \sats_N(i), i \mod 2^N ] & (\iff i = \ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) \\ - & \irq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) + \EXPROFDET & \relaxedq15mulrs_N(i_1, i_2) &=& [ \sats_N(i), i \mod 2^N ] & (\iff i = \ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) \\ + & \relaxedq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) \end{array} -.. _op-ridotmul: +.. _op-relaxed_dot_mul: -:math:`\ridotmul_{M,N}(i_1, i_2)` -................................. +:math:`\relaxeddotmul_{M,N}(i_1, i_2)` +...................................... Relaxed integer dot product differs from regular integer dot product when the elements of the input have their most significant bit set. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \ridotmul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ - & \ridotmul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ + \EXPROFDET & \relaxeddotmul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ + & \relaxeddotmul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 77a51e35e..0d0c0f3bb 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1203,16 +1203,17 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} -.. |frmadd| mathdef:: \xref{exec/numerics}{op-frmaddd}{\F{frelaxed\_madd}} -.. |frnmadd| mathdef:: \xref{exec/numerics}{op-frnmadd}{\F{frelaxed\_nmadd}} -.. |rswizzlelane| mathdef:: \xref{exec/numerics}{op-rswizzle_lane}{\F{relaxed\_swizzle\_lane}} -.. |rswizzle| mathdef:: \xref{exec/numerics}{op-rswizzle}{\F{relaxed\_swizzle}} -.. |rtrunc| mathdef:: \xref{exec/numerics}{op-rtrunc}{\F{relaxed\_trunc}} -.. |rlaneselect| mathdef:: \xref{exec/numerics}{op-rlaneselect}{\F{relaxed\_laneselect}} -.. |frmin| mathdef:: \xref{exec/numerics}{op-frmin}{\F{frelaxed\_min}} -.. |frmax| mathdef:: \xref{exec/numerics}{op-frmax}{\F{frelaxed\_max}} -.. |irq15mulrs| mathdef:: \xref{exec/numerics}{op-irq15mulr_s}{\F{irelaxed\_q15mulr\_s}} -.. |ridotmul| mathdef:: \xref{exec/numerics}{op-ridotmul}{\F{relaxed\_dot\_mul}} +.. |relaxedmadd| mathdef:: \xref{exec/numerics}{op-relaxed_madd}{\F{frelaxed\_madd}} +.. |relaxednmadd| mathdef:: \xref{exec/numerics}{op-relaxed_nmadd}{\F{frelaxed\_nmadd}} +.. |relaxedswizzlelane| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle_lane}{\F{relaxed\_swizzle\_lane}} +.. |relaxedswizzle| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle}{\F{relaxed\_swizzle}} +.. |relaxedtrunc| mathdef:: \xref{exec/numerics}{op-relaxed_trunc}{\F{relaxed\_trunc}} +.. |relaxedlane| mathdef:: \xref{exec/numerics}{op-relaxed_lane}{\F{relaxed\_lane}} +.. |relaxedlaneselect| mathdef:: \xref{exec/numerics}{op-relaxed_lane_select}{\F{relaxed\_laneselect}} +.. |relaxedmin| mathdef:: \xref{exec/numerics}{op-relaxed_min}{\F{frelaxed\_min}} +.. |relaxedmax| mathdef:: \xref{exec/numerics}{op-relaxed_max}{\F{frelaxed\_max}} +.. |relaxedq15mulrs| mathdef:: \xref{exec/numerics}{op-relaxed_q15mulr_s}{\F{irelaxed\_q15mulr\_s}} +.. |relaxeddotmul| mathdef:: \xref{exec/numerics}{op-relaxed_dot_mul}{\F{relaxed\_dot\_mul}} .. Numerics, meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index ed09468be..393703cff 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -487,7 +487,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-rlaneselect: +.. _valid-relaxedlaneselect: :math:`\shape\K{.}\RELAXEDLANESELECT` ..................................... From a7d4e96b8d9ee120708193ac429e4541d8939e77 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Tue, 14 Feb 2023 18:16:26 +0000 Subject: [PATCH 103/230] Update changes --- document/core/appendix/changes.rst | 18 ++++++++++++++++++ document/core/syntax/instructions.rst | 1 + 2 files changed, 19 insertions(+) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 339cb25f9..7d66483d8 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -7,6 +7,24 @@ Change History Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated. The following sections provide an overview of what has changed. +Release 2.1 +~~~~~~~~~~~ + +.. index:: instruction, SIMD + +Relaxed vector instructions +........................... + +Added new relaxed vector instructions, which are vector instructions whose results are host-dependent. + +* New binary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}`, :math:`\K{i16x8.relaxed\_q15mulr\_s}`, :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` + +* New ternary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_madd}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_nmadd}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.relaxed\_laneselect}`, :math:`\K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}` + +* New conversion :ref:`relaxed vector instructions `::math:`\K{i32x4.relaxed\_trunc\_f32x4\_}\sx`, :math:`\K{i32x4.relaxed\_trunc\_f64x2\_}\sx\K{\_zero}` + +* New byte reordering :ref:`relaxed vector instruction `: :math:`\K{i8x16.relaxed\_swizzle}` + Release 2.0 ~~~~~~~~~~~ diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index f5ea8454a..7908d2cd4 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -193,6 +193,7 @@ Occasionally, it is convenient to group operators together according to the foll .. _syntax-rvfbinop: .. _syntax-rvfternop: .. _syntax-instr-vec: +.. _syntax-instr-relaxed: Vector Instructions ~~~~~~~~~~~~~~~~~~~ From 824c9fd0c8e59b611f5b8a1d6b4bdb2fb7fa3cce Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 15 Feb 2023 00:51:30 +0000 Subject: [PATCH 104/230] Text for relaxed q15muls --- document/core/exec/numerics.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index c7fbefc19..06e5a3f14 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2135,6 +2135,9 @@ It allows for implementations to return the first or second input when either in :math:`\relaxedq15mulrs_N(i_1, i_2)` .................................... +Relaxed Q15 multiply differs from regular Q15 multiply when the multiplication results overflows (i.e. when both inputs are -32768). +It allows for implementations to either wrap around or saturate. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedq15mulrs_N(i_1, i_2) &=& [ \sats_N(i), i \mod 2^N ] & (\iff i = \ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) \\ From 61fd687618b0966580a8d13160d58e780960441a Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Wed, 15 Feb 2023 18:29:16 +0000 Subject: [PATCH 105/230] Typo --- document/core/exec/numerics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 06e5a3f14..e7b893960 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1973,8 +1973,8 @@ Conversions .. _relaxed-ops: -Relaxed operators -~~~~~~~~~~~~~~~~~ +Relaxed operations +~~~~~~~~~~~~~~~~~~ The result of *relaxed* operators are *host-dependent*, because the set of possible results may depend on properties of the host environment (such as From 70bf915a1329fd525e697abc47a0068e63652d6e Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Mon, 27 Feb 2023 19:14:06 +0000 Subject: [PATCH 106/230] Fix semantics for dot relaxed dot allows the intermediate 16-bit to be saturated (if the underlying host uses signed * unsigned 8 bit, the dot product, 8-bit * 8-bit + 8-bit * -bit) overflows. --- document/core/exec/instructions.rst | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 91dbcb922..1fddba5a9 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -969,7 +969,7 @@ where: 4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` -5. Let :math:`j^8` be the result of computing :math:`\iadd_{16}(i_1, i_2)^8`. +5. Let :math:`j^8` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. 6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I16X8}(j^8)`. @@ -983,7 +983,7 @@ where: \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} (\iff & (i_1~i_2)^8 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ - \wedge & j^8 = \iadd_{16}(i_1, i_2)^8 \\ + \wedge & j^8 = \sats_{16}(i_1, i_2)^8 \\ \wedge & c = \lanes^{-1}_{\I16X8}(j^8)) \end{array} \end{array} @@ -1000,15 +1000,19 @@ where: 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`(i_1~i_2~i_3~i_4)^4` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +5. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` -6. Let :math:`k^4` be the result of computing :math:`\lanes_{\I32X4}(c_3)`. +6. Let :math:`(j_1~j_2)^4` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. -7. Let :math:`j^4` be the result of computing :math:`\iadd_{32}(i_1, i_2, i_3, i_4, k)^4`. +7. Let :math:`j^4` be the result of computing :math:`\iadd_{32}(\extend^{s}_{16, 32}(j_1), \extend^{s}_{16, 32}(j_2))^4`. -8. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I32X4}(j^4)`. +8. Let :math:`k^4` be the result of computing :math:`\lanes_{\I32X4}(c_3)`. -9. Push the value :math:`\V128.\VCONST~c` onto the stack. +9. Let :math:`l^4` be the result of computing :math:`\iadd_{32}(j, k)^4`. + +10. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I32X4}(l^4)`. + +11. Push the value :math:`\V128.\VCONST~c` onto the stack. .. math:: \begin{array}{l} @@ -1017,10 +1021,12 @@ where: \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & (i_1~i_2~i_3~i_4)^4 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + (\iff & (i_1~i_2)^8 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + \wedge & (j_1~j_2)^4 = \sats_{16}(i_1 + i_2)^8 \\ + \wedge & j^4 = \iadd_{32}(\extend^{s}_{16, 32}(j_1), \extend^{s}_{16, 32}(j_2))^4 \\ \wedge & k^4 = \lanes_{\I32X4}(c_3) \\ - \wedge & j^4 = \iadd_{16}(i_1, i_2, i_3, i_4, k)^4 \\ - \wedge & c = \lanes^{-1}_{\I32X4}(j^4)) + \wedge & l^4 = \iadd_{32}(j, k)^4 \\ + \wedge & c = \lanes^{-1}_{\I32X4}(l^4)) \end{array} \end{array} From 4073d2731579a3418251548cc3b520c76d70cdc8 Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 2 Mar 2023 12:15:01 -0800 Subject: [PATCH 107/230] Update document/core/appendix/changes.rst Co-authored-by: Andreas Rossberg --- document/core/appendix/changes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 7d66483d8..bcd1e05d6 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -15,7 +15,7 @@ Release 2.1 Relaxed vector instructions ........................... -Added new relaxed vector instructions, which are vector instructions whose results are host-dependent. +Added new relaxed vector instructions, which are vector instructions whose behaviour is host-dependent. * New binary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}`, :math:`\K{i16x8.relaxed\_q15mulr\_s}`, :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` From 753c77996039b813de2ca267bdae4021b1e3bb2d Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Thu, 2 Mar 2023 12:15:15 -0800 Subject: [PATCH 108/230] Update document/core/appendix/changes.rst Co-authored-by: Andreas Rossberg --- document/core/appendix/changes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index bcd1e05d6..9be03e66a 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -10,7 +10,7 @@ The following sections provide an overview of what has changed. Release 2.1 ~~~~~~~~~~~ -.. index:: instruction, SIMD +.. index:: instruction, vector instruction, SIMD Relaxed vector instructions ........................... From f59b512dae438485363bc13bc37a3754fa18455b Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Thu, 2 Mar 2023 12:16:31 -0800 Subject: [PATCH 109/230] Move changes down --- document/core/appendix/changes.rst | 36 +++++++++++++++--------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 9be03e66a..3f806ae08 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -7,24 +7,6 @@ Change History Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated. The following sections provide an overview of what has changed. -Release 2.1 -~~~~~~~~~~~ - -.. index:: instruction, vector instruction, SIMD - -Relaxed vector instructions -........................... - -Added new relaxed vector instructions, which are vector instructions whose behaviour is host-dependent. - -* New binary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}`, :math:`\K{i16x8.relaxed\_q15mulr\_s}`, :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` - -* New ternary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_madd}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_nmadd}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.relaxed\_laneselect}`, :math:`\K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}` - -* New conversion :ref:`relaxed vector instructions `::math:`\K{i32x4.relaxed\_trunc\_f32x4\_}\sx`, :math:`\K{i32x4.relaxed\_trunc\_f64x2\_}\sx\K{\_zero}` - -* New byte reordering :ref:`relaxed vector instruction `: :math:`\K{i8x16.relaxed\_swizzle}` - Release 2.0 ~~~~~~~~~~~ @@ -155,6 +137,24 @@ Added vector type and instructions that manipulate multiple numeric values in pa * New injection/projection :ref:`vector instructions `: :math:`\K{i}\!N\!\K{x}\!M\!\K{.splat}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.splat}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.bitmask}` +Release 2.1 +~~~~~~~~~~~ + +.. index:: instruction, vector instruction, SIMD + +Relaxed vector instructions +........................... + +Added new relaxed vector instructions, which are vector instructions whose behaviour is host-dependent. + +* New binary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}`, :math:`\K{i16x8.relaxed\_q15mulr\_s}`, :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` + +* New ternary :ref:`relaxed vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_madd}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_nmadd}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.relaxed\_laneselect}`, :math:`\K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}` + +* New conversion :ref:`relaxed vector instructions `::math:`\K{i32x4.relaxed\_trunc\_f32x4\_}\sx`, :math:`\K{i32x4.relaxed\_trunc\_f64x2\_}\sx\K{\_zero}` + +* New byte reordering :ref:`relaxed vector instruction `: :math:`\K{i8x16.relaxed\_swizzle}` + .. [#proposal-signext] https://github.com/WebAssembly/spec/tree/main/proposals/sign-extension-ops/ From 8afc0d148937b08023d601e2f226ca761c203572 Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Thu, 2 Mar 2023 12:24:07 -0800 Subject: [PATCH 110/230] Add FMA definition --- document/core/exec/numerics.rst | 9 ++++++--- document/core/util/macros.def | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index e7b893960..fb062bbcc 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1990,17 +1990,20 @@ each environment globally chooses a fixed projection for each operator. .. _op-relaxed_madd: +.. _op-fma: :math:`\relaxedmadd_N(z_1, z_2, z_3)` ..................................... -Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`fma` is +Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`\fma` is defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \relaxedmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), fma_N(z_1, z_2, z_3) ] \\ - & \relaxedmadd_N(z_1, z_2, z_3) &=& fma_N(z_1, z_2, z_3) \\ + \EXPROFDET & \relaxedmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), \fma_N(z_1, z_2, z_3) ] \\ + & \relaxedmadd_N(z_1, z_2, z_3) &=& \fma_N(z_1, z_2, z_3) \\ + \\ + & \fma_N(z_1, z_2, z_3) &=& \ieee_N(z_1 \cdot z_2 + z_3) \\ \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 0d0c0f3bb..24b30ac3f 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1203,6 +1203,7 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} +.. |fma| mathdef:: \xref{exec/numerics}{op-fma}{\F{fma}} .. |relaxedmadd| mathdef:: \xref{exec/numerics}{op-relaxed_madd}{\F{frelaxed\_madd}} .. |relaxednmadd| mathdef:: \xref{exec/numerics}{op-relaxed_nmadd}{\F{frelaxed\_nmadd}} .. |relaxedswizzlelane| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle_lane}{\F{relaxed\_swizzle\_lane}} From 46c9480ac9a158ba39157de042f2dc61141d2cdc Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Thu, 2 Mar 2023 12:38:01 -0800 Subject: [PATCH 111/230] Reword fma --- document/core/exec/numerics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index fb062bbcc..a49d43515 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1995,8 +1995,8 @@ each environment globally chooses a fixed projection for each operator. :math:`\relaxedmadd_N(z_1, z_2, z_3)` ..................................... -Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`\fma` is -defined by |IEEE754|_ (Section 5.4.1) as *fusedMultiplyAdd*. +Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`\fma` +is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). .. math:: \begin{array}{@{}llcll} From a9ef2e447c273919b0fae3e0640852d58828ac0f Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Thu, 2 Mar 2023 12:38:58 -0800 Subject: [PATCH 112/230] Remove parens --- document/core/exec/numerics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index a49d43515..9804630af 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1995,7 +1995,7 @@ each environment globally chooses a fixed projection for each operator. :math:`\relaxedmadd_N(z_1, z_2, z_3)` ..................................... -Relaxed multiply-add (madd) allows for fused or unfused results. The function :math:`\fma` +Relaxed multiply-add allows for fused or unfused results. The function :math:`\fma` is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). .. math:: From b00d45163a8535a59b1d2947abcd1fa0550ff49a Mon Sep 17 00:00:00 2001 From: Deepti Gandluri Date: Mon, 6 Mar 2023 23:04:23 -0800 Subject: [PATCH 113/230] Add entropy.md to discuss fingerprinting, and compat concerns (#83) --- proposals/relaxed-simd/entropy.md | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 proposals/relaxed-simd/entropy.md diff --git a/proposals/relaxed-simd/entropy.md b/proposals/relaxed-simd/entropy.md new file mode 100644 index 000000000..52898e233 --- /dev/null +++ b/proposals/relaxed-simd/entropy.md @@ -0,0 +1,57 @@ +# Entropy, Compat and Usage patterns + +The Relaxed SIMD proposal adds new operations that take advantage of the underlying hardware for accelerated performance by loosening the portability constraints of fixed-width SIMD, or adding new instructions that introduce local non-determinisim. This introduces a few potential risks specifically for browser engine implementations, though it’s possible that one or more of these might be applicable to other environments: +* Identifying underlying characteristics of the device (processor information if the engine that implements this proposal used the most optimal lowerings) +* Possibly identifying information about the browser currently in use (i.e. if a sufficiently motivated user writes a hand tuned Wasm function when engines use different lowerings for instructions) +* Compatibility risks, i.e. if code compiled for one browser works differently on a different browser (This is specific to observable behavior changes, and not performance differences) + +This document is an attempt to collate information that is already available in the issues filed for each of the operations on fingerprinting risk, quantify the risk for fingerprinting/compat issues and provide some information about usage patterns. + +## Instruction summary + +* **relaxed i8x16.swizzle**
+ *Entropy exposed:* Differences between x86/ARM
+ *Deterministic lowering:* Available
+ *Compat risk:* Low, as the differences exposed are for out of range indices
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/22) +* **relaxed i32x4.trunc_{f32x4, f64x2} operations**
+ *Entropy exposed:* Differences between x86/ARM
+ *Deterministic lowering:* Available
+ *Compat risk:* Low, as the differing behavior is for out of range values, and NaNs
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/21)
+* **qfma, qfmns**
+ *Entropy exposed:* Differences between hardware that has native FMA support, and hardware that does not.
+ *Deterministic lowering:* Not available, but depending on underlying hardware, the results can only be fused, or unfused.
+ *Compat risk:* Potentially divergent behavior based on hardware FMA support
+ *Mitigating reasons to include:* Most modern hardware do have native FMA support, performance wins are significant, operations are difficult to emulate
+ [*Issue link*](https://github.com/WebAssembly/simd/pull/79)
+* **{i8x16, i16x8, i32x4, i64x2}.laneselect**
+ *Entropy exposed:* x86/ARM
+ *Deterministic lowering:* Available
+ *Compat risk:* Medium, architectures vary on which bit is used for lane selection
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/17)
+* **{f32x4, f64x2}.{min,max}**
+ *Entropy exposed:* x86/ARM
+ *Deterministic lowering:* Available
+ *Compat risk:* Low, varying outputs when one of the inputs is NaN, or +0, -0
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/33)
+* **I16x8.relaxed_q15mulr_s**
+ *Entropy exposed:* x86/ARM
+ *Deterministic lowering:* Available
+ *Compat risk:* Low, different behaviors only in the overflow case
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/40)
+* **Dot product instructions**
+ *Entropy exposed:* x86/ARM, and whether the Dot product extension is supported in the most optimal codegen
+ *Deterministic lowering:* Available, but only when not using the most optimal codegen
+ *Compat risk:* Medium for architectures that support the Dot product extensions as they vary in saturating/wrapping behavior of intermediate results
*Mitigating reasons to include:* [Performance](https://docs.google.com/presentation/d/1xlyO1ly2Fbo2Up5ZuV_BTSwiNpCwPygag09XQRjclSA/edit#slide=id.g1fee95a4c4f_0_0)
+ [*Issue link*](https://github.com/WebAssembly/relaxed-simd/issues/52) + +## Usage patterns + +One of the things to note here, for compat especially, is to lay out the usage patterns, or specifically when these instructions are generated. As the proposal is still in the experimental state, the only way to currently experiment with these instructions are to call the clang built-ins directly, and experiment with them on an engine that has these instructions available as a prototype. + +In the future, these can be invoked using: + * Wasm Intrinsic header files + * Possibly in the autovectorizer, but only when flags like `-ffast-math` are used, that assume inputs and/or results are not NaNs or +-Infs. + +The thing to note here is that by either explicitly calling the intrinsics, or using specific compiler flags is a high enough threshold that this type of local non-determinism is not something a user would encounter by default, i.e. these instructions can only be used deliberately, and the proposal assumes a specialized usage. From 4afd146464237d411e7d1ff587bf1194c3c2eea1 Mon Sep 17 00:00:00 2001 From: Deepti Gandluri Date: Mon, 6 Mar 2023 23:05:19 -0800 Subject: [PATCH 114/230] Rename entropy.md to Entropy.md --- proposals/relaxed-simd/{entropy.md => Entropy.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename proposals/relaxed-simd/{entropy.md => Entropy.md} (100%) diff --git a/proposals/relaxed-simd/entropy.md b/proposals/relaxed-simd/Entropy.md similarity index 100% rename from proposals/relaxed-simd/entropy.md rename to proposals/relaxed-simd/Entropy.md From c4c9ddaf0d8b086f64531ed80604b44e6f19efec Mon Sep 17 00:00:00 2001 From: Ng Zhi An Date: Fri, 3 Mar 2023 21:37:04 +0000 Subject: [PATCH 115/230] Add prose for exec numerics and fma --- document/core/exec/numerics.rst | 175 ++++++++++++++++++++++++++++---- 1 file changed, 153 insertions(+), 22 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 9804630af..ba9171a97 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1989,21 +1989,70 @@ each environment globally chooses a fixed projection for each operator. itself can still be non-deterministic or partial. -.. _op-relaxed_madd: .. _op-fma: +:math:`\fma(z_1, z_2, z_3)` +........................... + +The function :math:`\fma` is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). +It computes :math:`(z_1 \cdot z_2) + z_3` as if with unbounded range and precision, rounding only once for the final result. + +* If either :math:`z_1` or :math:`z_2` or :math:`z_3` is a NaN, return an element of :math:`\nans_N{z_1, z_2, z_3}`. + +* Else if either :math:`z_1` or :math:`z_2` is a zero and the other is an infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` or :math:`z_2` are infinities of equal sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` or :math:`z_2` are infinities of opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the same sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the same sign and :math:`z_3` is a zero, then return positive zero. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a positive zero, then return positive zero. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a negative zero, then return negative zero. + +* Else return the result of multiplying :math:`z_1` and :math:`z_2`, adding :math:`z_3` to the intermediate, and the final result ref:`rounded ` to the nearest representable value. + +.. math:: + \begin{array}{@{}llcll} + & \fma_N(\pm \NAN(n), z_2, z_3) &=& \nans_N\{\pm \NAN(n), z_2, z_3\} \\ + & \fma_N(z_1, \pm \NAN(n), z_3) &=& \nans_N\{\pm \NAN(n), z_1, z_3\} \\ + & \fma_N(z_1, z_2, \pm \NAN(n)) &=& \nans_N\{\pm \NAN(n), z_1, z_2\} \\ + & \fma_N(\pm \infty, \pm 0, z_3) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \mp 0, z_3) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \pm \infty, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \mp \infty, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm q_1, \pm \infty, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm q_1, \mp \infty, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \pm q_1, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\mp \infty, \pm q_1, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm 0, \pm 0, \mp 0) &=& + 0 \\ + & \fma_N(\pm 0, \pm 0, \pm 0) &=& + 0 \\ + & \fma_N(\pm 0, \mp 0, + 0) &=& + 0 \\ + & \fma_N(\pm 0, \mp 0, - 0) &=& - 0 \\ + & \fma_N(z_1, z_2, z_3) &=& \ieee_N(z_1 \cdot z_2 + z_3) \\ + \end{array} + + +.. _op-relaxed_madd: + :math:`\relaxedmadd_N(z_1, z_2, z_3)` ..................................... -Relaxed multiply-add allows for fused or unfused results. The function :math:`\fma` -is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). +Relaxed multiply-add allows for fused or unfused results. + +* :math:`\EXPROFDET` Return either :math:`\fadd_N(\fmul_N(z_1, z_2), z_3)` or :math:`\fma_N(z_1, z_2, z_3)` + +* Return :math:`\fma_N(z_1, z_2, z_3)` .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), \fma_N(z_1, z_2, z_3) ] \\ & \relaxedmadd_N(z_1, z_2, z_3) &=& \fma_N(z_1, z_2, z_3) \\ - \\ - & \fma_N(z_1, z_2, z_3) &=& \ieee_N(z_1 \cdot z_2 + z_3) \\ \end{array} @@ -2014,20 +2063,28 @@ is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). Relaxed negative multiply-add allows for fused or unfused results. +* Return :math:`\relaxedmadd(-z_1, z_2, z_3)`. + .. math:: \begin{array}{@{}llcll} & \relaxednmadd_N(z_1, z_2, z_3) &=& \relaxedmadd_N(-z_1, z_2, z_3) \\ \end{array} -.. _op-relaxed_swizzle: +.. _op-relaxed_swizzle_lane: -:math:`\relaxedswizzle(a^n, s^n)` -................................. +:math:`\relaxedswizzlelane(i^n, j)` +................................... -Relaxed swizzle lane is deterministic -if the signed interpretation of the index is less than 16 (including negative values). -:math:`j` is a 8-bit int. +* Let :math:`k` be the :ref:`signed interpretation ` of :math:`j`. + +* If :math:`j` is less than :math:`16`, return :math:`i[j]`. + +* If :math:`k` is less than :math:`0`, return :math:`0`. + +* :math:`\EXPROFDET` Otherwise, return either :math:`0` or :math:`i[j \mod n]`. + +* Otherwise, return :math:`0`. .. math:: \begin{array}{@{}llcll} @@ -2035,7 +2092,21 @@ if the signed interpretation of the index is less than 16 (including negative va & \relaxedswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ \EXPROFDET & \relaxedswizzlelane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ & \relaxedswizzlelane(i^n, j) &=& 0 & (\otherwise) \\ - \\ + \end{array} + + +.. _op-relaxed_swizzle: + +:math:`\relaxedswizzle(a^n, s^n)` +................................. + +Relaxed swizzle lane is deterministic if the signed interpretation of the index is less than 16 (including negative values). +:math:`j` is a 8-bit int. + +* Return :math:`\X{rsl}_0 \dots \X{rsl}_{n-1}` where :math:`\X{rsl}_i = \relaxedswizzlelane(a^n, s^n[i])` + +.. math:: + \begin{array}{@{}llcll} & \relaxedswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ & \qquad \where \X{rsl}_i &=& \relaxedswizzlelane(a^n, s^n[i]) \end{array} @@ -2050,12 +2121,20 @@ if the signed interpretation of the index is less than 16 (including negative va Relaxed unsigned truncation converts floating point numbers to integers. The result for NaN's and out-of-range values is host-dependent. +* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`2^N-1`. + +* :math:`\EXPROFDET` Else if :math:`\trunc(z)` is positive and less than :math:`2^N`, return :math:`\truncu_{M,N}(z)`. + +* :math:`\EXPROFDET` Else return either :math:`\truncsatu_{M,N}(z)` or :math:`2^N-1`. + +* Return :math:`\truncsatu_{M,N}(z)`. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ - & \relaxedtrunc^u_{M,N}(\pm p) &=& \truncsatu_{M,N}(\pm p) & (\otherwise) \\ + & \relaxedtrunc^u_{M,N}(z) &=& \truncsatu_{M,N}(z) & \\ \end{array} @@ -2067,24 +2146,37 @@ The result for NaN's and out-of-range values is host-dependent. Relaxed signed truncation converts floating point numbers to integers. The result for NaN's and out-of-range values is host-dependent. +* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`-2^{N-1}`. + +* :math:`\EXPROFDET` Else if :math:`\trunc(z)` is larger than :math:`-2^{N-1}-1` and less than :math:`2^{N-1}`, return :math:`\truncs_{M,N}(z)`. + +* :math:`\EXPROFDET` Else return either :math:`\truncsats_{M,N}(z)` or :math:`-2^{N-1}`. + +* Return :math:`\truncsats_{M,N}(z)`. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ - & \relaxedtrunc^s_{M,N}(\pm p) &=& \truncsats_{M,N}(\pm p) & (\otherwise) \\ + & \relaxedtrunc^s_{M,N}(z) &=& \truncsats_{M,N}(z) & \\ \end{array} -.. _op-relaxed_lane_select: .. _op-relaxed_lane: -:math:`\relaxedlaneselect_B(a^n, b^n, c^n)` -........................................... +:math:`\relaxedlane_N(i_1, i_2, i_3)` +..................................... -Relaxed lane selection is deterministic when all bits are set or unset in the -mask. Otherwise depending on the host, either only the top bit is examined, or -all bits are examined (i.e. it becomes a bit select). +* If :math:`i_3` is :math:`2^N - 1`, return :math:`i_1`. + +* Else if :math:`i_3` is :math:`0`, return :math:`i_2`. + +* :math:`\EXPROFDET` Else if :math:`\signed_n(i_3)` is less than :math:`0`, return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_1`. + +* :math:`\EXPROFDET` Otherwise return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_2`. + +* Otherwise return :math:`\ibitselect_n(i_1, i_2, i_3)`. .. math:: \begin{array}{@{}llcll} @@ -2093,7 +2185,22 @@ all bits are examined (i.e. it becomes a bit select). \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\ \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\ & \relaxedlane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ - \\ + \end{array} + + +.. _op-relaxed_lane_select: + +:math:`\relaxedlaneselect_B(a^n, b^n, c^n)` +........................................... + +Relaxed lane selection is deterministic when all bits are set or unset in the +mask. Otherwise depending on the host, either only the top bit is examined, or +all bits are examined (i.e. it becomes a bit select). + +* Return :math:`rll_0 \dots rll_{n-1}` where :math:`rll_i = \relaxedlane_B(a^n[i], b^n[i], c^n[i])`. + +.. math:: + \begin{array}{@{}llcll} & \relaxedlaneselect_B(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ & \qquad \where rll_i &=& \relaxedlane_B(a^n[i], b^n[i], c^n[i]) \\ \end{array} @@ -2107,6 +2214,14 @@ all bits are examined (i.e. it becomes a bit select). Relaxed minimum differs from regular minimum when inputs are NaN's or zeroes with different signs. It allows for implementation to return the first or second input when either input is a NaN. +* :math:`\EXPROFDET` If :math:`z_1` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_2` + +* :math:`\EXPROFDET` If :math:`z_2` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_1` + +* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, return either :math:`+ 0` or :math:`- 0`. + +* Return :math:`\fmin_N(z_1, z_2)`. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedmin_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ @@ -2124,6 +2239,14 @@ It allows for implementation to return the first or second input when either inp Relaxed maximum differs from regular maximum when inputs are NaN's or zeroes with different signs. It allows for implementations to return the first or second input when either input is a NaN. +* :math:`\EXPROFDET` If :math:`z_1` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_2` + +* :math:`\EXPROFDET` If :math:`z_2` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_1` + +* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, return either :math:`+ 0` or :math:`- 0`. + +* Return :math:`\fmax_N(z_1, z_2)`. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxedmax_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ @@ -2141,9 +2264,13 @@ It allows for implementations to return the first or second input when either in Relaxed Q15 multiply differs from regular Q15 multiply when the multiplication results overflows (i.e. when both inputs are -32768). It allows for implementations to either wrap around or saturate. +* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are :math:`-2^{N-1}`, return either :math:`2^{N-1} - 1` or :math:`-2^{N-1}`. + +* Return :math:`\iq15mulrsats(i_1, i_2)` + .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \relaxedq15mulrs_N(i_1, i_2) &=& [ \sats_N(i), i \mod 2^N ] & (\iff i = \ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) \\ + \EXPROFDET & \relaxedq15mulrs_N(-2^{N-1}, -2^{N-1}) &=& [ 2^{N-1}-1, -2^{N-1}] & \\ & \relaxedq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) \end{array} @@ -2155,6 +2282,10 @@ It allows for implementations to either wrap around or saturate. Relaxed integer dot product differs from regular integer dot product when the elements of the input have their most significant bit set. +* :math:`\EXPROFDET` Return either :math:`\imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2))`. + +* Return :math:`\imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2))`. + .. math:: \begin{array}{@{}llcll} \EXPROFDET & \relaxeddotmul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ From 44ab5bd51979c4d36be1e209cd7daa9e2b34d0bf Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 23 Mar 2023 14:05:41 -0700 Subject: [PATCH 116/230] Pull github actions from upstream spec repo (#37) Really we should be merging in all change from upstream but that is still in progress. Fixes: #35 --- .github/workflows/ci-interpreter.yml | 34 +++++++++ .github/workflows/ci-spec.yml | 101 +++++++++++++++++++++++++ .github/workflows/mirror-to-master.yml | 18 +++++ .travis.yml | 38 ---------- 4 files changed, 153 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/ci-interpreter.yml create mode 100644 .github/workflows/ci-spec.yml create mode 100644 .github/workflows/mirror-to-master.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml new file mode 100644 index 000000000..6edfa0c46 --- /dev/null +++ b/.github/workflows/ci-interpreter.yml @@ -0,0 +1,34 @@ +name: CI for interpreter & tests + +on: + push: + branches: [ main ] + paths: [ interpreter/**, test/** ] + + pull_request: + branches: [ main ] + paths: [ interpreter/**, test/** ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + interpreter: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Setup OCaml + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 4.12.x + - name: Setup OCaml tools + run: opam install --yes ocamlbuild.0.14.0 ocamlfind.1.9.5 js_of_ocaml.4.0.0 js_of_ocaml-ppx.4.0.0 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 19.x + - name: Build interpreter + run: cd interpreter && opam exec make + - name: Run tests + run: cd interpreter && opam exec make JS=node ci diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml new file mode 100644 index 000000000..7610b33b0 --- /dev/null +++ b/.github/workflows/ci-spec.yml @@ -0,0 +1,101 @@ +name: CI for specs + +on: + push: + branches: [ main ] + paths: [ document/** ] + + pull_request: + branches: [ main ] + paths: [ document/** ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build-core-spec: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + with: + submodules: "recursive" + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + - name: Setup Bikeshed + run: pip install bikeshed && bikeshed update + - name: Setup TexLive + run: sudo apt-get update -y && sudo apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended + - name: Setup Sphinx + run: pip install six && pip install sphinx==5.1.0 + - name: Build main spec + run: cd document/core && make main + - name: Run Bikeshed + run: cd document/core && make bikeshed + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: core-rendered + path: document/core/_build/html + + build-js-api-spec: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Setup Bikeshed + run: pip install bikeshed && bikeshed update + - name: Run Bikeshed + run: bikeshed spec "document/js-api/index.bs" "document/js-api/index.html" + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: js-api-rendered + path: document/js-api/index.html + + build-web-api-spec: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Setup Bikeshed + run: pip install bikeshed && bikeshed update + - name: Run Bikeshed + run: bikeshed spec "document/web-api/index.bs" "document/web-api/index.html" + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: web-api-rendered + path: document/web-api/index.html + + publish-spec: + runs-on: ubuntu-latest + needs: [build-core-spec, build-js-api-spec, build-web-api-spec] + steps: + - name: Checkout repo + uses: actions/checkout@v2 + - name: Create output directory + run: mkdir _output && cp document/index.html _output/index.html + - name: Download core spec artifact + uses: actions/download-artifact@v2 + with: + name: core-rendered + path: _output/core + - name: Download JS API spec artifact + uses: actions/download-artifact@v2 + with: + name: js-api-rendered + path: _output/js-api + - name: Download Web API spec artifact + uses: actions/download-artifact@v2 + with: + name: web-api-rendered + path: _output/web-api + - name: Publish to GitHub Pages + if: github.ref == 'refs/heads/main' + uses: peaceiris/actions-gh-pages@v3 + with: + publish_dir: ./_output + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/mirror-to-master.yml b/.github/workflows/mirror-to-master.yml new file mode 100644 index 000000000..7849af75b --- /dev/null +++ b/.github/workflows/mirror-to-master.yml @@ -0,0 +1,18 @@ +name: Mirror main branch to master branch + +on: + push: + branches: + - 'main' + +jobs: + mirror_job: + runs-on: ubuntu-latest + name: Mirror main branch to master branch + steps: + - name: Mirror branch + uses: google/mirror-branch-action@v1.0 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + source: 'main' + dest: 'master' diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 403e9dc25..000000000 --- a/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -language: python -python: - - "3.7" -dist: bionic - -addons: - apt: - sources: - - sourceline: 'ppa:avsm/ppa' - - sourceline: 'deb https://dl.yarnpkg.com/debian/ stable main' - key_url: 'https://dl.yarnpkg.com/debian/pubkey.gpg' - update: true - packages: - - opam - - texlive-full - - yarn - -install: - - opam init --auto-setup --compiler=4.07.1 - - eval $(opam env) - - opam --version - - ocaml --version - - opam install --yes ocamlbuild.0.14.0 - - pip install Sphinx==2.4.4 - - git clone https://github.com/tabatkins/bikeshed.git - - pip install --editable $PWD/bikeshed - - bikeshed update - -script: - - ./interpreter/meta/travis/build-test.sh - - bash ./document/travis-deploy.sh - -os: linux - -env: - global: - - ENCRYPTION_LABEL: "304454be9d6c" - - COMMIT_AUTHOR_EMAIL: "noreply@webassembly.org" From d456ed8ab94ac06ff30cd2c8aaaed6671b4a13f6 Mon Sep 17 00:00:00 2001 From: Keith Winstein Date: Fri, 9 Jun 2023 11:40:39 -0700 Subject: [PATCH 117/230] [test] Test u64 LEB128s that straddle maximum value (#38) --- test/core/binary-leb128.wast | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/core/binary-leb128.wast b/test/core/binary-leb128.wast index 6a4b16d02..436c16b2f 100644 --- a/test/core/binary-leb128.wast +++ b/test/core/binary-leb128.wast @@ -878,6 +878,39 @@ ) "integer too large" ) +(module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\04\00" ;; Memory section (flags: i64) + "\0a\13\01" ;; Code section + ;; function 0 + "\11\00" ;; local type count + "\42\00" ;; i64.const 0 + "\28" ;; i32.load + "\02" ;; alignment 2 + "\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; offset 2^64 - 1 + "\1a" ;; drop + "\0b" ;; end +) +(assert_malformed + (module binary + "\00asm" "\01\00\00\00" + "\01\04\01\60\00\00" ;; Type section + "\03\02\01\00" ;; Function section + "\05\03\01\04\00" ;; Memory section (flags: i64) + "\0a\13\01" ;; Code section + ;; function 0 + "\11\00" ;; local type count + "\42\00" ;; i64.const 0 + "\28" ;; i32.load + "\02" ;; alignment 2 + "\ff\ff\ff\ff\ff\ff\ff\ff\ff\02" ;; offset 2^64 (one unused bit set) + "\1a" ;; drop + "\0b" ;; end + ) + "integer too large" +) ;; Signed LEB128s sign-extend (assert_malformed From d1bcd3d8e36920835f8dd96d189344792436695e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Sun, 11 Jun 2023 11:45:24 -0500 Subject: [PATCH 118/230] Fix typo in description of limits binary format (#22) Closes #21 --- proposals/memory64/Overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 3baf04d31..f1ed0ce56 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -282,8 +282,8 @@ have to support 32-bit memory addresses in their ABI. | 0x03 n:u32 m:u32 ⇒ i32, {min n, max m}, 1 ;; from threads proposal | 0x04 n:u64 ⇒ i64, {min n, max ϵ}, 0 | 0x05 n:u64 m:u64 ⇒ i64, {min n, max m}, 0 - | 0x06 n:u32 ⇒ i64, {min n, max ϵ}, 1 ;; from threads proposal - | 0x07 n:u32 m:u32 ⇒ i64, {min n, max m}, 1 ;; from threads proposal + | 0x06 n:u64 ⇒ i64, {min n, max ϵ}, 1 ;; from threads proposal + | 0x07 n:u64 m:u64 ⇒ i64, {min n, max m}, 1 ;; from threads proposal ``` * The [memory type][binary memtype] structure is extended to use this limits From 70f8687ad1791ab925044c45f47aef5e3ea74fc9 Mon Sep 17 00:00:00 2001 From: Zhi An Ng Date: Mon, 5 Jun 2023 13:33:55 -0700 Subject: [PATCH 119/230] Add more allowed return values for relaxed trunc unsigned --- document/core/exec/numerics.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index ba9171a97..b16fdad59 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2121,19 +2121,19 @@ Relaxed swizzle lane is deterministic if the signed interpretation of the index Relaxed unsigned truncation converts floating point numbers to integers. The result for NaN's and out-of-range values is host-dependent. -* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`2^N-1`. +* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`2^N-1` or :math:`2^N-2` or :math:`2^(N-1)`. * :math:`\EXPROFDET` Else if :math:`\trunc(z)` is positive and less than :math:`2^N`, return :math:`\truncu_{M,N}(z)`. -* :math:`\EXPROFDET` Else return either :math:`\truncsatu_{M,N}(z)` or :math:`2^N-1`. +* :math:`\EXPROFDET` Else return either :math:`\truncsatu_{M,N}(z)` or :math:`2^N-1` or :math:`2^N-2` or :math:`2^(N-1)`. * Return :math:`\truncsatu_{M,N}(z)`. .. math:: \begin{array}{@{}llcll} - \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1 ] \\ + \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1, 2^{N}-2, 2^{N-1}] \\ \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ - \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1 ] & (\otherwise) \\ + \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1, 2^{N}-2, 2^{N-1}] & (\otherwise) \\ & \relaxedtrunc^u_{M,N}(z) &=& \truncsatu_{M,N}(z) & \\ \end{array} From 7cfa8949c712750f4c967c39dc031ba905bbef73 Mon Sep 17 00:00:00 2001 From: Arthur Islamov Date: Fri, 4 Aug 2023 22:07:06 +0400 Subject: [PATCH 120/230] WebAssembly.Memory "index: u32/u64" constructor parameter (#39) --- document/js-api/index.bs | 9 ++++++++- test/js-api/memory/assertions.js | 7 ++++++- test/js-api/memory/constructor.any.js | 25 +++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 91fc50985..7c7a4323d 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -607,9 +607,15 @@ interface Instance {

Memories

+enum MemoryIndexType {
+  "u32",
+  "u64",
+};
+
 dictionary MemoryDescriptor {
   required [EnforceRange] unsigned long initial;
   [EnforceRange] unsigned long maximum;
+  MemoryIndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=(Window,Worker,Worklet)]
@@ -662,7 +668,8 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
     1. Let |initial| be |descriptor|["initial"].
     1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty.
     1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception.
-    1. Let |memtype| be { min |initial|, max |maximum| }.
+    1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "u32".
+    1. Let |memtype| be { min |initial|, max |maximum|, index |index| }.
     1. Let |store| be the [=surrounding agent=]'s [=associated store=].
     1. Let (|store|, |memaddr|) be [=mem_alloc=](|store|, |memtype|). If allocation fails, throw a {{RangeError}} exception.
     1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
diff --git a/test/js-api/memory/assertions.js b/test/js-api/memory/assertions.js
index b539513ad..6a2884975 100644
--- a/test/js-api/memory/assertions.js
+++ b/test/js-api/memory/assertions.js
@@ -27,7 +27,7 @@ function assert_ArrayBuffer(actual, { size=0, shared=false, detached=false }, me
   assert_equals(Object.isExtensible(actual), !shared, "buffer extensibility");
 }
 
-function assert_Memory(memory, { size=0, shared=false }) {
+function assert_Memory(memory, { size=0, shared=false, index="u32" }) {
   assert_equals(Object.getPrototypeOf(memory), WebAssembly.Memory.prototype,
                 "prototype");
   assert_true(Object.isExtensible(memory), "extensible");
@@ -35,4 +35,9 @@ function assert_Memory(memory, { size=0, shared=false }) {
   // https://github.com/WebAssembly/spec/issues/840
   assert_equals(memory.buffer, memory.buffer, "buffer should be idempotent");
   assert_ArrayBuffer(memory.buffer, { size, shared });
+
+  // this depends on js-types proposal implementation
+  if (typeof memory.type == "function") {
+    assert_equals(memory.type().index, index, "memory index");
+  }
 }
diff --git a/test/js-api/memory/constructor.any.js b/test/js-api/memory/constructor.any.js
index 6524c8acc..d1c9bf7ad 100644
--- a/test/js-api/memory/constructor.any.js
+++ b/test/js-api/memory/constructor.any.js
@@ -72,6 +72,9 @@ test(() => {
       assert_unreached(`Should not call [[HasProperty]] with ${x}`);
     },
     get(o, x) {
+      if (x === "index") {
+        return "u32";
+      }
       return 0;
     },
   });
@@ -128,3 +131,25 @@ test(() => {
   const memory = new WebAssembly.Memory(argument, {});
   assert_Memory(memory, { "size": 0 });
 }, "Stray argument");
+
+test(() => {
+  const argument = { "initial": 1 };
+  const memory = new WebAssembly.Memory(argument);
+  assert_Memory(memory, { "size": 1, "index": "u32" });
+}, "Memory with index parameter omitted");
+
+test(() => {
+  const argument = { "initial": 1, "index": "u32" };
+  const memory = new WebAssembly.Memory(argument);
+  assert_Memory(memory, { "size": 1, "index": "u32" });
+}, "Memory with u32 index constructor");
+
+test(() => {
+  const argument = { "initial": 1, "index": "u64" };
+  const memory = new WebAssembly.Memory(argument);
+  assert_Memory(memory, { "size": 1, "index": "u64" });
+}, "Memory with u64 index constructor");
+
+test(() => {
+  assert_throws_js(TypeError, () => new WebAssembly.Memory({ "initial": 1, "index": "none" }));
+}, "Unknown memory index");

From d879d67b2b779d87490b75cc9880479c1ad62c8d Mon Sep 17 00:00:00 2001
From: Zhi An Ng 
Date: Fri, 30 Jun 2023 13:45:55 +0800
Subject: [PATCH 121/230] Document that "either" comes from threads proposal

---
 test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast | 2 ++
 test/core/relaxed-simd/i32x4_relaxed_trunc.wast     | 1 +
 test/core/relaxed-simd/i8x16_relaxed_swizzle.wast   | 1 +
 test/core/relaxed-simd/relaxed_dot_product.wast     | 1 +
 test/core/relaxed-simd/relaxed_laneselect.wast      | 1 +
 test/core/relaxed-simd/relaxed_madd_nmadd.wast      | 1 +
 test/core/relaxed-simd/relaxed_min_max.wast         | 1 +
 7 files changed, 8 insertions(+)

diff --git a/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast
index 265d99160..00f901cbc 100644
--- a/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast
+++ b/test/core/relaxed-simd/i16x8_relaxed_q15mulr_s.wast
@@ -1,4 +1,6 @@
 ;; Tests for i16x8.relaxed_q15mulr_s.
+;; `either` comes from https://github.com/WebAssembly/threads.
+
 (module
     (func (export "i16x8.relaxed_q15mulr_s") (param v128 v128) (result v128) (i16x8.relaxed_q15mulr_s (local.get 0) (local.get 1)))
 
diff --git a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast
index 889542c6a..cca3ecb95 100644
--- a/test/core/relaxed-simd/i32x4_relaxed_trunc.wast
+++ b/test/core/relaxed-simd/i32x4_relaxed_trunc.wast
@@ -1,4 +1,5 @@
 ;; Tests for i32x4.relaxed_trunc_f32x4_s, i32x4.relaxed_trunc_f32x4_u, i32x4.relaxed_trunc_f64x2_s_zero, and i32x4.relaxed_trunc_f64x2_u_zero.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "i32x4.relaxed_trunc_f32x4_s") (param v128) (result v128) (i32x4.relaxed_trunc_f32x4_s (local.get 0)))
diff --git a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast
index 1b20668d3..f1bcb4552 100644
--- a/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast
+++ b/test/core/relaxed-simd/i8x16_relaxed_swizzle.wast
@@ -1,4 +1,5 @@
 ;; Tests for relaxed i8x16 swizzle.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "i8x16.relaxed_swizzle") (param v128 v128) (result v128) (i8x16.relaxed_swizzle (local.get 0) (local.get 1)))
diff --git a/test/core/relaxed-simd/relaxed_dot_product.wast b/test/core/relaxed-simd/relaxed_dot_product.wast
index 41dee0afc..48714b87b 100644
--- a/test/core/relaxed-simd/relaxed_dot_product.wast
+++ b/test/core/relaxed-simd/relaxed_dot_product.wast
@@ -1,4 +1,5 @@
 ;; Tests for relaxed dot products.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "i16x8.relaxed_dot_i8x16_i7x16_s") (param v128 v128) (result v128) (i16x8.relaxed_dot_i8x16_i7x16_s (local.get 0) (local.get 1)))
diff --git a/test/core/relaxed-simd/relaxed_laneselect.wast b/test/core/relaxed-simd/relaxed_laneselect.wast
index 4ea6eb818..c43acb5e7 100644
--- a/test/core/relaxed-simd/relaxed_laneselect.wast
+++ b/test/core/relaxed-simd/relaxed_laneselect.wast
@@ -1,4 +1,5 @@
 ;; Tests for i8x16.relaxed_laneselect, i16x8.relaxed_laneselect, i32x4.relaxed_laneselect, and i64x2.relaxed_laneselect.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "i8x16.relaxed_laneselect") (param v128 v128 v128) (result v128) (i8x16.relaxed_laneselect (local.get 0) (local.get 1) (local.get 2)))
diff --git a/test/core/relaxed-simd/relaxed_madd_nmadd.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast
index d3f76f810..40ce0ed3e 100644
--- a/test/core/relaxed-simd/relaxed_madd_nmadd.wast
+++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast
@@ -1,4 +1,5 @@
 ;; Tests for f32x4.relaxed_madd, f32x4.relaxed_nmadd, f64x2.relaxed_madd, and f64x2.relaxed_nmadd.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "f32x4.relaxed_madd") (param v128 v128 v128) (result v128) (f32x4.relaxed_madd (local.get 0) (local.get 1) (local.get 2)))
diff --git a/test/core/relaxed-simd/relaxed_min_max.wast b/test/core/relaxed-simd/relaxed_min_max.wast
index d8a04ba4d..ac3ebb07c 100644
--- a/test/core/relaxed-simd/relaxed_min_max.wast
+++ b/test/core/relaxed-simd/relaxed_min_max.wast
@@ -1,4 +1,5 @@
 ;; Tests for f32x4.min, f32x4.max, f64x2.min, and f64x2.max.
+;; `either` comes from https://github.com/WebAssembly/threads.
 
 (module
     (func (export "f32x4.relaxed_min") (param v128 v128) (result v128) (f32x4.relaxed_min (local.get 0) (local.get 1)))

From f7e861c4ed1ca862edfbcd4c1ab4b85112b63c0d Mon Sep 17 00:00:00 2001
From: Zhi An Ng 
Date: Mon, 5 Jun 2023 17:01:08 -0700
Subject: [PATCH 122/230] Fix relaxed laneselect to allow looking at top bit of
 byte

This allows using pblendvb for i16x8 lane select. See #125.
---
 document/core/exec/numerics.rst | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst
index b16fdad59..d48f480a7 100644
--- a/document/core/exec/numerics.rst
+++ b/document/core/exec/numerics.rst
@@ -2168,25 +2168,33 @@ The result for NaN's and out-of-range values is host-dependent.
 :math:`\relaxedlane_N(i_1, i_2, i_3)`
 .....................................
 
-* If :math:`i_3` is :math:`2^N - 1`, return :math:`i_1`.
+* :math:`\EXPROFDET` If :math:`i_3` is :math:`2^N - 1`, return :math:`i_1`.
 
-* Else if :math:`i_3` is :math:`0`, return :math:`i_2`.
+* :math:`\EXPROFDET` Else if :math:`i_3` is :math:`0`, return :math:`i_2`.
 
-* :math:`\EXPROFDET` Else if :math:`\signed_n(i_3)` is less than :math:`0`, return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_1`.
+* :math:`\EXPROFDET` Otherwise return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_1` or :math:`i_2` or :math:`\F{top\_bit\_byteselect_N}(i_1, i_2, i_3)`.
 
-* :math:`\EXPROFDET` Otherwise return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_2`.
-
-* Otherwise return :math:`\ibitselect_n(i_1, i_2, i_3)`.
+* Return :math:`\ibitselect_n(i_1, i_2, i_3)`.
 
 .. math::
    \begin{array}{@{}llcll}
-   & \relaxedlane_N(i_1, i_2, 2^N-1) &=& i_1 \\
-   & \relaxedlane_N(i_1, i_2, 0) &=& i_2 \\
-   \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_1 ] & (\iff \signed_N(i_3) < 0) \\
-   \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2 ] & (\otherwise) \\
+   \EXPROFDET & \relaxedlane_N(i_1, i_2, 2^N-1) &=& i_1 \\
+   \EXPROFDET & \relaxedlane_N(i_1, i_2, 0) &=& i_2 \\
+   \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2, i_3, \\
+    & & & \qquad \F{top\_bit\_byteselect}(i_1, i_2, i_3)] & (\otherwise) \\
    & \relaxedlane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\
    \end{array}
 
+where:
+
+.. math::
+   \begin{array}{@{}llcll}
+   & \F{top\_bit\_byteselect}_N(i_1, i_2, i_3) &=& tbb_0 ... tbb_{N/8 - 1} \\
+   & \F{tbb_j} &=& \F{byteselect}(\bytes_8(i_1)[j], \bytes_8(i_2)[j], \bytes_8(i_3)[j]) \\
+   & \F{byteselect}(a, b, 0~c^7) &=& a \\
+   & \F{byteselect}(a, b, c) &=& b \\
+   \end{array}
+
 
 .. _op-relaxed_lane_select:
 
@@ -2195,7 +2203,8 @@ The result for NaN's and out-of-range values is host-dependent.
 
 Relaxed lane selection is deterministic when all bits are set or unset in the
 mask. Otherwise depending on the host, either only the top bit is examined, or
-all bits are examined (i.e. it becomes a bit select).
+all bits are examined (i.e. it becomes a bit select), or the top bit of each
+byte in the lane is examined.
 
 * Return :math:`rll_0 \dots rll_{n-1}` where :math:`rll_i = \relaxedlane_B(a^n[i], b^n[i], c^n[i])`.
 

From cd9c447623cc80f708023426b3fda85194602e11 Mon Sep 17 00:00:00 2001
From: Zhi An Ng 
Date: Mon, 26 Jun 2023 02:52:39 +0000
Subject: [PATCH 123/230] Add special test case for i16x8.relaxed_laneselect

---
 test/core/relaxed-simd/relaxed_laneselect.wast | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/test/core/relaxed-simd/relaxed_laneselect.wast b/test/core/relaxed-simd/relaxed_laneselect.wast
index c43acb5e7..10913816b 100644
--- a/test/core/relaxed-simd/relaxed_laneselect.wast
+++ b/test/core/relaxed-simd/relaxed_laneselect.wast
@@ -39,6 +39,16 @@
                (either (v128.const i16x8 0      9 0x1278 0x5634 12 13 14 15)
                        (v128.const i16x8 0      9 0x1234 0x5678 12 13 14 15)))
 
+;; special case for i16x8 to allow pblendvb
+(assert_return (invoke "i16x8.relaxed_laneselect"
+                       (v128.const i16x8 0      1 0x1234 0x1234 4 5 6 7)
+                       (v128.const i16x8 8      9 0x5678 0x5678 12 13 14 15)
+                       (v128.const i16x8 0xffff 0 0xff00 0x0080 0 0 0 0))  ;; 0x0080 is the special case
+               (either (v128.const i16x8 0      9 0x1278 0x5678 12 13 14 15)  ;; bitselect
+                       (v128.const i16x8 0      9 0x1234 0x5678 12 13 14 15)  ;; top bit of i16 lane examined
+                       (v128.const i16x8 0      9 0x1278 0x5634 12 13 14 15)  ;; top bit of each byte
+                       ))
+
 (assert_return (invoke "i32x4.relaxed_laneselect"
                        (v128.const i32x4 0          1 0x12341234 0x12341234)
                        (v128.const i32x4 4          5 0x56785678 0x56785678)

From ca328fc171b7e47c3f02071ffcc67268e96eb703 Mon Sep 17 00:00:00 2001
From: Arthur Islamov 
Date: Fri, 8 Sep 2023 03:08:18 +0400
Subject: [PATCH 124/230] Changed u32/u64 to i32/i64 (#41)

---
 document/js-api/index.bs              |  6 +++---
 test/js-api/memory/constructor.any.js | 16 ++++++++--------
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/document/js-api/index.bs b/document/js-api/index.bs
index 7c7a4323d..405b7fcac 100644
--- a/document/js-api/index.bs
+++ b/document/js-api/index.bs
@@ -608,8 +608,8 @@ interface Instance {
 
 
 enum MemoryIndexType {
-  "u32",
-  "u64",
+  "i32",
+  "i64",
 };
 
 dictionary MemoryDescriptor {
@@ -668,7 +668,7 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
     1. Let |initial| be |descriptor|["initial"].
     1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty.
     1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception.
-    1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "u32".
+    1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "i32".
     1. Let |memtype| be { min |initial|, max |maximum|, index |index| }.
     1. Let |store| be the [=surrounding agent=]'s [=associated store=].
     1. Let (|store|, |memaddr|) be [=mem_alloc=](|store|, |memtype|). If allocation fails, throw a {{RangeError}} exception.
diff --git a/test/js-api/memory/constructor.any.js b/test/js-api/memory/constructor.any.js
index d1c9bf7ad..6bc0d4fcd 100644
--- a/test/js-api/memory/constructor.any.js
+++ b/test/js-api/memory/constructor.any.js
@@ -73,7 +73,7 @@ test(() => {
     },
     get(o, x) {
       if (x === "index") {
-        return "u32";
+        return "i32";
       }
       return 0;
     },
@@ -135,20 +135,20 @@ test(() => {
 test(() => {
   const argument = { "initial": 1 };
   const memory = new WebAssembly.Memory(argument);
-  assert_Memory(memory, { "size": 1, "index": "u32" });
+  assert_Memory(memory, { "size": 1, "index": "i32" });
 }, "Memory with index parameter omitted");
 
 test(() => {
-  const argument = { "initial": 1, "index": "u32" };
+  const argument = { "initial": 1, "index": "i32" };
   const memory = new WebAssembly.Memory(argument);
-  assert_Memory(memory, { "size": 1, "index": "u32" });
-}, "Memory with u32 index constructor");
+  assert_Memory(memory, { "size": 1, "index": "i32" });
+}, "Memory with i32 index constructor");
 
 test(() => {
-  const argument = { "initial": 1, "index": "u64" };
+  const argument = { "initial": 1, "index": "i64" };
   const memory = new WebAssembly.Memory(argument);
-  assert_Memory(memory, { "size": 1, "index": "u64" });
-}, "Memory with u64 index constructor");
+  assert_Memory(memory, { "size": 1, "index": "i64" });
+}, "Memory with i64 index constructor");
 
 test(() => {
   assert_throws_js(TypeError, () => new WebAssembly.Memory({ "initial": 1, "index": "none" }));

From 22257c57ba60f59d2b81a267635c5eba28719c0e Mon Sep 17 00:00:00 2001
From: Thibaud Michaud 
Date: Tue, 3 Oct 2023 10:24:55 +0200
Subject: [PATCH 125/230] Fix relaxed trunc pseudocode in Overview

---
 proposals/relaxed-simd/Overview.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/proposals/relaxed-simd/Overview.md b/proposals/relaxed-simd/Overview.md
index 1c627e7b8..8fe79bfec 100644
--- a/proposals/relaxed-simd/Overview.md
+++ b/proposals/relaxed-simd/Overview.md
@@ -115,6 +115,7 @@ def relaxed_i32x4_trunc_f32x4_s(a : f32x4) -> i32x4:
     for i in range(4):
       if isnan(a[i]):
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MIN)
+        continue
       r = truncate(a[i])
       if r < INT32_MIN:
         result[i] = INT32_MIN
@@ -128,6 +129,7 @@ def relaxed_i32x4_trunc_f32x4_u(a : f32x4) -> i32x4:
     for i in range(4):
       if isnan(a[i]):
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX)
+        continue
       r = truncate(a[i])
       if r < UINT32_MIN:
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(UINT32_MIN, UINT32_MAX)
@@ -141,6 +143,7 @@ def relaxed_i32x4_trunc_f64x2_zero_s(a : f64x2) -> i32x4:
     for i in range(2):
       if isnan(a[i]):
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, INT32_MIN)
+        continue
       r = truncate(a[i])
       if r < INT32_MIN:
         result[i] = INT32_MIN
@@ -154,6 +157,7 @@ def relaxed_i32x4_trunc_f64x2_zero_u(a : f64x2) -> i32x4:
     for i in range(2):
       if isnan(a[i]):
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(0, UINT32_MAX)
+        continue
       r = truncate(a[i])
       if r < UINT32_MIN:
         result[i] = IMPLEMENTATION_DEFINED_ONE_OF(UINT32_MIN, UINT32_MAX)

From 3165d6036e3e53d754d892ce5385b3418007ff48 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Tue, 20 Feb 2024 10:18:51 -0800
Subject: [PATCH 126/230] Fix broken build after upstream merge

---
 interpreter/text/parser.mly | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly
index 1a08e71e7..07ce0472b 100644
--- a/interpreter/text/parser.mly
+++ b/interpreter/text/parser.mly
@@ -202,16 +202,16 @@ let inline_type_explicit (c : context) x ft loc =
     error (at loc) "inline function type does not match explicit type";
   x
 
-let index_type_of_num_type t at =
+let index_type_of_num_type t loc =
   match t with
   | I32Type -> I32IndexType
   | I64Type -> I64IndexType
-  | _ -> error at "illegal memory index type"
+  | _ -> error (at loc) "illegal memory index type"
 
-let index_type_of_value_type t at =
+let index_type_of_value_type t loc =
   match t with
-  | NumType t -> index_type_of_num_type t at
-  | _ -> error at "illegal memory index type"
+  | NumType t -> index_type_of_num_type t loc
+  | _ -> error (at loc) "illegal memory index type"
 
 let memory_data init it c x at =
   let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in
@@ -316,7 +316,7 @@ table_type :
   | limits32 ref_type { TableType ($1, $2) }
 
 memory_type :
-  | value_type limits64 { MemoryType ($2, index_type_of_value_type $1 (at ())) }
+  | value_type limits64 { MemoryType ($2, index_type_of_value_type $1 $sloc) }
   | limits64 { MemoryType ($1, I32IndexType) }
 
 limits32 :
@@ -860,7 +860,7 @@ memory_fields :
   | LPAR DATA string_list RPAR  /* Sugar */
     { memory_data $3 I32IndexType }
   | value_type LPAR DATA string_list RPAR  /* Sugar */
-    { memory_data $4 (index_type_of_value_type $1 (at ())) }
+    { memory_data $4 (index_type_of_value_type $1 $sloc) }
 
 global :
   | LPAR GLOBAL bind_var_opt global_fields RPAR

From 4347702cc2c4009293e6cf9c84cb653e1e6af708 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Tue, 20 Feb 2024 18:18:16 -0800
Subject: [PATCH 127/230] [ci] Add --experimental-wasm-memory64 to node flags
 (#49)

This fixes the current CI failures.
---
 .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 0236c4939..74281c578 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 JS="node --experimental-wasm-memory64"  ci

From b52270d6f93291d2bf0ca9820d904aa7ed4dc5f8 Mon Sep 17 00:00:00 2001
From: Andreas Rossberg 
Date: Thu, 22 Feb 2024 09:10:23 +0100
Subject: [PATCH 128/230] Update Overview.md

---
 proposals/memory64/Overview.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index f1ed0ce56..64539a4aa 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -49,14 +49,14 @@ have to support 32-bit memory addresses in their ABI.
   - `idxtype ::= i32 | i64`
 
 * The [limits][syntax limits] structure is parameterised by index syntax
-  - `limits_iv ::= {min iv, max iv?}`
+  - `limits(iv) ::= {min iv, max iv?}`
   The parameter is omitted where it is immaterial.
 
 * The [table type][syntax tabletype] continues to use i32 indices
-  - `tabletype ::= limits_i32 elemtype`
+  - `tabletype ::= limits(i32) elemtype`
 
 * The [memory type][syntax memtype] structure is extended to have an index type
-  - `memtype ::= idxtype limits_iv  (iff idxtype = type(iv))`
+  - `memtype ::= idxtype limits(type(iv))`
   - where
     ```
     type(\i32) = \I32

From bcf4834fe72f1227eb2f1ec46c107f16fac94d9e Mon Sep 17 00:00:00 2001
From: Alex Crichton 
Date: Thu, 22 Feb 2024 13:32:25 -0600
Subject: [PATCH 129/230] Fix some function lengths in the test suite (#45)

These tests appear adapted with memory64 with overlong LEB-encodings but
when merged with the upstream spec test suite the function length is too
short. By ensuring the function length is correct it ensures that the
only error in the module is the overlong LEB encoding.
---
 test/core/binary.wast | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/test/core/binary.wast b/test/core/binary.wast
index da550d716..fb2c6c4dc 100644
--- a/test/core/binary.wast
+++ b/test/core/binary.wast
@@ -487,7 +487,7 @@
     "\05\03\01\00\01"          ;; Memory section
     "\0a\17\01"                ;; Code section
     ;; function 0
-    "\0f\01\01"                ;; local type count
+    "\15\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\28"                      ;; i32.load
@@ -544,7 +544,7 @@
     "\05\03\01\00\01"          ;; Memory section
     "\0a\16\01"                ;; Code section
     ;; function 0
-    "\10\01\01"                ;; local type count
+    "\14\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\41\03"                   ;; i32.const 3
@@ -624,7 +624,7 @@
     "\05\03\01\00\01"          ;; Memory section
     "\0a\15\01"                ;; Code section
     ;; function 0
-    "\0e\01\01"                ;; local type count
+    "\13\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\28"                      ;; i32.load
@@ -643,7 +643,7 @@
     "\05\03\01\00\01"          ;; Memory section
     "\0a\15\01"                ;; Code section
     ;; function 0
-    "\0e\01\01"                ;; local type count
+    "\13\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\28"                      ;; i32.load
@@ -737,7 +737,7 @@
     "\05\03\01\00\01"          ;; Memory section
     "\0a\16\01"                ;; Code section
     ;; function 0
-    "\0f\01\01"                ;; local type count
+    "\14\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\41\03"                   ;; i32.const 3
@@ -757,7 +757,7 @@
     "\0a\16\01"                ;; Code section
 
     ;; function 0
-    "\0f\01\01"                ;; local type count
+    "\14\01\01"                ;; local type count
     "\7f"                      ;; i32
     "\41\00"                   ;; i32.const 0
     "\41\03"                   ;; i32.const 3

From d5969ed1bb2751aed9cf6536d78718604b55a642 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Wed, 24 Apr 2024 14:46:44 -0700
Subject: [PATCH 130/230] Update overview to include table64 (#52)

See #51
---
 proposals/memory64/Overview.md | 78 +++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 7 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index 64539a4aa..ff4bfcfe5 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -6,6 +6,10 @@ This page describes a proposal to support linear memory of sizes larger than
 232 bits. It provides no new instructions, but instead extends the
 currently existing instructions to allow 64-bit indexes.
 
+In addition, in order to support source languages with 64-bit pointer width,
+this proposal also extends tables to allow 64-bit indexes.  This addition was
+made during phase 3 of the proposal and we refer to this addition as "table64".
+
 ### Implementation Status
 
 - spec interpreter: Done
@@ -16,6 +20,16 @@ currently existing instructions to allow 64-bit indexes.
 - binaryen: [Done](https://github.com/WebAssembly/binaryen/pull/3202)
 - emscripten: [Done](https://github.com/emscripten-core/emscripten/pull/17803)
 
+### Implementation Status (table64)
+
+- spec interpreter: -
+- v8/chrome: -
+- Firefox: -
+- Safari: -
+- wabt: -
+- binaryen: -
+- emscripten: -
+
 ## Motivation
 
 [WebAssembly linear memory objects][memory object] have sizes measured in
@@ -52,11 +66,10 @@ have to support 32-bit memory addresses in their ABI.
   - `limits(iv) ::= {min iv, max iv?}`
   The parameter is omitted where it is immaterial.
 
-* The [table type][syntax tabletype] continues to use i32 indices
-  - `tabletype ::= limits(i32) elemtype`
-
-* The [memory type][syntax memtype] structure is extended to have an index type
+* The [memory type][syntax memtype] and [table type][syntax tabletype]
+  structures are extended to include an index type
   - `memtype ::= idxtype limits(type(iv))`
+  - `tabletype ::= idxtype limits(type(iv)) reftype`
   - where
     ```
     type(\i32) = \I32
@@ -66,7 +79,6 @@ have to support 32-bit memory addresses in their ABI.
 * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset
   - `memarg ::= {offset u64, align u32}`
 
-
 ### Validation
 
 * Index types are classified by their value range:
@@ -79,14 +91,15 @@ have to support 32-bit memory addresses in their ABI.
     ⊦ i64 : 2**48
     ```
 
-* [Memory page limits][valid limits] are classified by their index types
+* [Memory page limits][valid limits] and [Table entry limits][valid limits] are
+  classified by their respective index types
   - ```
     ⊦ it : k    n <= k    (m <= k)?    (n < m)?
     -------------------------------------------
     ⊦ { min n, max m? } : it
     ```
 
-* Memory types are validated accordingly:
+* Memory and Table types are validated accordingly:
   - ```
     ⊦ limits : it
     --------------
@@ -151,6 +164,56 @@ have to support 32-bit memory addresses in their ABI.
       ```
   - (and similar for memory instructions from other proposals)
 
+* [Table instructions][valid tableinst] are changed to use the index type
+  - call_indirect x y
+    - ```
+        C.tables[x] = it limits t  C.types[y] = [t1*] → [t2*]
+      -------------------------------------------------------
+      C ⊦ call_indirect x y : [t1* it] → [t2*]
+      ```
+  - table.get x
+    - ```
+        C.tables[x] = it limits t
+      ------------------------------
+      C ⊦ table.get x : [it] → [t]
+      ```
+  - table.set x
+    - ```
+        C.tables[x] = it limits t
+      ------------------------------
+      C ⊦ table.set x : [it] → [t]
+      ```
+  - table.size x
+    - ```
+        C.tables[x] = it limits t
+      ------------------------------
+      C ⊦ table.size x : [] → [it]
+      ```
+  - table.grow x
+    - ```
+        C.tables[x] = it limits t
+      -------------------------------
+      C ⊦ table.grow x : [it] → [it]
+      ```
+  - table.fill x
+    - ```
+        C.tables[x] = it limits t
+      ----------------------------------
+      C ⊦ tables.fill x : [it t it] → []
+      ```
+  - table.copy x y
+    - ```
+          C.tables[x] = it limits t
+      ----------------------------------
+      C ⊦ table.copy x : [it it it] → []
+      ```
+  - table.init x y
+    - ```
+          C.tables[x] = it limits t   C.elems[y] = ok
+      -----------------------------------------------
+          C ⊦ table.init x y : [it i32 i32] → []
+      ```
+
 * The [SIMD proposal][simd] extends `t.load memarg` and `t.store memarg`
   above such that `t` may now also be `v128`, which accesses a 16-byte quantity
   in memory that is also 16-byte aligned.
@@ -329,6 +392,7 @@ have to support 32-bit memory addresses in their ABI.
 [syntax memarg]: https://webassembly.github.io/spec/core/syntax/instructions.html#syntax-memarg
 [valid limits]: https://webassembly.github.io/spec/core/valid/types.html#limits
 [valid meminst]: https://webassembly.github.io/spec/core/valid/instructions.html#memory-instructions
+[valid tableinst]: https://webassembly.github.io/spec/core/valid/instructions.html#table-instructions
 [valid data]: https://webassembly.github.io/spec/core/valid/modules.html#data-segments
 [exec mem]: https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances
 [exec meminst]: https://webassembly.github.io/spec/core/exec/instructions.html#memory-instructions

From 02efcadef7cc4809ab1f9055dc0cbc6ebf548263 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Tue, 30 Apr 2024 12:17:45 -0700
Subject: [PATCH 131/230] Remove tabs from memory64.wast

See #1745
---
 test/core/memory64.wast | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/test/core/memory64.wast b/test/core/memory64.wast
index f991cc5d9..c324e3b19 100644
--- a/test/core/memory64.wast
+++ b/test/core/memory64.wast
@@ -1,4 +1,5 @@
 ;; Test memory section structure
+;; Largely duplicated from memory, but with all memories using a 64-bit index.
 
 (module (memory i64 0 0))
 (module (memory i64 0 1))
@@ -97,44 +98,44 @@
 
   ;; Sign and zero extending memory loads
   (func (export "i32_load8_s") (param $i i32) (result i32)
-	(i32.store8 (i64.const 8) (local.get $i))
-	(i32.load8_s (i64.const 8))
+    (i32.store8 (i64.const 8) (local.get $i))
+    (i32.load8_s (i64.const 8))
   )
   (func (export "i32_load8_u") (param $i i32) (result i32)
-	(i32.store8 (i64.const 8) (local.get $i))
-	(i32.load8_u (i64.const 8))
+    (i32.store8 (i64.const 8) (local.get $i))
+    (i32.load8_u (i64.const 8))
   )
   (func (export "i32_load16_s") (param $i i32) (result i32)
-	(i32.store16 (i64.const 8) (local.get $i))
-	(i32.load16_s (i64.const 8))
+    (i32.store16 (i64.const 8) (local.get $i))
+    (i32.load16_s (i64.const 8))
   )
   (func (export "i32_load16_u") (param $i i32) (result i32)
-	(i32.store16 (i64.const 8) (local.get $i))
-	(i32.load16_u (i64.const 8))
+    (i32.store16 (i64.const 8) (local.get $i))
+    (i32.load16_u (i64.const 8))
   )
   (func (export "i64_load8_s") (param $i i64) (result i64)
-	(i64.store8 (i64.const 8) (local.get $i))
-	(i64.load8_s (i64.const 8))
+    (i64.store8 (i64.const 8) (local.get $i))
+    (i64.load8_s (i64.const 8))
   )
   (func (export "i64_load8_u") (param $i i64) (result i64)
-	(i64.store8 (i64.const 8) (local.get $i))
-	(i64.load8_u (i64.const 8))
+    (i64.store8 (i64.const 8) (local.get $i))
+    (i64.load8_u (i64.const 8))
   )
   (func (export "i64_load16_s") (param $i i64) (result i64)
-	(i64.store16 (i64.const 8) (local.get $i))
-	(i64.load16_s (i64.const 8))
+    (i64.store16 (i64.const 8) (local.get $i))
+    (i64.load16_s (i64.const 8))
   )
   (func (export "i64_load16_u") (param $i i64) (result i64)
-	(i64.store16 (i64.const 8) (local.get $i))
-	(i64.load16_u (i64.const 8))
+    (i64.store16 (i64.const 8) (local.get $i))
+    (i64.load16_u (i64.const 8))
   )
   (func (export "i64_load32_s") (param $i i64) (result i64)
-	(i64.store32 (i64.const 8) (local.get $i))
-	(i64.load32_s (i64.const 8))
+    (i64.store32 (i64.const 8) (local.get $i))
+    (i64.load32_s (i64.const 8))
   )
   (func (export "i64_load32_u") (param $i i64) (result i64)
-	(i64.store32 (i64.const 8) (local.get $i))
-	(i64.load32_u (i64.const 8))
+    (i64.store32 (i64.const 8) (local.get $i))
+    (i64.load32_u (i64.const 8))
   )
 )
 

From dc4d236b9d884a6dabf967f3867322c9240e9575 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Wed, 1 May 2024 09:00:59 -0700
Subject: [PATCH 132/230] Update interpreter and test suite for table64 (#53)

---
 .github/workflows/ci-interpreter.yml |   4 +-
 interpreter/binary/decode.ml         |   5 +-
 interpreter/binary/encode.ml         |   2 +-
 interpreter/exec/eval.ml             | 102 +++++++++++++++------------
 interpreter/host/spectest.ml         |   6 +-
 interpreter/runtime/elem.ml          |   6 +-
 interpreter/runtime/memory.ml        |   9 +--
 interpreter/runtime/memory.mli       |   3 +-
 interpreter/runtime/table.ml         |  51 +++++++++-----
 interpreter/runtime/table.mli        |   6 +-
 interpreter/syntax/types.ml          |  12 ++--
 interpreter/syntax/values.ml         |   5 ++
 interpreter/text/arrange.ml          |   6 +-
 interpreter/text/parser.mly          |  37 +++++-----
 interpreter/util/lib.ml              |  59 +++++++++++++---
 interpreter/util/lib.mli             |  22 ++++--
 interpreter/valid/valid.ml           |  38 +++++-----
 test/core/call_indirect.wast         |  10 +++
 test/core/table.wast                 |  42 ++++++++---
 test/core/table_get.wast             |   5 ++
 test/core/table_init.wast            |  41 ++++++++++-
 test/core/table_set.wast             |  10 +++
 22 files changed, 329 insertions(+), 152 deletions(-)

diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml
index f0fc5d342..866a8da70 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
-        run: cd interpreter && opam exec make JS="node --experimental-wasm-memory64"  ci
+        # Re-enable the JS tests once table64 is available under node
+        #run: cd interpreter && opam exec make JS="node --experimental-wasm-memory64"  ci
+        run: cd interpreter && opam exec make ci
diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml
index 03edd1c05..067fab8f3 100644
--- a/interpreter/binary/decode.ml
+++ b/interpreter/binary/decode.ml
@@ -190,9 +190,8 @@ let limits uN s =
 
 let table_type s =
   let t = ref_type s in
-  let lim, is64 = limits u32 s in
-  require (not is64) s (pos s - 1) "tables cannot have 64-bit indices";
-  TableType (lim, t)
+  let lim, is64 = limits u64 s in
+  TableType (lim, (if is64 then I64IndexType else I32IndexType), t)
 
 let memory_type s =
   let lim, is64 = limits u64 s in
diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml
index 83649a648..743b0c5d1 100644
--- a/interpreter/binary/encode.ml
+++ b/interpreter/binary/encode.ml
@@ -123,7 +123,7 @@ struct
     byte flags; vu min; opt vu max
 
   let table_type = function
-    | TableType (lim, t) -> ref_type t; limits u32 lim I32IndexType
+    | TableType (lim, it, t) -> ref_type t; limits u64 lim it
 
   let memory_type = function
     | MemoryType (lim, it) -> limits u64 lim it
diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml
index 2388448f2..6bb3ac5eb 100644
--- a/interpreter/exec/eval.ml
+++ b/interpreter/exec/eval.ml
@@ -93,13 +93,13 @@ let local (frame : frame) x = lookup "local" frame.locals x
 
 let any_ref inst x i at =
   try Table.load (table inst x) i with Table.Bounds ->
-    Trap.error at ("undefined element " ^ Int32.to_string i)
+    Trap.error at ("undefined element " ^ Int64.to_string i)
 
 let func_ref inst x i at =
   match any_ref inst x i at with
   | FuncRef f -> f
-  | NullRef _ -> Trap.error at ("uninitialized element " ^ Int32.to_string i)
-  | _ -> Crash.error at ("type mismatch for element " ^ Int32.to_string i)
+  | NullRef _ -> Trap.error at ("uninitialized element " ^ Int64.to_string i)
+  | _ -> Crash.error at ("type mismatch for element " ^ Int64.to_string i)
 
 let func_type_of = function
   | Func.AstFunc (t, inst, f) -> t
@@ -140,12 +140,12 @@ let data_oob frame x i n =
     (Data.size (data frame.inst x))
 
 let table_oob frame x i n =
-  I64.gt_u (I64.add (I64_convert.extend_i32_u i) (I64_convert.extend_i32_u n))
-    (I64_convert.extend_i32_u (Table.size (table frame.inst x)))
+  I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n))
+    (Table.size (table frame.inst x))
 
 let elem_oob frame x i n =
-  I64.gt_u (I64.add (I64_convert.extend_i32_u i) (I64_convert.extend_i32_u n))
-    (I64_convert.extend_i32_u (Elem.size (elem frame.inst x)))
+  I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n))
+    (Elem.size (elem frame.inst x))
 
 let inc_address i at =
   match i with
@@ -206,7 +206,8 @@ let rec step (c : config) : config =
       | Call x, vs ->
         vs, [Invoke (func frame.inst x) @@ e.at]
 
-      | CallIndirect (x, y), Num (I32 i) :: vs ->
+      | CallIndirect (x, y), Num n :: vs ->
+        let i = Table.index_of_num n in
         let func = func_ref frame.inst x i e.at in
         if type_ frame.inst y <> Func.type_of func then
           vs, [Trapping "indirect call type mismatch" @@ e.at]
@@ -241,85 +242,96 @@ let rec step (c : config) : config =
         with Global.NotMutable -> Crash.error e.at "write to immutable global"
            | Global.Type -> Crash.error e.at "type mismatch at global write")
 
-      | TableGet x, Num (I32 i) :: vs' ->
+      | TableGet x, Num n :: vs' ->
+        let i = Table.index_of_num n in
         (try Ref (Table.load (table frame.inst x) i) :: vs', []
         with exn -> vs', [Trapping (table_error e.at exn) @@ e.at])
 
-      | TableSet x, Ref r :: Num (I32 i) :: vs' ->
+      | TableSet x, Ref r :: Num n :: vs' ->
+        let i = Table.index_of_num n in
         (try Table.store (table frame.inst x) i r; vs', []
         with exn -> vs', [Trapping (table_error e.at exn) @@ e.at])
 
       | TableSize x, vs ->
-        Num (I32 (Table.size (table frame.inst x))) :: vs, []
+        let tab = table frame.inst x in
+        value_of_index (Table.index_type_of tab) (Table.size (table frame.inst x)) :: vs, []
 
-      | TableGrow x, Num (I32 delta) :: Ref r :: vs' ->
+      | TableGrow x, Num delta :: Ref r :: vs' ->
         let tab = table frame.inst x in
         let old_size = Table.size tab in
         let result =
-          try Table.grow tab delta r; old_size
-          with Table.SizeOverflow | Table.SizeLimit | Table.OutOfMemory -> -1l
-        in Num (I32 result) :: vs', []
+          try Table.grow tab (Table.index_of_num delta) r; old_size
+          with Table.SizeOverflow | Table.SizeLimit | Table.OutOfMemory -> -1L
+        in (value_of_index (Table.index_type_of tab) result) :: vs', []
 
-      | TableFill x, Num (I32 n) :: Ref r :: Num (I32 i) :: vs' ->
+      | TableFill x, Num n :: Ref r :: Num i :: vs' ->
+        let n_64 = Table.index_of_num n in
         if table_oob frame x i n then
           vs', [Trapping (table_error e.at Table.Bounds) @@ e.at]
-        else if n = 0l then
+        else if n_64 = 0L then
           vs', []
         else
-          let _ = assert (I32.lt_u i 0xffff_ffffl) in
+          let i_64 = Table.index_of_num i in
+          let _ = assert (I64.lt_u i_64 0xffff_ffff_ffff_ffffL) in
           vs', List.map (at e.at) [
-            Plain (Const (I32 i @@ e.at));
+            Plain (Const (I64 i_64 @@ e.at));
             Refer r;
             Plain (TableSet x);
-            Plain (Const (I32 (I32.add i 1l) @@ e.at));
+            Plain (Const (I64 (I64.add i_64 1L) @@ e.at));
             Refer r;
-            Plain (Const (I32 (I32.sub n 1l) @@ e.at));
+            Plain (Const (I64 (I64.sub n_64 1L) @@ e.at));
             Plain (TableFill x);
           ]
 
-      | TableCopy (x, y), Num (I32 n) :: Num (I32 s) :: Num (I32 d) :: vs' ->
+      | TableCopy (x, y), Num n :: Num s :: Num d :: vs' ->
+        let n_64 = Table.index_of_num n in
+        let s_64 = Table.index_of_num s in
+        let d_64 = Table.index_of_num d in
         if table_oob frame x d n || table_oob frame y s n then
           vs', [Trapping (table_error e.at Table.Bounds) @@ e.at]
-        else if n = 0l then
+        else if n_64 = 0L then
           vs', []
-        else if I32.le_u d s then
+        else if I64.le_u d_64 s_64 then
           vs', List.map (at e.at) [
-            Plain (Const (I32 d @@ e.at));
-            Plain (Const (I32 s @@ e.at));
+            Plain (Const (I64 d_64 @@ e.at));
+            Plain (Const (I64 s_64 @@ e.at));
             Plain (TableGet y);
             Plain (TableSet x);
-            Plain (Const (I32 (I32.add d 1l) @@ e.at));
-            Plain (Const (I32 (I32.add s 1l) @@ e.at));
-            Plain (Const (I32 (I32.sub n 1l) @@ e.at));
+            Plain (Const (I64 (I64.add d_64 1L) @@ e.at));
+            Plain (Const (I64 (I64.add s_64 1L) @@ e.at));
+            Plain (Const (I64 (I64.sub n_64 1L) @@ e.at));
             Plain (TableCopy (x, y));
           ]
         else (* d > s *)
-          let n' = I32.sub n 1l in
+          let n' = I64.sub n_64 1L in
           vs', List.map (at e.at) [
-            Plain (Const (I32 (I32.add d n') @@ e.at));
-            Plain (Const (I32 (I32.add s n') @@ e.at));
+            Plain (Const (I64 (I64.add d_64 n') @@ e.at));
+            Plain (Const (I64 (I64.add s_64 n') @@ e.at));
             Plain (TableGet y);
             Plain (TableSet x);
-            Plain (Const (I32 d @@ e.at));
-            Plain (Const (I32 s @@ e.at));
-            Plain (Const (I32 n' @@ e.at));
+            Plain (Const (I64 d_64 @@ e.at));
+            Plain (Const (I64 s_64 @@ e.at));
+            Plain (Const (I64 n' @@ e.at));
             Plain (TableCopy (x, y));
           ]
 
-      | TableInit (x, y), Num (I32 n) :: Num (I32 s) :: Num (I32 d) :: vs' ->
+      | TableInit (x, y), Num n :: Num s :: Num d :: vs' ->
+        let n_64 = Table.index_of_num n in
         if table_oob frame x d n || elem_oob frame y s n then
           vs', [Trapping (table_error e.at Table.Bounds) @@ e.at]
-        else if n = 0l then
+        else if n_64 = 0L then
           vs', []
         else
+          let d_64 = Table.index_of_num d in
+          let s_64 = Table.index_of_num s in
           let seg = elem frame.inst y in
           vs', List.map (at e.at) [
-            Plain (Const (I32 d @@ e.at));
-            Refer (Elem.load seg s);
+            Plain (Const (I64 d_64 @@ e.at));
+            Refer (Elem.load seg s_64);
             Plain (TableSet x);
-            Plain (Const (I32 (I32.add d 1l) @@ e.at));
-            Plain (Const (I32 (I32.add s 1l) @@ e.at));
-            Plain (Const (I32 (I32.sub n 1l) @@ e.at));
+            Plain (Const (I64 (I64.add d_64 1L) @@ e.at));
+            Plain (Const (I64 (I64.add s_64 1L) @@ e.at));
+            Plain (Const (I64 (I64.sub n_64 1L) @@ e.at));
             Plain (TableInit (x, y));
           ]
 
@@ -411,7 +423,7 @@ let rec step (c : config) : config =
       | MemorySize, vs ->
         let mem = memory frame.inst (0l @@ e.at) in
 
-        Memory.value_of_address (Memory.index_of mem) (Memory.size mem) :: vs, []
+        value_of_index (Memory.index_type_of mem) (Memory.size mem) :: vs, []
 
       | MemoryGrow, Num delta :: vs' ->
         let mem = memory frame.inst (0l @@ e.at) in
@@ -419,7 +431,7 @@ let rec step (c : config) : config =
         let result =
           try Memory.grow mem (Memory.address_of_num delta); old_size
           with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1L
-        in (Memory.value_of_address (Memory.index_of mem) result) :: vs', []
+        in (value_of_index (Memory.index_type_of mem) result) :: vs', []
 
       | MemoryFill, Num n :: Num k :: Num i :: vs' ->
         let n_64 = Memory.address_of_num n in
@@ -709,7 +721,7 @@ let create_func (inst : module_inst) (f : func) : func_inst =
 
 let create_table (inst : module_inst) (tab : table) : table_inst =
   let {ttype} = tab.it in
-  let TableType (_lim, t) = ttype in
+  let TableType (_lim, _it, t) = ttype in
   Table.alloc ttype (NullRef t)
 
 let create_memory (inst : module_inst) (mem : memory) : memory_inst =
diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml
index 28679d9e1..2555ec683 100644
--- a/interpreter/host/spectest.ml
+++ b/interpreter/host/spectest.ml
@@ -19,7 +19,10 @@ let global (GlobalType (t, _) as gt) =
   in Global.alloc gt v
 
 let table =
-  Table.alloc (TableType ({min = 10l; max = Some 20l}, FuncRefType))
+  Table.alloc (TableType ({min = 10L; max = Some 20L}, I32IndexType, FuncRefType))
+    (NullRef FuncRefType)
+let table64 =
+  Table.alloc (TableType ({min = 10L; max = Some 20L}, I64IndexType, FuncRefType))
     (NullRef FuncRefType)
 let memory = Memory.alloc (MemoryType ({min = 1L; max = Some 2L}, I32IndexType))
 let func f t = Func.alloc_host t (f t)
@@ -51,5 +54,6 @@ let lookup name t =
   | "global_f32", _ -> ExternGlobal (global (GlobalType (NumType F32Type, Immutable)))
   | "global_f64", _ -> ExternGlobal (global (GlobalType (NumType F64Type, Immutable)))
   | "table", _ -> ExternTable table
+  | "table64", _ -> ExternTable table64
   | "memory", _ -> ExternMemory memory
   | _ -> raise Not_found
diff --git a/interpreter/runtime/elem.ml b/interpreter/runtime/elem.ml
index 366ec6df0..816d532bc 100644
--- a/interpreter/runtime/elem.ml
+++ b/interpreter/runtime/elem.ml
@@ -4,10 +4,10 @@ type t = elem
 exception Bounds
 
 let alloc rs = ref rs
-let size seg = Lib.List32.length !seg
+let size seg = Lib.List64.length !seg
 
 let load seg i =
-  if i < 0l || i >= Lib.List32.length !seg then raise Bounds;
-  Lib.List32.nth !seg i
+  if i < 0L || i >= Lib.List64.length !seg then raise Bounds;
+  Lib.List64.nth !seg i
 
 let drop seg = seg := []
diff --git a/interpreter/runtime/memory.ml b/interpreter/runtime/memory.ml
index 4f13bdd7b..ef0a98289 100644
--- a/interpreter/runtime/memory.ml
+++ b/interpreter/runtime/memory.ml
@@ -47,14 +47,9 @@ let size mem =
 let type_of mem =
   mem.ty
 
-let index_of mem =
+let index_type_of mem =
   let (MemoryType (_, it)) = type_of mem in it
 
-let value_of_address it x =
-  match it with
-  | I64IndexType -> Num (I64 x)
-  | I32IndexType -> Num (I32 (Int64.to_int32 x))
-
 let address_of_num x =
   match x with
   | I64 i -> i
@@ -74,7 +69,7 @@ let grow mem delta =
   if I64.gt_u old_size new_size then raise SizeOverflow else
   let lim' = {lim with min = new_size} in
   if not (valid_limits lim') then raise SizeLimit else
-  let after = create new_size (index_of mem) in
+  let after = create new_size (index_type_of mem) in
   let dim = Array1_64.dim mem.content in
   Array1.blit (Array1_64.sub mem.content 0L dim) (Array1_64.sub after 0L dim);
   mem.ty <- MemoryType (lim', it);
diff --git a/interpreter/runtime/memory.mli b/interpreter/runtime/memory.mli
index 860316727..1bcaa3b87 100644
--- a/interpreter/runtime/memory.mli
+++ b/interpreter/runtime/memory.mli
@@ -19,10 +19,9 @@ val page_size : int64
 
 val alloc : memory_type -> memory (* raises Type, SizeOverflow, OutOfMemory *)
 val type_of : memory -> memory_type
-val index_of : memory -> index_type
+val index_type_of : memory -> index_type
 val size : memory -> size
 val bound : memory -> address
-val value_of_address : index_type -> address -> value
 val address_of_value : value -> address
 val address_of_num : num -> address
 val grow : memory -> size -> unit
diff --git a/interpreter/runtime/table.ml b/interpreter/runtime/table.ml
index e7fc317e8..ea532e49b 100644
--- a/interpreter/runtime/table.ml
+++ b/interpreter/runtime/table.ml
@@ -1,8 +1,8 @@
 open Types
 open Values
 
-type size = int32
-type index = int32
+type size = int64
+type index = int64
 type count = int32
 
 type table = {mutable ty : table_type; mutable content : ref_ array}
@@ -17,47 +17,62 @@ exception OutOfMemory
 let valid_limits {min; max} =
   match max with
   | None -> true
-  | Some m -> I32.le_u min m
+  | Some m -> I64.le_u min m
+
+let valid_index it i =
+  match it with
+  | I32IndexType -> I64.le_u i 0xffff_ffffL
+  | I64IndexType -> true
 
 let create size r =
-  try Lib.Array32.make size r
+  try Lib.Array64.make size r
   with Out_of_memory | Invalid_argument _ -> raise OutOfMemory
 
-let alloc (TableType (lim, _) as ty) r =
+let alloc (TableType (lim, it, _) as ty) r =
   if not (valid_limits lim) then raise Type;
   {ty; content = create lim.min r}
 
 let size tab =
-  Lib.Array32.length tab.content
+  Lib.Array64.length tab.content
 
 let type_of tab =
   tab.ty
 
+let index_type_of tab =
+  let (TableType (_, it, _)) = type_of tab in it
+
+let index_of_num x =
+  match x with
+  | I64 i -> i
+  | I32 i -> I64_convert.extend_i32_u i
+  | _ -> raise Type
+
 let grow tab delta r =
-  let TableType (lim, t) = tab.ty in
+  let TableType (lim, it, t) = tab.ty in
   assert (lim.min = size tab);
   let old_size = lim.min in
-  let new_size = Int32.add old_size delta in
-  if I32.gt_u old_size new_size then raise SizeOverflow else
+  let new_size = Int64.add old_size delta in
+  if I64.gt_u old_size new_size then raise SizeOverflow else
   let lim' = {lim with min = new_size} in
+  if not (valid_index it new_size) then raise SizeOverflow else
   if not (valid_limits lim') then raise SizeLimit else
   let after = create new_size r in
   Array.blit tab.content 0 after 0 (Array.length tab.content);
-  tab.ty <- TableType (lim', t);
+  tab.ty <- TableType (lim', it, t);
   tab.content <- after
 
 let load tab i =
-  if i < 0l || i >= Lib.Array32.length tab.content then raise Bounds;
-  Lib.Array32.get tab.content i
+  if i < 0L || i >= Lib.Array64.length tab.content then raise Bounds;
+  Lib.Array64.get tab.content i
 
 let store tab i r =
-  let TableType (lim, t) = tab.ty in
+  let TableType (_lim, _it, t) = tab.ty in
   if type_of_ref r <> t then raise Type;
-  if i < 0l || i >= Lib.Array32.length tab.content then raise Bounds;
-  Lib.Array32.set tab.content i r
+  if i < 0L || i >= Lib.Array64.length tab.content then raise Bounds;
+  Lib.Array64.set tab.content i r
 
 let blit tab offset rs =
   let data = Array.of_list rs in
-  let len = Lib.Array32.length data in
-  if offset < 0l || offset > Int32.sub (Lib.Array32.length tab.content) len then raise Bounds;
-  Lib.Array32.blit data 0l tab.content offset len
+  let len = Lib.Array64.length data in
+  if offset < 0L || offset > Int64.sub (Lib.Array64.length tab.content) len then raise Bounds;
+  Lib.Array64.blit data 0L tab.content offset len
diff --git a/interpreter/runtime/table.mli b/interpreter/runtime/table.mli
index cf424e357..b77093815 100644
--- a/interpreter/runtime/table.mli
+++ b/interpreter/runtime/table.mli
@@ -4,8 +4,8 @@ open Values
 type table
 type t = table
 
-type size = int32
-type index = int32
+type size = int64
+type index = int64
 type count = int32
 
 exception Type
@@ -16,7 +16,9 @@ exception OutOfMemory
 
 val alloc : table_type -> ref_ -> table (* raises Type, OutOfMemory *)
 val type_of : table -> table_type
+val index_type_of : table -> index_type
 val size : table -> size
+val index_of_num : num -> index
 val grow : table -> size -> ref_ -> unit
   (* raises SizeOverflow, SizeLimit, OutOfMemory *)
 
diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml
index 3e6daf1cd..9296c909f 100644
--- a/interpreter/syntax/types.ml
+++ b/interpreter/syntax/types.ml
@@ -10,7 +10,7 @@ type func_type = FuncType of result_type * result_type
 
 type 'a limits = {min : 'a; max : 'a option}
 type mutability = Immutable | Mutable
-type table_type = TableType of Int32.t limits * ref_type
+type table_type = TableType of Int64.t limits * index_type * ref_type
 type memory_type = MemoryType of Int64.t limits * index_type
 type global_type = GlobalType of value_type * mutability
 type extern_type =
@@ -89,8 +89,8 @@ let match_limits ge lim1 lim2 =
 let match_func_type ft1 ft2 =
   ft1 = ft2
 
-let match_table_type (TableType (lim1, et1)) (TableType (lim2, et2)) =
-  et1 = et2 && match_limits I32.ge_u lim1 lim2
+let match_table_type (TableType (lim1, it1, et1)) (TableType (lim2, it2, et2)) =
+  it1 = it2 && et1 = et2 && match_limits I64.ge_u lim1 lim2
 
 let match_memory_type (MemoryType (lim1, it1)) (MemoryType (lim2, it2)) =
   it1 = it2 && match_limits I64.ge_u lim1 lim2
@@ -147,8 +147,10 @@ let string_of_memory_type = function
 
 
 let string_of_table_type = function
-  | TableType (lim, t) -> string_of_limits I32.to_string_u lim ^ " " ^
-                          string_of_ref_type t
+  | TableType (lim, it, t) ->
+    string_of_num_type (num_type_of_index_type it) ^
+    " " ^ string_of_limits I64.to_string_u lim ^
+    " " ^ string_of_ref_type t
 
 let string_of_global_type = function
   | GlobalType (t, Immutable) -> string_of_value_type t
diff --git a/interpreter/syntax/values.ml b/interpreter/syntax/values.ml
index eefe37d5d..1a2168f6b 100644
--- a/interpreter/syntax/values.ml
+++ b/interpreter/syntax/values.ml
@@ -151,6 +151,11 @@ let default_value = function
 
 let value_of_bool b = Num (I32 (if b then 1l else 0l))
 
+let value_of_index it x =
+  match it with
+  | I64IndexType -> Num (I64 x)
+  | I32IndexType -> Num (I32 (Int64.to_int32 x))
+
 let string_of_num = function
   | I32 i -> I32.to_string_s i
   | I64 i -> I64.to_string_s i
diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml
index 7a1132f24..af6e98ab6 100644
--- a/interpreter/text/arrange.ml
+++ b/interpreter/text/arrange.ml
@@ -533,9 +533,9 @@ let func f =
 (* Tables & memories *)
 
 let table off i tab =
-  let {ttype = TableType (lim, t)} = tab.it in
-  Node ("table $" ^ nat (off + i) ^ " " ^ limits nat32 lim,
-    [atom ref_type t]
+  let {ttype = TableType (lim, it, t)} = tab.it in
+  Node ("table $" ^ nat (off + i) ^ " " ^ index_type it ^ " " ^
+        limits nat64 lim, [atom ref_type t]
   )
 
 let memory off i mem =
diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly
index 07ce0472b..e5e855d3c 100644
--- a/interpreter/text/parser.mly
+++ b/interpreter/text/parser.mly
@@ -206,12 +206,12 @@ let index_type_of_num_type t loc =
   match t with
   | I32Type -> I32IndexType
   | I64Type -> I64IndexType
-  | _ -> error (at loc) "illegal memory index type"
+  | _ -> error (at loc) "illegal index type"
 
 let index_type_of_value_type t loc =
   match t with
   | NumType t -> index_type_of_num_type t loc
-  | _ -> error (at loc) "illegal memory index type"
+  | _ -> error (at loc) "illegal index type"
 
 let memory_data init it c x at =
   let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in
@@ -222,6 +222,18 @@ let memory_data init it c x at =
   [{dinit = init; dmode = Active {index = x; offset = [instr @@ at] @@ at} @@ at} @@ at],
   [], []
 
+let table_data init it t c x at =
+  let instr = match it with
+    | I32IndexType -> i32_const (0l @@ at)
+    | I64IndexType -> i64_const (0L @@ at) in
+  let einit = init c in
+  let size = Lib.List32.length einit in
+  let size64 = Int64.of_int32 size in
+  let emode = Active {index = x; offset = [instr @@ at] @@ at} @@ at in
+  [{ttype = TableType ({min = size64; max = Some size64}, it, t)} @@ at],
+  [{etype = t; einit; emode} @@ at],
+  [], []
+
 %}
 
 %token LPAR RPAR
@@ -313,16 +325,13 @@ func_type_result :
     { $3 @ $5 }
 
 table_type :
-  | limits32 ref_type { TableType ($1, $2) }
+  | value_type limits64 ref_type { TableType ($2, index_type_of_value_type $1 $sloc, $3) }
+  | limits64 ref_type { TableType ($1, I32IndexType, $2) }
 
 memory_type :
   | value_type limits64 { MemoryType ($2, index_type_of_value_type $1 $sloc) }
   | limits64 { MemoryType ($1, I32IndexType) }
 
-limits32 :
-  | NAT { {min = nat32 $1 $loc($1); max = None} }
-  | NAT NAT { {min = nat32 $1 $loc($1); max = Some (nat32 $2 $loc($2))} }
-
 limits64 :
   | NAT { {min = nat64 $1 $loc($1); max = None} }
   | NAT NAT { {min = nat64 $1 $loc($1); max = Some (nat64 $2 $loc($2))} }
@@ -810,19 +819,15 @@ table_fields :
       let offset = [i32_const (0l @@ at) @@ at] @@ at in
       let einit = $4 c :: $5 c in
       let size = Lib.List32.length einit in
+      let size64 = Int64.of_int32 size in
       let emode = Active {index = x; offset} @@ at in
-      [{ttype = TableType ({min = size; max = Some size}, $1)} @@ at],
+      [{ttype = TableType ({min = size64; max = Some size64}, I32IndexType, $1)} @@ at],
       [{etype = $1; einit; emode} @@ at],
       [], [] }
   | ref_type LPAR ELEM elem_var_list RPAR  /* Sugar */
-    { fun c x at ->
-      let offset = [i32_const (0l @@ at) @@ at] @@ at in
-      let einit = $4 c in
-      let size = Lib.List32.length einit in
-      let emode = Active {index = x; offset} @@ at in
-      [{ttype = TableType ({min = size; max = Some size}, $1)} @@ at],
-      [{etype = FuncRefType; einit; emode} @@ at],
-      [], [] }
+    { table_data $4 I32IndexType FuncRefType }
+  | value_type ref_type LPAR ELEM elem_var_list RPAR  /* Sugar */
+    { table_data $5 (index_type_of_value_type $1 $sloc) FuncRefType }
 
 data :
   | LPAR DATA bind_var_opt string_list RPAR
diff --git a/interpreter/util/lib.ml b/interpreter/util/lib.ml
index 90c4e4fe0..051661e86 100644
--- a/interpreter/util/lib.ml
+++ b/interpreter/util/lib.ml
@@ -152,23 +152,60 @@ struct
     | x::xs -> f i x :: mapi' f (Int32.add i 1l) xs
 end
 
-module Array32 =
+module List64 =
+struct
+  let rec make n x = make' n x []
+  and make' n x xs =
+    if n = 0L then xs else make' (Int64.sub n 1L) x (x::xs)
+
+  let rec length xs = length' xs 0L
+  and length' xs n =
+    match xs with
+    | [] -> n
+    | _::xs' when n < Int64.max_int -> length' xs' (Int64.add n 1L)
+    | _ -> failwith "length"
+
+  let rec nth xs n =
+    match n, xs with
+    | 0L, x::_ -> x
+    | n, _::xs' when n > 0L -> nth xs' (Int64.sub n 1L)
+    | _ -> failwith "nth"
+
+  let rec take n xs =
+    match n, xs with
+    | 0L, _ -> []
+    | n, x::xs' when n > 0L -> x :: take (Int64.sub n 1L) xs'
+    | _ -> failwith "take"
+
+  let rec drop n xs =
+    match n, xs with
+    | 0L, _ -> xs
+    | n, _::xs' when n > 0L -> drop (Int64.sub n 1L) xs'
+    | _ -> failwith "drop"
+
+  let rec mapi f xs = mapi' f 0L xs
+  and mapi' f i = function
+    | [] -> []
+    | x::xs -> f i x :: mapi' f (Int64.add i 1L) xs
+end
+
+module Array64 =
 struct
   let make n x =
-    if n < 0l || Int64.of_int32 n > Int64.of_int max_int then
-      invalid_arg "Array32.make";
-    Array.make (Int32.to_int n) x
+    if n < 0L || n > Int64.of_int max_int then
+      invalid_arg "Array64.make";
+    Array.make (Int64.to_int n) x
 
-  let length a = Int32.of_int (Array.length a)
+  let length a = Int64.of_int (Array.length a)
 
-  let index_of_int32 i =
-    if i < 0l || Int64.of_int32 i > Int64.of_int max_int then -1 else
-    Int32.to_int i
+  let index_of_int64 i =
+    if i < 0L || i > Int64.of_int max_int then -1 else
+    Int64.to_int i
 
-  let get a i = Array.get a (index_of_int32 i)
-  let set a i x = Array.set a (index_of_int32 i) x
+  let get a i = Array.get a (index_of_int64 i)
+  let set a i x = Array.set a (index_of_int64 i) x
   let blit a1 i1 a2 i2 n =
-    Array.blit a1 (index_of_int32 i1) a2 (index_of_int32 i2) (index_of_int32 n)
+    Array.blit a1 (index_of_int64 i1) a2 (index_of_int64 i2) (index_of_int64 n)
 end
 
 module Bigarray =
diff --git a/interpreter/util/lib.mli b/interpreter/util/lib.mli
index b66b8b0e8..9179956f9 100644
--- a/interpreter/util/lib.mli
+++ b/interpreter/util/lib.mli
@@ -38,13 +38,23 @@ sig
   val mapi : (int32 -> 'a -> 'b) -> 'a list -> 'b list
 end
 
-module Array32 :
+module List64 :
 sig
-  val make : int32 -> 'a -> 'a array
-  val length : 'a array -> int32
-  val get : 'a array -> int32 -> 'a
-  val set : 'a array -> int32 -> 'a -> unit
-  val blit : 'a array -> int32 -> 'a array -> int32 -> int32 -> unit
+  val make : int64 -> 'a -> 'a list
+  val length : 'a list -> int64
+  val nth : 'a list -> int64 -> 'a (* raises Failure *)
+  val take : int64 -> 'a list -> 'a list (* raises Failure *)
+  val drop : int64 -> 'a list -> 'a list (* raises Failure *)
+  val mapi : (int64 -> 'a -> 'b) -> 'a list -> 'b list
+end
+
+module Array64 :
+sig
+  val make : int64 -> 'a -> 'a array
+  val length : 'a array -> int64
+  val get : 'a array -> int64 -> 'a
+  val set : 'a array -> int64 -> 'a -> unit
+  val blit : 'a array -> int64 -> 'a array -> int64 -> int64 -> unit
 end
 
 module Bigarray :
diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml
index 3ada40081..291b9f405 100644
--- a/interpreter/valid/valid.ml
+++ b/interpreter/valid/valid.ml
@@ -292,12 +292,12 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
     ts1 --> ts2
 
   | CallIndirect (x, y) ->
-    let TableType (lim, t) = table c x in
+    let TableType (lim, it, t) = table c x in
     let FuncType (ts1, ts2) = type_ c y in
     require (t = FuncRefType) x.at
       ("type mismatch: instruction requires table of functions" ^
        " but table has " ^ string_of_ref_type t);
-    (ts1 @ [NumType I32Type]) --> ts2
+    (ts1 @ [value_type_of_index_type it]) --> ts2
 
   | LocalGet x ->
     [] --> [local c x]
@@ -318,35 +318,35 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
     [t] --> []
 
   | TableGet x ->
-    let TableType (_lim, t) = table c x in
-    [NumType I32Type] --> [RefType t]
+    let TableType (_lim, it, t) = table c x in
+    [value_type_of_index_type it] --> [RefType t]
 
   | TableSet x ->
-    let TableType (_lim, t) = table c x in
-    [NumType I32Type; RefType t] --> []
+    let TableType (_lim, it, t) = table c x in
+    [value_type_of_index_type it; RefType t] --> []
 
   | TableSize x ->
     let _tt = table c x in
     [] --> [NumType I32Type]
 
   | TableGrow x ->
-    let TableType (_lim, t) = table c x in
+    let TableType (_lim, _it, t) = table c x in
     [RefType t; NumType I32Type] --> [NumType I32Type]
 
   | TableFill x ->
-    let TableType (_lim, t) = table c x in
+    let TableType (_lim, _it, t) = table c x in
     [NumType I32Type; RefType t; NumType I32Type] --> []
 
   | TableCopy (x, y) ->
-    let TableType (_lim1, t1) = table c x in
-    let TableType (_lim2, t2) = table c y in
+    let TableType (_lim1, _it, t1) = table c x in
+    let TableType (_lim2, _it, t2) = table c y in
     require (t1 = t2) x.at
       ("type mismatch: source element type " ^ string_of_ref_type t1 ^
        " does not match destination element type " ^ string_of_ref_type t2);
     [NumType I32Type; NumType I32Type; NumType I32Type] --> []
 
   | TableInit (x, y) ->
-    let TableType (_lim1, t1) = table c x in
+    let TableType (_lim1, _it, t1) = table c x in
     let t2 = elem c y in
     require (t1 = t2) x.at
       ("type mismatch: element segment's type " ^ string_of_ref_type t1 ^
@@ -571,9 +571,14 @@ let check_func_type (ft : func_type) at =
   List.iter (fun t -> check_value_type t at) ts2
 
 let check_table_type (tt : table_type) at =
-  let TableType (lim, t) = tt in
-  check_limits I32.le_u lim 0xffff_ffffl at "table size must be at most 2^32-1";
-  check_ref_type t at
+  let TableType (lim, it, t) = tt in
+  match it with
+  | I64IndexType ->
+    check_limits I64.le_u lim 0xffff_ffff_ffff_ffffL at
+      "table size must be at most 2^64-1"
+  | I32IndexType ->
+    check_limits I64.le_u lim 0xffff_ffffL at
+      "table size must be at most 2^32-1"
 
 let check_memory_type (mt : memory_type) at =
   let MemoryType (lim, it) = mt in
@@ -589,7 +594,6 @@ let check_global_type (gt : global_type) at =
   let GlobalType (t, mut) = gt in
   check_value_type t at
 
-
 let check_type (t : type_) =
   check_func_type t.it t.at
 
@@ -644,11 +648,11 @@ let check_elem_mode (c : context) (t : ref_type) (mode : segment_mode) =
   match mode.it with
   | Passive -> ()
   | Active {index; offset} ->
-    let TableType (_, et) = table c index in
+    let TableType (_, it, et) = table c index in
     require (t = et) mode.at
       ("type mismatch: element segment's type " ^ string_of_ref_type t ^
        " does not match table's element type " ^ string_of_ref_type et);
-    check_const c offset (NumType I32Type)
+    check_const c offset (value_type_of_index_type it)
   | Declarative -> ()
 
 let check_elem (c : context) (seg : elem_segment) =
diff --git a/test/core/call_indirect.wast b/test/core/call_indirect.wast
index 79b8dc393..ba267fea5 100644
--- a/test/core/call_indirect.wast
+++ b/test/core/call_indirect.wast
@@ -61,10 +61,15 @@
     )
   )
 
+  (table $t64 i64 funcref
+    (elem $const-i32)
+  )
+
   ;; Syntax
 
   (func
     (call_indirect (i32.const 0))
+    (call_indirect $t64 (i64.const 0))
     (call_indirect (param i64) (i64.const 0) (i32.const 0))
     (call_indirect (param i64) (param) (param f64 i32 i64)
       (i64.const 0) (f64.const 0) (i32.const 0) (i64.const 0) (i32.const 0)
@@ -94,6 +99,9 @@
   (func (export "type-i32") (result i32)
     (call_indirect (type $out-i32) (i32.const 0))
   )
+  (func (export "type-i32-t64") (result i32)
+    (call_indirect $t64 (type $out-i32) (i64.const 0))
+  )
   (func (export "type-i64") (result i64)
     (call_indirect (type $out-i64) (i32.const 1))
   )
@@ -474,6 +482,8 @@
 (assert_return (invoke "type-f64") (f64.const 0xf64))
 (assert_return (invoke "type-f64-i32") (f64.const 0xf64) (i32.const 32))
 
+(assert_return (invoke "type-i32-t64") (i32.const 0x132))
+
 (assert_return (invoke "type-index") (i64.const 100))
 
 (assert_return (invoke "type-first-i32") (i32.const 32))
diff --git a/test/core/table.wast b/test/core/table.wast
index 0bd04f5cc..d61a7d1b7 100644
--- a/test/core/table.wast
+++ b/test/core/table.wast
@@ -11,10 +11,6 @@
 (module (table 0 funcref) (table 0 funcref))
 (module (table (import "spectest" "table") 0 funcref) (table 0 funcref))
 
-(assert_invalid (module (elem (i32.const 0))) "unknown table")
-(assert_invalid (module (elem (i32.const 0) $f) (func $f)) "unknown table")
-
-
 (assert_invalid
   (module (table 1 0 funcref))
   "size minimum must not be greater than maximum"
@@ -24,19 +20,45 @@
   "size minimum must not be greater than maximum"
 )
 
-(assert_malformed
+(assert_invalid
   (module quote "(table 0x1_0000_0000 funcref)")
-  "i32 constant out of range"
+  "table size must be at most 2^32-1"
 )
-(assert_malformed
+(assert_invalid
   (module quote "(table 0x1_0000_0000 0x1_0000_0000 funcref)")
-  "i32 constant out of range"
+  "table size must be at most 2^32-1"
 )
-(assert_malformed
+(assert_invalid
   (module quote "(table 0 0x1_0000_0000 funcref)")
-  "i32 constant out of range"
+  "table size must be at most 2^32-1"
+)
+
+;; Same as above but with i64 index types
+
+(module (table i64 0 funcref))
+(module (table i64 1 funcref))
+(module (table i64 0 0 funcref))
+(module (table i64 0 1 funcref))
+(module (table i64 1 256 funcref))
+(module (table i64 0 65536 funcref))
+(module (table i64 0 0xffff_ffff funcref))
+
+(module (table i64 0 funcref) (table i64 0 funcref))
+(module (table (import "spectest" "table64") i64 0 funcref) (table i64 0 funcref))
+
+(assert_invalid
+  (module (table i64 1 0 funcref))
+  "size minimum must not be greater than maximum"
+)
+(assert_invalid
+  (module (table i64 0xffff_ffff 0 funcref))
+  "size minimum must not be greater than maximum"
 )
 
+;; Elem segments with no table
+
+(assert_invalid (module (elem (i32.const 0))) "unknown table")
+(assert_invalid (module (elem (i32.const 0) $f) (func $f)) "unknown table")
 
 ;; Duplicate table identifiers
 
diff --git a/test/core/table_get.wast b/test/core/table_get.wast
index 0dedb19f5..b472ad255 100644
--- a/test/core/table_get.wast
+++ b/test/core/table_get.wast
@@ -1,6 +1,7 @@
 (module
   (table $t2 2 externref)
   (table $t3 3 funcref)
+  (table $t64 i64 3 funcref)
   (elem (table $t3) (i32.const 1) func $dummy)
   (func $dummy)
 
@@ -15,6 +16,9 @@
   (func $f3 (export "get-funcref") (param $i i32) (result funcref)
     (table.get $t3 (local.get $i))
   )
+  (func $f4 (export "get-funcref-t64") (param $i i64) (result funcref)
+    (table.get $t64 (local.get $i))
+  )
 
   (func (export "is_null-funcref") (param $i i32) (result i32)
     (ref.is_null (call $f3 (local.get $i)))
@@ -27,6 +31,7 @@
 (assert_return (invoke "get-externref" (i32.const 1)) (ref.extern 1))
 
 (assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func))
+(assert_return (invoke "get-funcref-t64" (i64.const 0)) (ref.null func))
 (assert_return (invoke "is_null-funcref" (i32.const 1)) (i32.const 0))
 (assert_return (invoke "is_null-funcref" (i32.const 2)) (i32.const 0))
 
diff --git a/test/core/table_init.wast b/test/core/table_init.wast
index 0b2d26f77..fa1e0fdf8 100644
--- a/test/core/table_init.wast
+++ b/test/core/table_init.wast
@@ -21,10 +21,13 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t64 i64 30 30 funcref)
   (elem (table $t0) (i32.const 2) func 3 1 4 1)
+  (elem (table $t64) (i64.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
   (elem (table $t0) (i32.const 12) func 7 5 2 3 6)
+  (elem (table $t64) (i64.const 12) func 7 5 2 3 6)
   (elem funcref
     (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
   (func (result i32) (i32.const 5))  ;; index 5
@@ -33,9 +36,13 @@
   (func (result i32) (i32.const 8))
   (func (result i32) (i32.const 9))  ;; index 9
   (func (export "test")
-    (table.init $t0 1 (i32.const 7) (i32.const 0) (i32.const 4)))
+    (table.init $t0 2 (i32.const 7) (i32.const 0) (i32.const 4)))
+  (func (export "test-t64")
+    (table.init $t64 2 (i32.const 7) (i32.const 0) (i32.const 4)))
   (func (export "check") (param i32) (result i32)
     (call_indirect $t0 (type 0) (local.get 0)))
+  (func (export "check-t64") (param i64) (result i32)
+    (call_indirect $t64 (type 0) (local.get 0)))
 )
 
 (invoke "test")
@@ -70,6 +77,38 @@
 (assert_trap (invoke "check" (i32.const 28)) "uninitialized element")
 (assert_trap (invoke "check" (i32.const 29)) "uninitialized element")
 
+(invoke "test-t64")
+(assert_trap (invoke "check-t64" (i64.const 0)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 1)) "uninitialized element")
+(assert_return (invoke "check-t64" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "check-t64" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "check-t64" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "check-t64" (i64.const 5)) (i32.const 1))
+(assert_trap (invoke "check-t64" (i64.const 6)) "uninitialized element")
+(assert_return (invoke "check-t64" (i64.const 7)) (i32.const 2))
+(assert_return (invoke "check-t64" (i64.const 8)) (i32.const 7))
+(assert_return (invoke "check-t64" (i64.const 9)) (i32.const 1))
+(assert_return (invoke "check-t64" (i64.const 10)) (i32.const 8))
+(assert_trap (invoke "check-t64" (i64.const 11)) "uninitialized element")
+(assert_return (invoke "check-t64" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "check-t64" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "check-t64" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "check-t64" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "check-t64" (i64.const 16)) (i32.const 6))
+(assert_trap (invoke "check-t64" (i64.const 17)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 18)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 19)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 20)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 21)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 22)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 23)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 24)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 25)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 26)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 27)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 28)) "uninitialized element")
+(assert_trap (invoke "check-t64" (i64.const 29)) "uninitialized element")
+
 (module
   (type (func (result i32)))  ;; type #0
   (import "a" "ef0" (func (result i32)))    ;; index 0
diff --git a/test/core/table_set.wast b/test/core/table_set.wast
index 3362f9567..246e01ad9 100644
--- a/test/core/table_set.wast
+++ b/test/core/table_set.wast
@@ -1,6 +1,7 @@
 (module
   (table $t2 1 externref)
   (table $t3 2 funcref)
+  (table $t64 i64 2 funcref)
   (elem (table $t3) (i32.const 1) func $dummy)
   (func $dummy)
 
@@ -10,6 +11,9 @@
   (func $f3 (export "get-funcref") (param $i i32) (result funcref)
     (table.get $t3 (local.get $i))
   )
+  (func $f4 (export "get-funcref-t64") (param $i i64) (result funcref)
+    (table.get $t64 (local.get $i))
+  )
 
   (func (export "set-externref") (param $i i32) (param $r externref)
     (table.set (local.get $i) (local.get $r))
@@ -20,6 +24,9 @@
   (func (export "set-funcref-from") (param $i i32) (param $j i32)
     (table.set $t3 (local.get $i) (table.get $t3 (local.get $j)))
   )
+  (func (export "set-funcref-t64") (param $i i64) (param $r funcref)
+    (table.set $t64 (local.get $i) (local.get $r))
+  )
 
   (func (export "is_null-funcref") (param $i i32) (result i32)
     (ref.is_null (call $f3 (local.get $i)))
@@ -32,6 +39,9 @@
 (assert_return (invoke "set-externref" (i32.const 0) (ref.null extern)))
 (assert_return (invoke "get-externref" (i32.const 0)) (ref.null extern))
 
+(assert_return (invoke "set-funcref-t64" (i64.const 0) (ref.null func)))
+(assert_return (invoke "get-funcref-t64" (i64.const 0)) (ref.null func))
+
 (assert_return (invoke "get-funcref" (i32.const 0)) (ref.null func))
 (assert_return (invoke "set-funcref-from" (i32.const 0) (i32.const 1)))
 (assert_return (invoke "is_null-funcref" (i32.const 0)) (i32.const 0))

From 5cc08ad0e7bc1b989cad555967b60ff92a7f3f61 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Thu, 2 May 2024 10:42:47 -0700
Subject: [PATCH 133/230] [table64] Fix validation rules for
 table.fill/copy/size/grow (#54)

Also, add more tests.
---
 interpreter/syntax/types.ml      |   2 +
 interpreter/valid/valid.ml       |  25 +-
 test/core/table_copy.wast        | 550 +++++++++++++++++++++++++++++++
 test/core/table_fill.wast        |  65 ++++
 test/core/table_grow.wast        |  33 ++
 test/core/table_init.wast        | 232 ++++++++++---
 test/core/table_size.wast        |   3 +
 test/meta/Makefile               |   2 +-
 test/meta/generate_table_copy.js | 137 ++++----
 test/meta/generate_table_init.js |  34 +-
 10 files changed, 949 insertions(+), 134 deletions(-)

diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml
index 9296c909f..493ebde96 100644
--- a/interpreter/syntax/types.ml
+++ b/interpreter/syntax/types.ml
@@ -135,6 +135,8 @@ let string_of_value_types = function
   | [t] -> string_of_value_type t
   | ts -> "[" ^ String.concat " " (List.map string_of_value_type ts) ^ "]"
 
+let string_of_index_type t =
+  string_of_value_type (value_type_of_index_type t)
 
 let string_of_limits to_string {min; max} =
   to_string min ^
diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml
index 291b9f405..312264481 100644
--- a/interpreter/valid/valid.ml
+++ b/interpreter/valid/valid.ml
@@ -326,32 +326,35 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
     [value_type_of_index_type it; RefType t] --> []
 
   | TableSize x ->
-    let _tt = table c x in
-    [] --> [NumType I32Type]
+    let TableType (_lim, it, _t) = table c x in
+    [] --> [value_type_of_index_type it]
 
   | TableGrow x ->
-    let TableType (_lim, _it, t) = table c x in
-    [RefType t; NumType I32Type] --> [NumType I32Type]
+    let TableType (_lim, it, t) = table c x in
+    [RefType t; value_type_of_index_type it] --> [value_type_of_index_type it]
 
   | TableFill x ->
-    let TableType (_lim, _it, t) = table c x in
-    [NumType I32Type; RefType t; NumType I32Type] --> []
+    let TableType (_lim, it, t) = table c x in
+    [value_type_of_index_type it; RefType t; value_type_of_index_type it] --> []
 
   | TableCopy (x, y) ->
-    let TableType (_lim1, _it, t1) = table c x in
-    let TableType (_lim2, _it, t2) = table c y in
+    let TableType (_lim1, it1, t1) = table c x in
+    let TableType (_lim2, it2, t2) = table c y in
     require (t1 = t2) x.at
       ("type mismatch: source element type " ^ string_of_ref_type t1 ^
        " does not match destination element type " ^ string_of_ref_type t2);
-    [NumType I32Type; NumType I32Type; NumType I32Type] --> []
+    require (it1 = it2) x.at
+      ("type mismatch: source index type " ^ string_of_index_type it1 ^
+       " does not match destination index type " ^ string_of_index_type it2);
+    [value_type_of_index_type it1; value_type_of_index_type it1; value_type_of_index_type it1] --> []
 
   | TableInit (x, y) ->
-    let TableType (_lim1, _it, t1) = table c x in
+    let TableType (_lim, it, t1) = table c x in
     let t2 = elem c y in
     require (t1 = t2) x.at
       ("type mismatch: element segment's type " ^ string_of_ref_type t1 ^
        " does not match table's element type " ^ string_of_ref_type t2);
-    [NumType I32Type; NumType I32Type; NumType I32Type] --> []
+    [value_type_of_index_type it; NumType I32Type; NumType I32Type] --> []
 
   | ElemDrop x ->
     ignore (elem c x);
diff --git a/test/core/table_copy.wast b/test/core/table_copy.wast
index 380e84ee5..613fc5295 100644
--- a/test/core/table_copy.wast
+++ b/test/core/table_copy.wast
@@ -2218,6 +2218,556 @@
 
 (assert_trap (invoke "test") "out of bounds table access")
 
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 28) (i64.const 1) (i64.const 3))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 6))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 15) (i64.const 25) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 30) (i64.const 15) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 31) (i64.const 15) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 15) (i64.const 30) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 15) (i64.const 31) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 30) (i64.const 30) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t0 $t0 (i64.const 31) (i64.const 31) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 28) (i64.const 1) (i64.const 3))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 0xFFFFFFFE) (i64.const 1) (i64.const 2))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 6))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 15) (i64.const 0xFFFFFFFE) (i64.const 2))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 15) (i64.const 25) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 30) (i64.const 15) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 31) (i64.const 15) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 15) (i64.const 30) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 15) (i64.const 31) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 30) (i64.const 30) (i64.const 0))
+    ))
+
+(invoke "test")
+
+(module
+  (table $t0 i64 30 30 funcref)
+  (table $t1 i64 30 30 funcref)
+  (elem (table $t0) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t0) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 0))
+  (func (result i32) (i32.const 1))
+  (func (result i32) (i32.const 2))
+  (func (result i32) (i32.const 3))
+  (func (result i32) (i32.const 4))
+  (func (result i32) (i32.const 5))
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))
+  (func (export "test")
+    (table.copy $t1 $t0 (i64.const 31) (i64.const 31) (i64.const 0))
+    ))
+
+(assert_trap (invoke "test") "out of bounds table access")
+
 (module
   (type (func (result i32)))
   (table 32 64 funcref)
diff --git a/test/core/table_fill.wast b/test/core/table_fill.wast
index a8e222552..ea0c75252 100644
--- a/test/core/table_fill.wast
+++ b/test/core/table_fill.wast
@@ -12,6 +12,16 @@
   (func (export "get") (param $i i32) (result externref)
     (table.get $t (local.get $i))
   )
+
+  (table $t64 i64 10 externref)
+
+  (func (export "fill-t64") (param $i i64) (param $r externref) (param $n i64)
+    (table.fill $t64 (local.get $i) (local.get $r) (local.get $n))
+  )
+
+  (func (export "get-t64") (param $i i64) (result externref)
+    (table.get $t64 (local.get $i))
+  )
 )
 
 (assert_return (invoke "get" (i32.const 1)) (ref.null extern))
@@ -68,6 +78,61 @@
   "out of bounds table access"
 )
 
+;; Same as above but for t64
+
+(assert_return (invoke "get-t64" (i64.const 1)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 2)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 3)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 5)) (ref.null extern))
+
+(assert_return (invoke "fill-t64" (i64.const 2) (ref.extern 1) (i64.const 3)))
+(assert_return (invoke "get-t64" (i64.const 1)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 2)) (ref.extern 1))
+(assert_return (invoke "get-t64" (i64.const 3)) (ref.extern 1))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 1))
+(assert_return (invoke "get-t64" (i64.const 5)) (ref.null extern))
+
+(assert_return (invoke "fill-t64" (i64.const 4) (ref.extern 2) (i64.const 2)))
+(assert_return (invoke "get-t64" (i64.const 3)) (ref.extern 1))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 2))
+(assert_return (invoke "get-t64" (i64.const 5)) (ref.extern 2))
+(assert_return (invoke "get-t64" (i64.const 6)) (ref.null extern))
+
+(assert_return (invoke "fill-t64" (i64.const 4) (ref.extern 3) (i64.const 0)))
+(assert_return (invoke "get-t64" (i64.const 3)) (ref.extern 1))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 2))
+(assert_return (invoke "get-t64" (i64.const 5)) (ref.extern 2))
+
+(assert_return (invoke "fill-t64" (i64.const 8) (ref.extern 4) (i64.const 2)))
+(assert_return (invoke "get-t64" (i64.const 7)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 8)) (ref.extern 4))
+(assert_return (invoke "get-t64" (i64.const 9)) (ref.extern 4))
+
+(assert_return (invoke "fill-t64" (i64.const 9) (ref.null extern) (i64.const 1)))
+(assert_return (invoke "get-t64" (i64.const 8)) (ref.extern 4))
+(assert_return (invoke "get-t64" (i64.const 9)) (ref.null extern))
+
+(assert_return (invoke "fill-t64" (i64.const 10) (ref.extern 5) (i64.const 0)))
+(assert_return (invoke "get-t64" (i64.const 9)) (ref.null extern))
+
+(assert_trap
+  (invoke "fill-t64" (i64.const 8) (ref.extern 6) (i64.const 3))
+  "out of bounds table access"
+)
+(assert_return (invoke "get-t64" (i64.const 7)) (ref.null extern))
+(assert_return (invoke "get-t64" (i64.const 8)) (ref.extern 4))
+(assert_return (invoke "get-t64" (i64.const 9)) (ref.null extern))
+
+(assert_trap
+  (invoke "fill-t64" (i64.const 11) (ref.null extern) (i64.const 0))
+  "out of bounds table access"
+)
+
+(assert_trap
+  (invoke "fill-t64" (i64.const 11) (ref.null extern) (i64.const 10))
+  "out of bounds table access"
+)
 
 ;; Type errors
 
diff --git a/test/core/table_grow.wast b/test/core/table_grow.wast
index 9a931a7fa..6d268f966 100644
--- a/test/core/table_grow.wast
+++ b/test/core/table_grow.wast
@@ -11,6 +11,15 @@
     (table.grow (local.get $init) (local.get $sz))
   )
   (func (export "size") (result i32) (table.size $t))
+
+  (table $t64 i64 0 externref)
+
+  (func (export "get-t64") (param $i i64) (result externref) (table.get $t64 (local.get $i)))
+  (func (export "set-t64") (param $i i64) (param $r externref) (table.set $t64 (local.get $i) (local.get $r)))
+  (func (export "grow-t64") (param $sz i64) (param $init externref) (result i64)
+    (table.grow $t64 (local.get $init) (local.get $sz))
+  )
+  (func (export "size-t64") (result i64) (table.size $t64))
 )
 
 (assert_return (invoke "size") (i32.const 0))
@@ -37,6 +46,30 @@
 (assert_trap (invoke "set" (i32.const 5) (ref.extern 2)) "out of bounds table access")
 (assert_trap (invoke "get" (i32.const 5)) "out of bounds table access")
 
+;; Similar to above but for t64
+(assert_return (invoke "size-t64") (i64.const 0))
+(assert_trap (invoke "set-t64" (i64.const 0) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 0)) "out of bounds table access")
+
+(assert_return (invoke "grow-t64" (i64.const 1) (ref.null extern)) (i64.const 0))
+(assert_return (invoke "size-t64") (i64.const 1))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.null extern))
+(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_trap (invoke "set-t64" (i64.const 1) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 1)) "out of bounds table access")
+
+(assert_return (invoke "grow-t64" (i64.const 4) (ref.extern 3)) (i64.const 1))
+(assert_return (invoke "size-t64") (i64.const 5))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_return (invoke "set-t64" (i64.const 0) (ref.extern 2)))
+(assert_return (invoke "get-t64" (i64.const 0)) (ref.extern 2))
+(assert_return (invoke "get-t64" (i64.const 1)) (ref.extern 3))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 3))
+(assert_return (invoke "set-t64" (i64.const 4) (ref.extern 4)))
+(assert_return (invoke "get-t64" (i64.const 4)) (ref.extern 4))
+(assert_trap (invoke "set-t64" (i64.const 5) (ref.extern 2)) "out of bounds table access")
+(assert_trap (invoke "get-t64" (i64.const 5)) "out of bounds table access")
 
 ;; Reject growing to size outside i32 value range
 (module
diff --git a/test/core/table_init.wast b/test/core/table_init.wast
index fa1e0fdf8..5c3679ab9 100644
--- a/test/core/table_init.wast
+++ b/test/core/table_init.wast
@@ -21,13 +21,11 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
-  (table $t64 i64 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t0) (i32.const 2) func 3 1 4 1)
-  (elem (table $t64) (i64.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
   (elem (table $t0) (i32.const 12) func 7 5 2 3 6)
-  (elem (table $t64) (i64.const 12) func 7 5 2 3 6)
   (elem funcref
     (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
   (func (result i32) (i32.const 5))  ;; index 5
@@ -36,13 +34,9 @@
   (func (result i32) (i32.const 8))
   (func (result i32) (i32.const 9))  ;; index 9
   (func (export "test")
-    (table.init $t0 2 (i32.const 7) (i32.const 0) (i32.const 4)))
-  (func (export "test-t64")
-    (table.init $t64 2 (i32.const 7) (i32.const 0) (i32.const 4)))
+    (table.init $t0 1 (i32.const 7) (i32.const 0) (i32.const 4)))
   (func (export "check") (param i32) (result i32)
     (call_indirect $t0 (type 0) (local.get 0)))
-  (func (export "check-t64") (param i64) (result i32)
-    (call_indirect $t64 (type 0) (local.get 0)))
 )
 
 (invoke "test")
@@ -77,38 +71,6 @@
 (assert_trap (invoke "check" (i32.const 28)) "uninitialized element")
 (assert_trap (invoke "check" (i32.const 29)) "uninitialized element")
 
-(invoke "test-t64")
-(assert_trap (invoke "check-t64" (i64.const 0)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 1)) "uninitialized element")
-(assert_return (invoke "check-t64" (i64.const 2)) (i32.const 3))
-(assert_return (invoke "check-t64" (i64.const 3)) (i32.const 1))
-(assert_return (invoke "check-t64" (i64.const 4)) (i32.const 4))
-(assert_return (invoke "check-t64" (i64.const 5)) (i32.const 1))
-(assert_trap (invoke "check-t64" (i64.const 6)) "uninitialized element")
-(assert_return (invoke "check-t64" (i64.const 7)) (i32.const 2))
-(assert_return (invoke "check-t64" (i64.const 8)) (i32.const 7))
-(assert_return (invoke "check-t64" (i64.const 9)) (i32.const 1))
-(assert_return (invoke "check-t64" (i64.const 10)) (i32.const 8))
-(assert_trap (invoke "check-t64" (i64.const 11)) "uninitialized element")
-(assert_return (invoke "check-t64" (i64.const 12)) (i32.const 7))
-(assert_return (invoke "check-t64" (i64.const 13)) (i32.const 5))
-(assert_return (invoke "check-t64" (i64.const 14)) (i32.const 2))
-(assert_return (invoke "check-t64" (i64.const 15)) (i32.const 3))
-(assert_return (invoke "check-t64" (i64.const 16)) (i32.const 6))
-(assert_trap (invoke "check-t64" (i64.const 17)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 18)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 19)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 20)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 21)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 22)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 23)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 24)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 25)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 26)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 27)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 28)) "uninitialized element")
-(assert_trap (invoke "check-t64" (i64.const 29)) "uninitialized element")
-
 (module
   (type (func (result i32)))  ;; type #0
   (import "a" "ef0" (func (result i32)))    ;; index 0
@@ -118,6 +80,7 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t0) (i32.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
@@ -176,6 +139,7 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t0) (i32.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
@@ -242,6 +206,7 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t1) (i32.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
@@ -300,6 +265,7 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t1) (i32.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
@@ -358,6 +324,7 @@
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
   (elem (table $t1) (i32.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
@@ -414,6 +381,191 @@
 (assert_trap (invoke "check" (i32.const 27)) "uninitialized element")
 (assert_trap (invoke "check" (i32.const 28)) "uninitialized element")
 (assert_trap (invoke "check" (i32.const 29)) "uninitialized element")
+
+(module
+  (type (func (result i32)))  ;; type #0
+  (import "a" "ef0" (func (result i32)))    ;; index 0
+  (import "a" "ef1" (func (result i32)))
+  (import "a" "ef2" (func (result i32)))
+  (import "a" "ef3" (func (result i32)))
+  (import "a" "ef4" (func (result i32)))    ;; index 4
+  (table $t0 30 30 funcref)
+  (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
+  (elem (table $t2) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t2) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 5))  ;; index 5
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))  ;; index 9
+  (func (export "test")
+    (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4)))
+  (func (export "check") (param i64) (result i32)
+    (call_indirect $t2 (type 0) (local.get 0)))
+)
+
+(invoke "test")
+(assert_trap (invoke "check" (i64.const 0)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 1)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "check" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "check" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "check" (i64.const 5)) (i32.const 1))
+(assert_trap (invoke "check" (i64.const 6)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 7)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 8)) (i32.const 7))
+(assert_return (invoke "check" (i64.const 9)) (i32.const 1))
+(assert_return (invoke "check" (i64.const 10)) (i32.const 8))
+(assert_trap (invoke "check" (i64.const 11)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "check" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "check" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "check" (i64.const 16)) (i32.const 6))
+(assert_trap (invoke "check" (i64.const 17)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 18)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 19)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 20)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 21)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 22)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 23)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 24)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 25)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 26)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 27)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 28)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 29)) "uninitialized element")
+
+(module
+  (type (func (result i32)))  ;; type #0
+  (import "a" "ef0" (func (result i32)))    ;; index 0
+  (import "a" "ef1" (func (result i32)))
+  (import "a" "ef2" (func (result i32)))
+  (import "a" "ef3" (func (result i32)))
+  (import "a" "ef4" (func (result i32)))    ;; index 4
+  (table $t0 30 30 funcref)
+  (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
+  (elem (table $t2) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t2) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 5))  ;; index 5
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))  ;; index 9
+  (func (export "test")
+    (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3)))
+  (func (export "check") (param i64) (result i32)
+    (call_indirect $t2 (type 0) (local.get 0)))
+)
+
+(invoke "test")
+(assert_trap (invoke "check" (i64.const 0)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 1)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "check" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "check" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "check" (i64.const 5)) (i32.const 1))
+(assert_trap (invoke "check" (i64.const 6)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 7)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 8)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 9)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 10)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 11)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "check" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "check" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 15)) (i32.const 9))
+(assert_return (invoke "check" (i64.const 16)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 17)) (i32.const 7))
+(assert_trap (invoke "check" (i64.const 18)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 19)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 20)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 21)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 22)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 23)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 24)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 25)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 26)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 27)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 28)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 29)) "uninitialized element")
+
+(module
+  (type (func (result i32)))  ;; type #0
+  (import "a" "ef0" (func (result i32)))    ;; index 0
+  (import "a" "ef1" (func (result i32)))
+  (import "a" "ef2" (func (result i32)))
+  (import "a" "ef3" (func (result i32)))
+  (import "a" "ef4" (func (result i32)))    ;; index 4
+  (table $t0 30 30 funcref)
+  (table $t1 30 30 funcref)
+  (table $t2 i64 30 30 funcref)
+  (elem (table $t2) (i64.const 2) func 3 1 4 1)
+  (elem funcref
+    (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
+  (elem (table $t2) (i64.const 12) func 7 5 2 3 6)
+  (elem funcref
+    (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
+  (func (result i32) (i32.const 5))  ;; index 5
+  (func (result i32) (i32.const 6))
+  (func (result i32) (i32.const 7))
+  (func (result i32) (i32.const 8))
+  (func (result i32) (i32.const 9))  ;; index 9
+  (func (export "test")
+    (table.init $t2 1 (i64.const 7) (i32.const 0) (i32.const 4))
+         (elem.drop 1)
+         (table.init $t2 3 (i64.const 15) (i32.const 1) (i32.const 3))
+         (elem.drop 3)
+         (table.copy $t2 2 (i64.const 20) (i64.const 15) (i64.const 5))
+         (table.copy $t2 2 (i64.const 21) (i64.const 29) (i64.const 1))
+         (table.copy $t2 2 (i64.const 24) (i64.const 10) (i64.const 1))
+         (table.copy $t2 2 (i64.const 13) (i64.const 11) (i64.const 4))
+         (table.copy $t2 2 (i64.const 19) (i64.const 20) (i64.const 5)))
+  (func (export "check") (param i64) (result i32)
+    (call_indirect $t2 (type 0) (local.get 0)))
+)
+
+(invoke "test")
+(assert_trap (invoke "check" (i64.const 0)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 1)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "check" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "check" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "check" (i64.const 5)) (i32.const 1))
+(assert_trap (invoke "check" (i64.const 6)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 7)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 8)) (i32.const 7))
+(assert_return (invoke "check" (i64.const 9)) (i32.const 1))
+(assert_return (invoke "check" (i64.const 10)) (i32.const 8))
+(assert_trap (invoke "check" (i64.const 11)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 12)) (i32.const 7))
+(assert_trap (invoke "check" (i64.const 13)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 14)) (i32.const 7))
+(assert_return (invoke "check" (i64.const 15)) (i32.const 5))
+(assert_return (invoke "check" (i64.const 16)) (i32.const 2))
+(assert_return (invoke "check" (i64.const 17)) (i32.const 7))
+(assert_trap (invoke "check" (i64.const 18)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 19)) (i32.const 9))
+(assert_trap (invoke "check" (i64.const 20)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 21)) (i32.const 7))
+(assert_trap (invoke "check" (i64.const 22)) "uninitialized element")
+(assert_return (invoke "check" (i64.const 23)) (i32.const 8))
+(assert_return (invoke "check" (i64.const 24)) (i32.const 8))
+(assert_trap (invoke "check" (i64.const 25)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 26)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 27)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 28)) "uninitialized element")
+(assert_trap (invoke "check" (i64.const 29)) "uninitialized element")
 (assert_invalid
   (module
     (func (export "test")
diff --git a/test/core/table_size.wast b/test/core/table_size.wast
index 83fef02b3..71081d7e6 100644
--- a/test/core/table_size.wast
+++ b/test/core/table_size.wast
@@ -3,11 +3,13 @@
   (table $t1 1 externref)
   (table $t2 0 2 externref)
   (table $t3 3 8 externref)
+  (table $t64 i64 42 42 externref)
 
   (func (export "size-t0") (result i32) table.size)
   (func (export "size-t1") (result i32) (table.size $t1))
   (func (export "size-t2") (result i32) (table.size $t2))
   (func (export "size-t3") (result i32) (table.size $t3))
+  (func (export "size-t64") (result i64) (table.size $t64))
 
   (func (export "grow-t0") (param $sz i32)
     (drop (table.grow $t0 (ref.null extern) (local.get $sz)))
@@ -63,6 +65,7 @@
 (assert_return (invoke "grow-t3" (i32.const 1)))
 (assert_return (invoke "size-t3") (i32.const 8))
 
+(assert_return (invoke "size-t64") (i64.const 42))
 
 ;; Type errors
 
diff --git a/test/meta/Makefile b/test/meta/Makefile
index 20e9adb2f..ed0a571c3 100644
--- a/test/meta/Makefile
+++ b/test/meta/Makefile
@@ -4,7 +4,7 @@ SHARED_MEM=false
 JSSHELL=~/mozilla-central/js/src/build-debug/dist/bin/js -e 'const WITH_SHARED_MEMORY=$(SHARED_MEM);' -f common.js
 
 # Node.js
-#JSSHELL=./noderun.sh $(SHARED_MEM)
+JSSHELL=./noderun.sh $(SHARED_MEM)
 
 TARGETDIR=../core
 
diff --git a/test/meta/generate_table_copy.js b/test/meta/generate_table_copy.js
index f7fd47dcb..8fb0a9224 100644
--- a/test/meta/generate_table_copy.js
+++ b/test/meta/generate_table_copy.js
@@ -154,16 +154,17 @@ for ( let table of [0,1] ) {
 
 // Out-of-bounds checks.
 
-function do_test(insn1, insn2, errText)
+function do_test(tt, insn1, insn2, errText)
 {
+    const type = tt == 'i64' ? ' i64' : '';
     print(`
 (module
-  (table $t0 30 30 funcref)
-  (table $t1 30 30 funcref)
-  (elem (table $t0) (i32.const 2) func 3 1 4 1)
+  (table $t0${type} 30 30 funcref)
+  (table $t1${type} 30 30 funcref)
+  (elem (table $t0) (${tt}.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
-  (elem (table $t0) (i32.const 12) func 7 5 2 3 6)
+  (elem (table $t0) (${tt}.const 12) func 7 5 2 3 6)
   (elem funcref
     (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
   (func (result i32) (i32.const 0))
@@ -188,72 +189,74 @@ function do_test(insn1, insn2, errText)
     }
 }
 
-function tab_test2(insn1, insn2, errKind, errText) {
-    do_test(insn1, insn2, errKind, errText);
+function tab_test2(tt, insn1, insn2, errKind, errText) {
+    do_test(tt, insn1, insn2, errKind, errText);
 }
 
-function tab_test_nofail(insn1, insn2) {
-    do_test(insn1, insn2, undefined, undefined);
+function tab_test_nofail(tt, insn1, insn2) {
+    do_test(tt, insn1, insn2, undefined, undefined);
 }
 
-for ( let dest of ["$t0","$t1"] ) {
-    // Here we test the boundary-failure cases.  The table's valid indices are 0..29
-    // inclusive.
-
-    // copy: dst range invalid
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 28) (i32.const 1) (i32.const 3))`,
-              "",
-              "out of bounds table access");
-
-    // copy: dst wraparound end of 32 bit offset space
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 0xFFFFFFFE) (i32.const 1) (i32.const 2))`,
-              "",
-              "out of bounds table access");
-
-    // copy: src range invalid
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 15) (i32.const 25) (i32.const 6))`,
-              "",
-              "out of bounds table access");
-
-    // copy: src wraparound end of 32 bit offset space
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 15) (i32.const 0xFFFFFFFE) (i32.const 2))`,
-              "",
-              "out of bounds table access");
-
-    // copy: zero length with both offsets in-bounds is OK
-    tab_test_nofail(
-        `(table.copy ${dest} $t0 (i32.const 15) (i32.const 25) (i32.const 0))`,
-        "");
-
-    // copy: zero length with dst offset out of bounds at the end of the table is allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 30) (i32.const 15) (i32.const 0))`,
-              "",
-              undefined);
-
-    // copy: zero length with dst offset out of bounds past the end of the table is not allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 31) (i32.const 15) (i32.const 0))`,
-              "",
-              "out of bounds table access");
-
-    // copy: zero length with src offset out of bounds at the end of the table is allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 15) (i32.const 30) (i32.const 0))`,
-              "",
-              undefined);
-
-    // copy: zero length with src offset out of bounds past the end of the table is not allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 15) (i32.const 31) (i32.const 0))`,
-              "",
-              "out of bounds table access");
-
-    // copy: zero length with both dst and src offset out of bounds at the end of the table is allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 30) (i32.const 30) (i32.const 0))`,
-              "",
-              undefined);
-
-    // copy: zero length with both dst and src offset out of bounds past the end of the table is not allowed
-    tab_test2(`(table.copy ${dest} $t0 (i32.const 31) (i32.const 31) (i32.const 0))`,
-              "",
-              "out of bounds table access");
+for ( let tt of ["i32", "i64"] ) {
+  for ( let dest of ["$t0","$t1"] ) {
+      // Here we test the boundary-failure cases.  The table's valid indices are 0..29
+      // inclusive.
+
+      // copy: dst range invalid
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 28) (${tt}.const 1) (${tt}.const 3))`,
+                "",
+                "out of bounds table access");
+
+      // copy: dst wraparound end of 32 bit offset space
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 0xFFFFFFFE) (${tt}.const 1) (${tt}.const 2))`,
+                "",
+                "out of bounds table access");
+
+      // copy: src range invalid
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 15) (${tt}.const 25) (${tt}.const 6))`,
+                "",
+                "out of bounds table access");
+
+      // copy: src wraparound end of 32 bit offset space
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 15) (${tt}.const 0xFFFFFFFE) (${tt}.const 2))`,
+                "",
+                "out of bounds table access");
+
+      // copy: zero length with both offsets in-bounds is OK
+      tab_test_nofail(tt,
+          `(table.copy ${dest} $t0 (${tt}.const 15) (${tt}.const 25) (${tt}.const 0))`,
+          "");
+
+      // copy: zero length with dst offset out of bounds at the end of the table is allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 30) (${tt}.const 15) (${tt}.const 0))`,
+                "",
+                undefined);
+
+      // copy: zero length with dst offset out of bounds past the end of the table is not allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 31) (${tt}.const 15) (${tt}.const 0))`,
+                "",
+                "out of bounds table access");
+
+      // copy: zero length with src offset out of bounds at the end of the table is allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 15) (${tt}.const 30) (${tt}.const 0))`,
+                "",
+                undefined);
+
+      // copy: zero length with src offset out of bounds past the end of the table is not allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 15) (${tt}.const 31) (${tt}.const 0))`,
+                "",
+                "out of bounds table access");
+
+      // copy: zero length with both dst and src offset out of bounds at the end of the table is allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 30) (${tt}.const 30) (${tt}.const 0))`,
+                "",
+                undefined);
+
+      // copy: zero length with both dst and src offset out of bounds past the end of the table is not allowed
+      tab_test2(tt, `(table.copy ${dest} $t0 (${tt}.const 31) (${tt}.const 31) (${tt}.const 0))`,
+                "",
+                "out of bounds table access");
+  }
 }
 
 // table.copy: out of bounds of the table for the source or target, but should
diff --git a/test/meta/generate_table_init.js b/test/meta/generate_table_init.js
index 16b9a8406..5debac4e4 100644
--- a/test/meta/generate_table_init.js
+++ b/test/meta/generate_table_init.js
@@ -27,6 +27,7 @@ function emit_a() {
 // the table entry is empty.
 
 function emit_b(insn, table) {
+    let tt = table == 2 ? 'i64' : 'i32';
     print(
 `
 (module
@@ -38,10 +39,11 @@ function emit_b(insn, table) {
   (import "a" "ef4" (func (result i32)))    ;; index 4
   (table $t0 30 30 funcref)
   (table $t1 30 30 funcref)
-  (elem (table $t${table}) (i32.const 2) func 3 1 4 1)
+  (table $t2 i64 30 30 funcref)
+  (elem (table $t${table}) (${tt}.const 2) func 3 1 4 1)
   (elem funcref
     (ref.func 2) (ref.func 7) (ref.func 1) (ref.func 8))
-  (elem (table $t${table}) (i32.const 12) func 7 5 2 3 6)
+  (elem (table $t${table}) (${tt}.const 12) func 7 5 2 3 6)
   (elem funcref
     (ref.func 5) (ref.func 9) (ref.func 2) (ref.func 7) (ref.func 6))
   (func (result i32) (i32.const 5))  ;; index 5
@@ -51,7 +53,7 @@ function emit_b(insn, table) {
   (func (result i32) (i32.const 9))  ;; index 9
   (func (export "test")
     ${insn})
-  (func (export "check") (param i32) (result i32)
+  (func (export "check") (param ${tt}) (result i32)
     (call_indirect $t${table} (type 0) (local.get 0)))
 )
 `);
@@ -65,12 +67,13 @@ function emit_b(insn, table) {
 function tab_test(instruction, table, expected_result_vector) {
     emit_b(instruction, table);
     print(`(invoke "test")`);
+    let tt = table == 2 ? 'i64' : 'i32';
     for (let i = 0; i < expected_result_vector.length; i++) {
         let expected = expected_result_vector[i];
         if (expected === undefined) {
-            print(`(assert_trap (invoke "check" (i32.const ${i})) "uninitialized element")`);
+            print(`(assert_trap (invoke "check" (${tt}.const ${i})) "uninitialized element")`);
         } else {
-            print(`(assert_return (invoke "check" (i32.const ${i})) (i32.const ${expected}))`);
+            print(`(assert_return (invoke "check" (${tt}.const ${i})) (i32.const ${expected}))`);
         }
     }
 }
@@ -81,28 +84,29 @@ emit_a();
 // to count through the vector entries when debugging.
 let e = undefined;
 
-for ( let table of [0, 1] ) {
+for ( let table of [0, 1, 2] ) {
+    let tt = table == 2 ? 'i64' : 'i32';
     // Passive init that overwrites all-null entries
-    tab_test(`(table.init $t${table} 1 (i32.const 7) (i32.const 0) (i32.const 4))`,
+    tab_test(`(table.init $t${table} 1 (${tt}.const 7) (i32.const 0) (i32.const 4))`,
              table,
              [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
 
     // Passive init that overwrites existing active-init-created entries
-    tab_test(`(table.init $t${table} 3 (i32.const 15) (i32.const 1) (i32.const 3))`,
+    tab_test(`(table.init $t${table} 3 (${tt}.const 15) (i32.const 1) (i32.const 3))`,
              table,
              [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]);
 
     // Perform active and passive initialisation and then multiple copies
     tab_test(
-        `(table.init $t${table} 1 (i32.const 7) (i32.const 0) (i32.const 4))
+        `(table.init $t${table} 1 (${tt}.const 7) (i32.const 0) (i32.const 4))
          (elem.drop 1)
-         (table.init $t${table} 3 (i32.const 15) (i32.const 1) (i32.const 3))
+         (table.init $t${table} 3 (${tt}.const 15) (i32.const 1) (i32.const 3))
          (elem.drop 3)
-         (table.copy $t${table} ${table} (i32.const 20) (i32.const 15) (i32.const 5))
-         (table.copy $t${table} ${table} (i32.const 21) (i32.const 29) (i32.const 1))
-         (table.copy $t${table} ${table} (i32.const 24) (i32.const 10) (i32.const 1))
-         (table.copy $t${table} ${table} (i32.const 13) (i32.const 11) (i32.const 4))
-         (table.copy $t${table} ${table} (i32.const 19) (i32.const 20) (i32.const 5))`,
+         (table.copy $t${table} ${table} (${tt}.const 20) (${tt}.const 15) (${tt}.const 5))
+         (table.copy $t${table} ${table} (${tt}.const 21) (${tt}.const 29) (${tt}.const 1))
+         (table.copy $t${table} ${table} (${tt}.const 24) (${tt}.const 10) (${tt}.const 1))
+         (table.copy $t${table} ${table} (${tt}.const 13) (${tt}.const 11) (${tt}.const 4))
+         (table.copy $t${table} ${table} (${tt}.const 19) (${tt}.const 20) (${tt}.const 5))`,
         table,
         [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]);
 }

From 394c31b2e7440fe9728145069af38eb2f8219ba3 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Thu, 2 May 2024 14:47:30 -0700
Subject: [PATCH 134/230] Fix validation rules for memory.copy/fill/init (#56)

Also, update auto-generated test to cover 64-bit memories
---
 interpreter/valid/valid.ml        |   12 +-
 test/core/memory_copy.wast        | 5574 +++++++++++++++++++++++++++++
 test/core/memory_fill.wast        |  682 ++++
 test/core/memory_init.wast        |  963 +++++
 test/meta/common.js               |   16 +-
 test/meta/generate_memory_copy.js | 1305 +++----
 test/meta/generate_memory_fill.js |  165 +-
 test/meta/generate_memory_init.js |  300 +-
 8 files changed, 8125 insertions(+), 892 deletions(-)

diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml
index 312264481..a638a07b5 100644
--- a/interpreter/valid/valid.ml
+++ b/interpreter/valid/valid.ml
@@ -397,17 +397,17 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
     [value_type_of_index_type it] --> [value_type_of_index_type it]
 
   | MemoryFill ->
-    ignore (memory c (0l @@ e.at));
-    [NumType I32Type; NumType I32Type; NumType I32Type] --> []
+    let MemoryType (_, it) = memory c (0l @@ e.at) in
+    [value_type_of_index_type it; NumType I32Type; value_type_of_index_type it] --> []
 
   | MemoryCopy ->
-    ignore (memory c (0l @@ e.at));
-    [NumType I32Type; NumType I32Type; NumType I32Type] --> []
+    let MemoryType (_, it) = memory c (0l @@ e.at) in
+    [value_type_of_index_type it; value_type_of_index_type it; value_type_of_index_type it] --> []
 
   | MemoryInit x ->
-    ignore (memory c (0l @@ e.at));
+    let MemoryType (_, it) = memory c (0l @@ e.at) in
     ignore (data c x);
-    [NumType I32Type; NumType I32Type; NumType I32Type] --> []
+    [value_type_of_index_type it; value_type_of_index_type it; value_type_of_index_type it] --> []
 
   | DataDrop x ->
     ignore (data c x);
diff --git a/test/core/memory_copy.wast b/test/core/memory_copy.wast
index 472995d79..680bba5a8 100644
--- a/test/core/memory_copy.wast
+++ b/test/core/memory_copy.wast
@@ -5576,3 +5576,5577 @@
                (i32.const -1))
 (assert_return (invoke "checkRange" (i32.const 64834) (i32.const 65536) (i32.const 0))
                (i32.const -1))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (nop))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 13) (i64.const 2) (i64.const 3)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 25) (i64.const 15) (i64.const 2)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 13) (i64.const 25) (i64.const 3)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 20) (i64.const 22) (i64.const 4)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 25) (i64.const 1) (i64.const 3)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 10) (i64.const 12) (i64.const 7)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (func (export "test")
+    (memory.copy (i64.const 12) (i64.const 10) (i64.const 7)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65516) (i32.const 0) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19))
+(assert_return (invoke "load8_u" (i32.const 218)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 417)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 616)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 815)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1014)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1213)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1412)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1611)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1810)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2009)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2208)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2407)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2606)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2805)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3004)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3203)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3402)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3601)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3800)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3999)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65515) (i32.const 0) (i32.const 39))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19))
+(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 20))
+(assert_return (invoke "load8_u" (i32.const 219)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 418)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 617)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 816)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1015)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1214)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1413)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1612)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1811)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2010)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2209)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2408)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2607)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2806)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3005)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3204)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3403)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3602)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3801)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4000)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4199)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4398)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4597)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4796)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4995)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5194)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5393)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5592)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5791)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5990)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6189)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6388)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6587)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6786)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6985)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7184)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7383)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7582)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7781)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7980)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8179)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8378)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8577)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8776)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8975)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9174)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9373)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9572)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9771)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9970)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10169)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10368)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10567)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10766)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10965)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11164)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11363)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11562)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11761)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11960)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12159)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12358)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12557)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12756)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12955)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13154)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13353)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13552)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13751)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13950)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14149)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14348)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14547)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14746)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14945)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15144)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15343)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15542)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15741)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15940)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16139)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16338)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16537)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16736)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16935)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17134)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17333)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17532)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17731)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17930)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18129)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18328)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18527)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18726)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18925)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19124)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19323)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19522)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19721)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19920)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20119)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20318)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20517)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20716)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20915)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21114)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21313)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21512)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21711)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21910)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22109)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22308)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22507)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22706)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22905)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23104)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23303)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23502)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23701)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23900)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24099)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24298)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24497)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24696)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24895)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25094)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25293)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25492)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25691)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25890)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26089)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26288)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26487)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26686)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26885)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27084)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27283)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27482)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27681)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27880)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28079)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28278)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28477)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28676)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28875)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29074)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29273)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29472)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29671)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29870)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30069)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30268)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30467)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30666)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30865)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31064)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31263)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31462)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31661)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31860)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32059)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32258)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32457)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32656)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32855)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33054)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33253)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33452)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33651)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33850)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34049)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34248)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34447)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34646)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34845)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35044)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35243)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35442)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35641)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35840)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36039)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36238)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36437)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36636)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36835)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37034)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37233)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37432)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37631)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37830)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38029)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38228)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38427)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38626)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38825)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39024)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39223)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39422)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39621)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39820)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40019)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40218)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40417)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40616)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40815)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41014)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41213)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41412)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41611)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41810)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42009)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42208)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42407)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42606)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42805)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43004)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43203)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43402)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43601)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43800)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43999)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 0))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65515) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 0) (i32.const 65515) (i32.const 39))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 19))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 20))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65486) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65516) (i32.const 65486) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65487)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65488)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65489)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65492)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65493)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65494)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65495)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65496)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65497)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65498)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65499)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65500)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65501)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65502)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65503)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65504)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65505)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65486) (i32.const 65516) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65506) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65516) (i32.const 65506) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65507)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65508)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65509)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65510)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65511)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65512)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65513)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65514)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65506) (i32.const 65516) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65516) (i32.const 65516) (i32.const 40))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1  )
+  (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 4294963200))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19))
+
+(module
+  (memory (export "mem") 1 1 )
+  (data (i32.const 61440) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13")
+  (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32)
+    (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len)))
+  (func (export "load8_u") (param i32) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(assert_trap (invoke "run" (i32.const 65516) (i32.const 61440) (i32.const 4294967040))
+             "out of bounds memory access")
+
+(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61440)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61441)) (i32.const 1))
+(assert_return (invoke "load8_u" (i32.const 61442)) (i32.const 2))
+(assert_return (invoke "load8_u" (i32.const 61443)) (i32.const 3))
+(assert_return (invoke "load8_u" (i32.const 61444)) (i32.const 4))
+(assert_return (invoke "load8_u" (i32.const 61445)) (i32.const 5))
+(assert_return (invoke "load8_u" (i32.const 61446)) (i32.const 6))
+(assert_return (invoke "load8_u" (i32.const 61447)) (i32.const 7))
+(assert_return (invoke "load8_u" (i32.const 61448)) (i32.const 8))
+(assert_return (invoke "load8_u" (i32.const 61449)) (i32.const 9))
+(assert_return (invoke "load8_u" (i32.const 61450)) (i32.const 10))
+(assert_return (invoke "load8_u" (i32.const 61451)) (i32.const 11))
+(assert_return (invoke "load8_u" (i32.const 61452)) (i32.const 12))
+(assert_return (invoke "load8_u" (i32.const 61453)) (i32.const 13))
+(assert_return (invoke "load8_u" (i32.const 61454)) (i32.const 14))
+(assert_return (invoke "load8_u" (i32.const 61455)) (i32.const 15))
+(assert_return (invoke "load8_u" (i32.const 61456)) (i32.const 16))
+(assert_return (invoke "load8_u" (i32.const 61457)) (i32.const 17))
+(assert_return (invoke "load8_u" (i32.const 61458)) (i32.const 18))
+(assert_return (invoke "load8_u" (i32.const 61459)) (i32.const 19))
+(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0))
+(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0))
+
+(assert_invalid
+  (module
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i64.const 20) (i64.const 30))))
+  "unknown memory 0")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i32.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f32.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (i64.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.copy (f64.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.fill (i64.const 10) (i32.const 0x55) (i64.const 10))
+    (memory.copy (i64.const 9) (i64.const 10) (i64.const 5)))
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+)
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 9) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 9) (i64.const 20) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 20) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.fill (i64.const 10) (i32.const 0x55) (i64.const 10))
+    (memory.copy (i64.const 16) (i64.const 15) (i64.const 5)))
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+)
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 10) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 10) (i64.const 21) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0xFF00) (i64.const 0x8000) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0xFFFFFF00) (i64.const 0x4000) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x8000) (i64.const 0xFF00) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+ (memory i64 1 1)
+ (func (export "test")
+   (memory.copy (i64.const 0x4000) (i64.const 0xFFFFFF00) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.fill (i64.const 0x0000) (i32.const 0x55) (i64.const 0x8000))
+    (memory.fill (i64.const 0x8000) (i32.const 0xAA) (i64.const 0x8000))
+    (memory.copy (i64.const 0x9000) (i64.const 0x7000) (i64.const 0)))
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+)
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 32768) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 32768) (i64.const 65536) (i32.const 170))
+               (i64.const -1))
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x10000) (i64.const 0x7000) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x20000) (i64.const 0x7000) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x9000) (i64.const 0x10000) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x9000) (i64.const 0x20000) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x10000) (i64.const 0x10000) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.copy (i64.const 0x20000) (i64.const 0x20000) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  (func (export "test")
+    (memory.fill (i64.const 17767) (i32.const 1) (i64.const 1344))
+    (memory.fill (i64.const 39017) (i32.const 2) (i64.const 1055))
+    (memory.fill (i64.const 56401) (i32.const 3) (i64.const 988))
+    (memory.fill (i64.const 37962) (i32.const 4) (i64.const 322))
+    (memory.fill (i64.const 7977) (i32.const 5) (i64.const 1994))
+    (memory.fill (i64.const 22714) (i32.const 6) (i64.const 3036))
+    (memory.fill (i64.const 16882) (i32.const 7) (i64.const 2372))
+    (memory.fill (i64.const 43491) (i32.const 8) (i64.const 835))
+    (memory.fill (i64.const 124) (i32.const 9) (i64.const 1393))
+    (memory.fill (i64.const 2132) (i32.const 10) (i64.const 2758))
+    (memory.fill (i64.const 8987) (i32.const 11) (i64.const 3098))
+    (memory.fill (i64.const 52711) (i32.const 12) (i64.const 741))
+    (memory.fill (i64.const 3958) (i32.const 13) (i64.const 2823))
+    (memory.fill (i64.const 49715) (i32.const 14) (i64.const 1280))
+    (memory.fill (i64.const 50377) (i32.const 15) (i64.const 1466))
+    (memory.fill (i64.const 20493) (i32.const 16) (i64.const 3158))
+    (memory.fill (i64.const 47665) (i32.const 17) (i64.const 544))
+    (memory.fill (i64.const 12451) (i32.const 18) (i64.const 2669))
+    (memory.fill (i64.const 24869) (i32.const 19) (i64.const 2651))
+    (memory.fill (i64.const 45317) (i32.const 20) (i64.const 1570))
+    (memory.fill (i64.const 43096) (i32.const 21) (i64.const 1691))
+    (memory.fill (i64.const 33886) (i32.const 22) (i64.const 646))
+    (memory.fill (i64.const 48555) (i32.const 23) (i64.const 1858))
+    (memory.fill (i64.const 53453) (i32.const 24) (i64.const 2657))
+    (memory.fill (i64.const 30363) (i32.const 25) (i64.const 981))
+    (memory.fill (i64.const 9300) (i32.const 26) (i64.const 1807))
+    (memory.fill (i64.const 50190) (i32.const 27) (i64.const 487))
+    (memory.fill (i64.const 62753) (i32.const 28) (i64.const 530))
+    (memory.fill (i64.const 36316) (i32.const 29) (i64.const 943))
+    (memory.fill (i64.const 6768) (i32.const 30) (i64.const 381))
+    (memory.fill (i64.const 51262) (i32.const 31) (i64.const 3089))
+    (memory.fill (i64.const 49729) (i32.const 32) (i64.const 658))
+    (memory.fill (i64.const 44540) (i32.const 33) (i64.const 1702))
+    (memory.fill (i64.const 33342) (i32.const 34) (i64.const 1092))
+    (memory.fill (i64.const 50814) (i32.const 35) (i64.const 1410))
+    (memory.fill (i64.const 47594) (i32.const 36) (i64.const 2204))
+    (memory.fill (i64.const 54123) (i32.const 37) (i64.const 2394))
+    (memory.fill (i64.const 55183) (i32.const 38) (i64.const 250))
+    (memory.fill (i64.const 22620) (i32.const 39) (i64.const 2097))
+    (memory.fill (i64.const 17132) (i32.const 40) (i64.const 3264))
+    (memory.fill (i64.const 54331) (i32.const 41) (i64.const 3299))
+    (memory.fill (i64.const 39474) (i32.const 42) (i64.const 2796))
+    (memory.fill (i64.const 36156) (i32.const 43) (i64.const 2070))
+    (memory.fill (i64.const 35308) (i32.const 44) (i64.const 2763))
+    (memory.fill (i64.const 32731) (i32.const 45) (i64.const 312))
+    (memory.fill (i64.const 63746) (i32.const 46) (i64.const 192))
+    (memory.fill (i64.const 30974) (i32.const 47) (i64.const 596))
+    (memory.fill (i64.const 16635) (i32.const 48) (i64.const 501))
+    (memory.fill (i64.const 57002) (i32.const 49) (i64.const 686))
+    (memory.fill (i64.const 34299) (i32.const 50) (i64.const 385))
+    (memory.fill (i64.const 60881) (i32.const 51) (i64.const 903))
+    (memory.fill (i64.const 61445) (i32.const 52) (i64.const 2390))
+    (memory.fill (i64.const 46972) (i32.const 53) (i64.const 1441))
+    (memory.fill (i64.const 25973) (i32.const 54) (i64.const 3162))
+    (memory.fill (i64.const 5566) (i32.const 55) (i64.const 2135))
+    (memory.fill (i64.const 35977) (i32.const 56) (i64.const 519))
+    (memory.fill (i64.const 44892) (i32.const 57) (i64.const 3280))
+    (memory.fill (i64.const 46760) (i32.const 58) (i64.const 1678))
+    (memory.fill (i64.const 46607) (i32.const 59) (i64.const 3168))
+    (memory.fill (i64.const 22449) (i32.const 60) (i64.const 1441))
+    (memory.fill (i64.const 58609) (i32.const 61) (i64.const 663))
+    (memory.fill (i64.const 32261) (i32.const 62) (i64.const 1671))
+    (memory.fill (i64.const 3063) (i32.const 63) (i64.const 721))
+    (memory.fill (i64.const 34025) (i32.const 64) (i64.const 84))
+    (memory.fill (i64.const 33338) (i32.const 65) (i64.const 2029))
+    (memory.fill (i64.const 36810) (i32.const 66) (i64.const 29))
+    (memory.fill (i64.const 19147) (i32.const 67) (i64.const 3034))
+    (memory.fill (i64.const 12616) (i32.const 68) (i64.const 1043))
+    (memory.fill (i64.const 18276) (i32.const 69) (i64.const 3324))
+    (memory.fill (i64.const 4639) (i32.const 70) (i64.const 1091))
+    (memory.fill (i64.const 16158) (i32.const 71) (i64.const 1997))
+    (memory.fill (i64.const 18204) (i32.const 72) (i64.const 2259))
+    (memory.fill (i64.const 50532) (i32.const 73) (i64.const 3189))
+    (memory.fill (i64.const 11028) (i32.const 74) (i64.const 1968))
+    (memory.fill (i64.const 15962) (i32.const 75) (i64.const 1455))
+    (memory.fill (i64.const 45406) (i32.const 76) (i64.const 1177))
+    (memory.fill (i64.const 54137) (i32.const 77) (i64.const 1568))
+    (memory.fill (i64.const 33083) (i32.const 78) (i64.const 1642))
+    (memory.fill (i64.const 61028) (i32.const 79) (i64.const 3284))
+    (memory.fill (i64.const 51729) (i32.const 80) (i64.const 223))
+    (memory.fill (i64.const 4361) (i32.const 81) (i64.const 2171))
+    (memory.fill (i64.const 57514) (i32.const 82) (i64.const 1322))
+    (memory.fill (i64.const 55724) (i32.const 83) (i64.const 2648))
+    (memory.fill (i64.const 24091) (i32.const 84) (i64.const 1045))
+    (memory.fill (i64.const 43183) (i32.const 85) (i64.const 3097))
+    (memory.fill (i64.const 32307) (i32.const 86) (i64.const 2796))
+    (memory.fill (i64.const 3811) (i32.const 87) (i64.const 2010))
+    (memory.fill (i64.const 54856) (i32.const 88) (i64.const 0))
+    (memory.fill (i64.const 49941) (i32.const 89) (i64.const 2069))
+    (memory.fill (i64.const 20411) (i32.const 90) (i64.const 2896))
+    (memory.fill (i64.const 33826) (i32.const 91) (i64.const 192))
+    (memory.fill (i64.const 9402) (i32.const 92) (i64.const 2195))
+    (memory.fill (i64.const 12413) (i32.const 93) (i64.const 24))
+    (memory.fill (i64.const 14091) (i32.const 94) (i64.const 577))
+    (memory.fill (i64.const 44058) (i32.const 95) (i64.const 2089))
+    (memory.fill (i64.const 36735) (i32.const 96) (i64.const 3436))
+    (memory.fill (i64.const 23288) (i32.const 97) (i64.const 2765))
+    (memory.fill (i64.const 6392) (i32.const 98) (i64.const 830))
+    (memory.fill (i64.const 33307) (i32.const 99) (i64.const 1938))
+    (memory.fill (i64.const 21941) (i32.const 100) (i64.const 2750))
+    (memory.copy (i64.const 59214) (i64.const 54248) (i64.const 2098))
+    (memory.copy (i64.const 63026) (i64.const 39224) (i64.const 230))
+    (memory.copy (i64.const 51833) (i64.const 23629) (i64.const 2300))
+    (memory.copy (i64.const 6708) (i64.const 23996) (i64.const 639))
+    (memory.copy (i64.const 6990) (i64.const 33399) (i64.const 1097))
+    (memory.copy (i64.const 19403) (i64.const 10348) (i64.const 3197))
+    (memory.copy (i64.const 27308) (i64.const 54406) (i64.const 100))
+    (memory.copy (i64.const 27221) (i64.const 43682) (i64.const 1717))
+    (memory.copy (i64.const 60528) (i64.const 8629) (i64.const 119))
+    (memory.copy (i64.const 5947) (i64.const 2308) (i64.const 658))
+    (memory.copy (i64.const 4787) (i64.const 51631) (i64.const 2269))
+    (memory.copy (i64.const 12617) (i64.const 19197) (i64.const 833))
+    (memory.copy (i64.const 11854) (i64.const 46505) (i64.const 3300))
+    (memory.copy (i64.const 11376) (i64.const 45012) (i64.const 2281))
+    (memory.copy (i64.const 34186) (i64.const 6697) (i64.const 2572))
+    (memory.copy (i64.const 4936) (i64.const 1690) (i64.const 1328))
+    (memory.copy (i64.const 63164) (i64.const 7637) (i64.const 1670))
+    (memory.copy (i64.const 44568) (i64.const 18344) (i64.const 33))
+    (memory.copy (i64.const 43918) (i64.const 22348) (i64.const 1427))
+    (memory.copy (i64.const 46637) (i64.const 49819) (i64.const 1434))
+    (memory.copy (i64.const 63684) (i64.const 8755) (i64.const 834))
+    (memory.copy (i64.const 33485) (i64.const 20131) (i64.const 3317))
+    (memory.copy (i64.const 40575) (i64.const 54317) (i64.const 3201))
+    (memory.copy (i64.const 25812) (i64.const 59254) (i64.const 2452))
+    (memory.copy (i64.const 19678) (i64.const 56882) (i64.const 346))
+    (memory.copy (i64.const 15852) (i64.const 35914) (i64.const 2430))
+    (memory.copy (i64.const 11824) (i64.const 35574) (i64.const 300))
+    (memory.copy (i64.const 59427) (i64.const 13957) (i64.const 3153))
+    (memory.copy (i64.const 34299) (i64.const 60594) (i64.const 1281))
+    (memory.copy (i64.const 8964) (i64.const 12276) (i64.const 943))
+    (memory.copy (i64.const 2827) (i64.const 10425) (i64.const 1887))
+    (memory.copy (i64.const 43194) (i64.const 43910) (i64.const 738))
+    (memory.copy (i64.const 63038) (i64.const 18949) (i64.const 122))
+    (memory.copy (i64.const 24044) (i64.const 44761) (i64.const 1755))
+    (memory.copy (i64.const 22608) (i64.const 14755) (i64.const 702))
+    (memory.copy (i64.const 11284) (i64.const 26579) (i64.const 1830))
+    (memory.copy (i64.const 23092) (i64.const 20471) (i64.const 1064))
+    (memory.copy (i64.const 57248) (i64.const 54770) (i64.const 2631))
+    (memory.copy (i64.const 25492) (i64.const 1025) (i64.const 3113))
+    (memory.copy (i64.const 49588) (i64.const 44220) (i64.const 975))
+    (memory.copy (i64.const 28280) (i64.const 41722) (i64.const 2336))
+    (memory.copy (i64.const 61289) (i64.const 230) (i64.const 2872))
+    (memory.copy (i64.const 22480) (i64.const 52506) (i64.const 2197))
+    (memory.copy (i64.const 40553) (i64.const 9578) (i64.const 1958))
+    (memory.copy (i64.const 29004) (i64.const 20862) (i64.const 2186))
+    (memory.copy (i64.const 53029) (i64.const 43955) (i64.const 1037))
+    (memory.copy (i64.const 25476) (i64.const 35667) (i64.const 1650))
+    (memory.copy (i64.const 58516) (i64.const 45819) (i64.const 1986))
+    (memory.copy (i64.const 38297) (i64.const 5776) (i64.const 1955))
+    (memory.copy (i64.const 28503) (i64.const 55364) (i64.const 2368))
+    (memory.copy (i64.const 62619) (i64.const 18108) (i64.const 1356))
+    (memory.copy (i64.const 50149) (i64.const 13861) (i64.const 382))
+    (memory.copy (i64.const 16904) (i64.const 36341) (i64.const 1900))
+    (memory.copy (i64.const 48098) (i64.const 11358) (i64.const 2807))
+    (memory.copy (i64.const 28512) (i64.const 40362) (i64.const 323))
+    (memory.copy (i64.const 35506) (i64.const 27856) (i64.const 1670))
+    (memory.copy (i64.const 62970) (i64.const 53332) (i64.const 1341))
+    (memory.copy (i64.const 14133) (i64.const 46312) (i64.const 644))
+    (memory.copy (i64.const 29030) (i64.const 19074) (i64.const 496))
+    (memory.copy (i64.const 44952) (i64.const 47577) (i64.const 2784))
+    (memory.copy (i64.const 39559) (i64.const 44661) (i64.const 1350))
+    (memory.copy (i64.const 10352) (i64.const 29274) (i64.const 1475))
+    (memory.copy (i64.const 46911) (i64.const 46178) (i64.const 1467))
+    (memory.copy (i64.const 4905) (i64.const 28740) (i64.const 1895))
+    (memory.copy (i64.const 38012) (i64.const 57253) (i64.const 1751))
+    (memory.copy (i64.const 26446) (i64.const 27223) (i64.const 1127))
+    (memory.copy (i64.const 58835) (i64.const 24657) (i64.const 1063))
+    (memory.copy (i64.const 61356) (i64.const 38790) (i64.const 766))
+    (memory.copy (i64.const 44160) (i64.const 2284) (i64.const 1520))
+    (memory.copy (i64.const 32740) (i64.const 47237) (i64.const 3014))
+    (memory.copy (i64.const 11148) (i64.const 21260) (i64.const 1011))
+    (memory.copy (i64.const 7665) (i64.const 31612) (i64.const 3034))
+    (memory.copy (i64.const 18044) (i64.const 12987) (i64.const 3320))
+    (memory.copy (i64.const 57306) (i64.const 55905) (i64.const 308))
+    (memory.copy (i64.const 24675) (i64.const 16815) (i64.const 1155))
+    (memory.copy (i64.const 19900) (i64.const 10115) (i64.const 722))
+    (memory.copy (i64.const 2921) (i64.const 5935) (i64.const 2370))
+    (memory.copy (i64.const 32255) (i64.const 50095) (i64.const 2926))
+    (memory.copy (i64.const 15126) (i64.const 17299) (i64.const 2607))
+    (memory.copy (i64.const 45575) (i64.const 28447) (i64.const 2045))
+    (memory.copy (i64.const 55149) (i64.const 36113) (i64.const 2596))
+    (memory.copy (i64.const 28461) (i64.const 54157) (i64.const 1168))
+    (memory.copy (i64.const 47951) (i64.const 53385) (i64.const 3137))
+    (memory.copy (i64.const 30646) (i64.const 45155) (i64.const 2649))
+    (memory.copy (i64.const 5057) (i64.const 4295) (i64.const 52))
+    (memory.copy (i64.const 6692) (i64.const 24195) (i64.const 441))
+    (memory.copy (i64.const 32984) (i64.const 27117) (i64.const 3445))
+    (memory.copy (i64.const 32530) (i64.const 59372) (i64.const 2785))
+    (memory.copy (i64.const 34361) (i64.const 8962) (i64.const 2406))
+    (memory.copy (i64.const 17893) (i64.const 54538) (i64.const 3381))
+    (memory.copy (i64.const 22685) (i64.const 44151) (i64.const 136))
+    (memory.copy (i64.const 59089) (i64.const 7077) (i64.const 1045))
+    (memory.copy (i64.const 42945) (i64.const 55028) (i64.const 2389))
+    (memory.copy (i64.const 44693) (i64.const 20138) (i64.const 877))
+    (memory.copy (i64.const 36810) (i64.const 25196) (i64.const 3447))
+    (memory.copy (i64.const 45742) (i64.const 31888) (i64.const 854))
+    (memory.copy (i64.const 24236) (i64.const 31866) (i64.const 1377))
+    (memory.copy (i64.const 33778) (i64.const 692) (i64.const 1594))
+    (memory.copy (i64.const 60618) (i64.const 18585) (i64.const 2987))
+    (memory.copy (i64.const 50370) (i64.const 41271) (i64.const 1406))
+  )
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+)
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 124) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 124) (i64.const 1517) (i32.const 9))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 1517) (i64.const 2132) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 2132) (i64.const 2827) (i32.const 10))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 2827) (i64.const 2921) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 2921) (i64.const 3538) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 3538) (i64.const 3786) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 3786) (i64.const 4042) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 4042) (i64.const 4651) (i32.const 99))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 4651) (i64.const 5057) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 5057) (i64.const 5109) (i32.const 99))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 5109) (i64.const 5291) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 5291) (i64.const 5524) (i32.const 72))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 5524) (i64.const 5691) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 5691) (i64.const 6552) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 6552) (i64.const 7133) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 7133) (i64.const 7665) (i32.const 99))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 7665) (i64.const 8314) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 8314) (i64.const 8360) (i32.const 62))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 8360) (i64.const 8793) (i32.const 86))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 8793) (i64.const 8979) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 8979) (i64.const 9373) (i32.const 79))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 9373) (i64.const 9518) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 9518) (i64.const 9934) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 9934) (i64.const 10087) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 10087) (i64.const 10206) (i32.const 5))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 10206) (i64.const 10230) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 10230) (i64.const 10249) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 10249) (i64.const 11148) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 11148) (i64.const 11356) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 11356) (i64.const 11380) (i32.const 93))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 11380) (i64.const 11939) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 11939) (i64.const 12159) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 12159) (i64.const 12575) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 12575) (i64.const 12969) (i32.const 79))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 12969) (i64.const 13114) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 13114) (i64.const 14133) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14133) (i64.const 14404) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14404) (i64.const 14428) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14428) (i64.const 14458) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14458) (i64.const 14580) (i32.const 32))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14580) (i64.const 14777) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 14777) (i64.const 15124) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 15124) (i64.const 15126) (i32.const 36))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 15126) (i64.const 15192) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 15192) (i64.const 15871) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 15871) (i64.const 15998) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 15998) (i64.const 17017) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17017) (i64.const 17288) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17288) (i64.const 17312) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17312) (i64.const 17342) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17342) (i64.const 17464) (i32.const 32))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17464) (i64.const 17661) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17661) (i64.const 17727) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17727) (i64.const 17733) (i32.const 5))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17733) (i64.const 17893) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 17893) (i64.const 18553) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18553) (i64.const 18744) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18744) (i64.const 18801) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18801) (i64.const 18825) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18825) (i64.const 18876) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18876) (i64.const 18885) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18885) (i64.const 18904) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18904) (i64.const 19567) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 19567) (i64.const 20403) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 20403) (i64.const 21274) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21274) (i64.const 21364) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21364) (i64.const 21468) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21468) (i64.const 21492) (i32.const 93))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21492) (i64.const 22051) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22051) (i64.const 22480) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22480) (i64.const 22685) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22685) (i64.const 22694) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22694) (i64.const 22821) (i32.const 10))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22821) (i64.const 22869) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 22869) (i64.const 24107) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24107) (i64.const 24111) (i32.const 37))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24111) (i64.const 24236) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24236) (i64.const 24348) (i32.const 72))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24348) (i64.const 24515) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24515) (i64.const 24900) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 24900) (i64.const 25136) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25136) (i64.const 25182) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25182) (i64.const 25426) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25426) (i64.const 25613) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25613) (i64.const 25830) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25830) (i64.const 26446) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 26446) (i64.const 26517) (i32.const 10))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 26517) (i64.const 27468) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 27468) (i64.const 27503) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 27503) (i64.const 27573) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 27573) (i64.const 28245) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 28245) (i64.const 28280) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 28280) (i64.const 29502) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 29502) (i64.const 29629) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 29629) (i64.const 30387) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 30387) (i64.const 30646) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 30646) (i64.const 31066) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31066) (i64.const 31131) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31131) (i64.const 31322) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31322) (i64.const 31379) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31379) (i64.const 31403) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31403) (i64.const 31454) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31454) (i64.const 31463) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31463) (i64.const 31482) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31482) (i64.const 31649) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31649) (i64.const 31978) (i32.const 72))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 31978) (i64.const 32145) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 32145) (i64.const 32530) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 32530) (i64.const 32766) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 32766) (i64.const 32812) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 32812) (i64.const 33056) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 33056) (i64.const 33660) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 33660) (i64.const 33752) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 33752) (i64.const 33775) (i32.const 36))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 33775) (i64.const 33778) (i32.const 32))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 33778) (i64.const 34603) (i32.const 9))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 34603) (i64.const 35218) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35218) (i64.const 35372) (i32.const 10))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35372) (i64.const 35486) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35486) (i64.const 35605) (i32.const 5))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35605) (i64.const 35629) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35629) (i64.const 35648) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 35648) (i64.const 36547) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 36547) (i64.const 36755) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 36755) (i64.const 36767) (i32.const 93))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 36767) (i64.const 36810) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 36810) (i64.const 36839) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 36839) (i64.const 37444) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 37444) (i64.const 38060) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 38060) (i64.const 38131) (i32.const 10))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 38131) (i64.const 39082) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 39082) (i64.const 39117) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 39117) (i64.const 39187) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 39187) (i64.const 39859) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 39859) (i64.const 39894) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 39894) (i64.const 40257) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 40257) (i64.const 40344) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 40344) (i64.const 40371) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 40371) (i64.const 40804) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 40804) (i64.const 40909) (i32.const 5))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 40909) (i64.const 42259) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 42259) (i64.const 42511) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 42511) (i64.const 42945) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 42945) (i64.const 43115) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43115) (i64.const 43306) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43306) (i64.const 43363) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43363) (i64.const 43387) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43387) (i64.const 43438) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43438) (i64.const 43447) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43447) (i64.const 43466) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 43466) (i64.const 44129) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 44129) (i64.const 44958) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 44958) (i64.const 45570) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45570) (i64.const 45575) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45575) (i64.const 45640) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45640) (i64.const 45742) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45742) (i64.const 45832) (i32.const 72))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45832) (i64.const 45999) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 45999) (i64.const 46384) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 46384) (i64.const 46596) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 46596) (i64.const 46654) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 46654) (i64.const 47515) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 47515) (i64.const 47620) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 47620) (i64.const 47817) (i32.const 79))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 47817) (i64.const 47951) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 47951) (i64.const 48632) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 48632) (i64.const 48699) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 48699) (i64.const 48703) (i32.const 37))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 48703) (i64.const 49764) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 49764) (i64.const 49955) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 49955) (i64.const 50012) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50012) (i64.const 50036) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50036) (i64.const 50087) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50087) (i64.const 50096) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50096) (i64.const 50115) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50115) (i64.const 50370) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 50370) (i64.const 51358) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 51358) (i64.const 51610) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 51610) (i64.const 51776) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 51776) (i64.const 51833) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 51833) (i64.const 52895) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 52895) (i64.const 53029) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 53029) (i64.const 53244) (i32.const 68))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 53244) (i64.const 54066) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 54066) (i64.const 54133) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 54133) (i64.const 54137) (i32.const 37))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 54137) (i64.const 55198) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55198) (i64.const 55389) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55389) (i64.const 55446) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55446) (i64.const 55470) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55470) (i64.const 55521) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55521) (i64.const 55530) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55530) (i64.const 55549) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 55549) (i64.const 56212) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 56212) (i64.const 57048) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 57048) (i64.const 58183) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 58183) (i64.const 58202) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 58202) (i64.const 58516) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 58516) (i64.const 58835) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 58835) (i64.const 58855) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 58855) (i64.const 59089) (i32.const 95))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 59089) (i64.const 59145) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 59145) (i64.const 59677) (i32.const 99))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 59677) (i64.const 60134) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60134) (i64.const 60502) (i32.const 89))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60502) (i64.const 60594) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60594) (i64.const 60617) (i32.const 36))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60617) (i64.const 60618) (i32.const 32))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60618) (i64.const 60777) (i32.const 42))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60777) (i64.const 60834) (i32.const 76))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60834) (i64.const 60858) (i32.const 57))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60858) (i64.const 60909) (i32.const 59))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60909) (i64.const 60918) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60918) (i64.const 60937) (i32.const 41))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 60937) (i64.const 61600) (i32.const 83))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 61600) (i64.const 62436) (i32.const 96))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 62436) (i64.const 63307) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63307) (i64.const 63397) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63397) (i64.const 63501) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63501) (i64.const 63525) (i32.const 93))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63525) (i64.const 63605) (i32.const 74))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63605) (i64.const 63704) (i32.const 100))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63704) (i64.const 63771) (i32.const 97))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63771) (i64.const 63775) (i32.const 37))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 63775) (i64.const 64311) (i32.const 77))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 64311) (i64.const 64331) (i32.const 26))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 64331) (i64.const 64518) (i32.const 92))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 64518) (i64.const 64827) (i32.const 11))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 64827) (i64.const 64834) (i32.const 26))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 64834) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
diff --git a/test/core/memory_fill.wast b/test/core/memory_fill.wast
index 98374a158..90c6b799f 100644
--- a/test/core/memory_fill.wast
+++ b/test/core/memory_fill.wast
@@ -684,3 +684,685 @@
 
 (assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0))
                (i32.const -1))
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0xFF00) (i32.const 0x55) (i64.const 256))))
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 65280) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 65280) (i64.const 65536) (i32.const 85))
+               (i64.const -1))
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0xFF00) (i32.const 0x55) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0xFFFFFF00) (i32.const 0x55) (i64.const 257))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0x12) (i32.const 0x55) (i64.const 0))))
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0x10000) (i32.const 0x55) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0x20000) (i32.const 0x55) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+    (memory.fill (i64.const 0x1) (i32.const 0xAA) (i64.const 0xFFFE))))
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 1) (i64.const 65535) (i32.const 170))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 65535) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
+
+(module
+  (memory i64 1 1)
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "test")
+     (memory.fill (i64.const 0x12) (i32.const 0x55) (i64.const 10))
+     (memory.fill (i64.const 0x15) (i32.const 0xAA) (i64.const 4))))
+(invoke "test")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 18) (i32.const 0))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 18) (i64.const 21) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 21) (i64.const 25) (i32.const 170))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 25) (i64.const 28) (i32.const 85))
+               (i64.const -1))
+(assert_return (invoke "checkRange" (i64.const 28) (i64.const 65536) (i32.const 0))
+               (i64.const -1))
+(assert_invalid
+  (module
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i32.const 20) (i64.const 30))))
+  "unknown memory 0")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i32.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f32.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (i64.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f32.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f32.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f32.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f32.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (i64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f64.const 20) (i32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f64.const 20) (f32.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f64.const 20) (i64.const 30))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1 1)
+    (func (export "testfn")
+      (memory.fill (f64.const 10) (f64.const 20) (f64.const 30))))
+  "type mismatch")
+
+(module
+  (memory i64 1 1 )
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $val i32) (param $len i64)
+    (memory.fill (local.get $offs) (local.get $val) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65280) (i32.const 37) (i64.const 512))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1 )
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $val i32) (param $len i64)
+    (memory.fill (local.get $offs) (local.get $val) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65279) (i32.const 37) (i64.const 514))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1 )
+  
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $val i32) (param $len i64)
+    (memory.fill (local.get $offs) (local.get $val) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65279) (i32.const 37) (i64.const 4294967295))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
diff --git a/test/core/memory_init.wast b/test/core/memory_init.wast
index 672b1c501..da19ba9b9 100644
--- a/test/core/memory_init.wast
+++ b/test/core/memory_init.wast
@@ -965,3 +965,966 @@
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "")
   (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0))))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data "\02\07\01\08")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (data "\05\09\02\07\06")
+  (func (export "test")
+    (nop))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data "\02\07\01\08")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (data "\05\09\02\07\06")
+  (func (export "test")
+    (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 8))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data "\02\07\01\08")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (data "\05\09\02\07\06")
+  (func (export "test")
+    (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 9))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+
+(module
+  (memory (export "memory0") i64 1 1)
+  (data (i64.const 2) "\03\01\04\01")
+  (data "\02\07\01\08")
+  (data (i64.const 12) "\07\05\02\03\06")
+  (data "\05\09\02\07\06")
+  (func (export "test")
+    (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4))
+    (data.drop 1)
+    (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3))
+    (data.drop 3)
+    (memory.copy (i64.const 20) (i64.const 15) (i64.const 5))
+    (memory.copy (i64.const 21) (i64.const 29) (i64.const 1))
+    (memory.copy (i64.const 24) (i64.const 10) (i64.const 1))
+    (memory.copy (i64.const 13) (i64.const 11) (i64.const 4))
+    (memory.copy (i64.const 19) (i64.const 20) (i64.const 5)))
+  (func (export "load8_u") (param i64) (result i32)
+    (i32.load8_u (local.get 0))))
+
+(invoke "test")
+
+(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3))
+(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4))
+(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 1))
+(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 8))
+(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 5))
+(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2))
+(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 9))
+(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 7))
+(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 8))
+(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 8))
+(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0))
+(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0))
+(assert_invalid
+   (module
+     (func (export "test")
+       (data.drop 0)))
+   "unknown data segment")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (data.drop 4)))
+  "unknown data segment")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (data.drop 0)
+    (data.drop 0)))
+(invoke "test")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (data.drop 0)
+    (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+   (memory i64 1)
+   (data (i64.const 0) "\37")
+   (func (export "test")
+     (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(assert_invalid
+  (module
+    (func (export "test")
+      (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1))))
+  "unknown memory 0")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1))))
+  "unknown data segment 1")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1))
+    (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1))))
+(invoke "test")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 1234) (i64.const 0) (i64.const 5))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 1234) (i64.const 2) (i64.const 3))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 0xFFFE) (i64.const 1) (i64.const 3))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 1234) (i64.const 4) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 0x10001) (i64.const 0) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 0x10000) (i64.const 0) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 0x10000) (i64.const 1) (i64.const 0))))
+(invoke "test")
+
+(module
+  (memory i64 1)
+    (data "\37")
+  (func (export "test")
+    (memory.init 0 (i64.const 0x10001) (i64.const 4) (i64.const 0))))
+(assert_trap (invoke "test") "out of bounds memory access")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (i64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i32.const 1) (f64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (i64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f32.const 1) (f64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (f64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f32.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f32.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f32.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f32.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (i64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f64.const 1) (i32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f64.const 1) (f32.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f64.const 1) (i64.const 1))))
+  "type mismatch")
+
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (f64.const 1) (f64.const 1) (f64.const 1))))
+  "type mismatch")
+
+(module
+  (memory i64 1 1 )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65528) (i64.const 16))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1 )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65527) (i64.const 16))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1 )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65472) (i64.const 30))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1 1 )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65473) (i64.const 31))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1  )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 65528) (i64.const 4294967040))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+(module
+  (memory i64 1  )
+  (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42")
+   
+  (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64)
+    (loop $cont
+      (if (i64.eq (local.get $from) (local.get $to))
+        (then
+          (return (i64.const -1))))
+      (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
+        (then
+          (local.set $from (i64.add (local.get $from) (i64.const 1)))
+          (br $cont))))
+    (return (local.get $from)))
+
+  (func (export "run") (param $offs i64) (param $len i64)
+    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+
+(assert_trap (invoke "run" (i64.const 0) (i64.const 4294967292))
+              "out of bounds memory access")
+
+(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
+               (i64.const -1))
+
+(module
+  (memory i64 1)
+  ;; 65 data segments. 64 is the smallest positive number that is encoded
+  ;; differently as a signed LEB.
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
+  (data "")
+  (func (memory.init 64 (i64.const 0) (i64.const 0) (i64.const 0))))
diff --git a/test/meta/common.js b/test/meta/common.js
index 9a277e44f..493da2d47 100644
--- a/test/meta/common.js
+++ b/test/meta/common.js
@@ -7,23 +7,23 @@ function print_origin(origin) {
     print(";;");
 }
 
-function checkRangeCode() {
+function checkRangeCode(memtype) {
     return `
-  (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32)
+  (func (export "checkRange") (param $from ${memtype}) (param $to ${memtype}) (param $expected i32) (result ${memtype})
     (loop $cont
-      (if (i32.eq (local.get $from) (local.get $to))
+      (if (${memtype}.eq (local.get $from) (local.get $to))
         (then
-          (return (i32.const -1))))
+          (return (${memtype}.const -1))))
       (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected))
         (then
-          (local.set $from (i32.add (local.get $from) (i32.const 1)))
+          (local.set $from (${memtype}.add (local.get $from) (${memtype}.const 1)))
           (br $cont))))
     (return (local.get $from)))
 `;
 }
 
-function checkRange(from, to, expected) {
+function checkRange(memtype, from, to, expected) {
     print(
-`(assert_return (invoke "checkRange" (i32.const ${from}) (i32.const ${to}) (i32.const ${expected}))
-               (i32.const -1))`);
+`(assert_return (invoke "checkRange" (${memtype}.const ${from}) (${memtype}.const ${to}) (i32.const ${expected}))
+               (${memtype}.const -1))`);
 }
diff --git a/test/meta/generate_memory_copy.js b/test/meta/generate_memory_copy.js
index 36751b86a..ee4714354 100644
--- a/test/meta/generate_memory_copy.js
+++ b/test/meta/generate_memory_copy.js
@@ -3,96 +3,100 @@
 
 print_origin("generate_memory_copy.js");
 
-// In-bounds tests.
+for ( const memtype of ['i32', 'i64'] ) {
 
-function mem_test(instruction, expected_result_vector) {
-    print(
+  const decltype = memtype == 'i64' ? ' i64' : '';
+
+  // In-bounds tests.
+
+  function mem_test(instruction, expected_result_vector) {
+      print(
 `
 (module
-  (memory (export "memory0") 1 1)
-  (data (i32.const 2) "\\03\\01\\04\\01")
-  (data (i32.const 12) "\\07\\05\\02\\03\\06")
+  (memory (export "memory0")${decltype} 1 1)
+  (data (${memtype}.const 2) "\\03\\01\\04\\01")
+  (data (${memtype}.const 12) "\\07\\05\\02\\03\\06")
   (func (export "test")
     ${instruction})
-  (func (export "load8_u") (param i32) (result i32)
+  (func (export "load8_u") (param ${memtype}) (result i32)
     (i32.load8_u (local.get 0))))
 
 (invoke "test")
 `);
-    for (let i = 0; i < expected_result_vector.length; i++) {
-        print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${expected_result_vector[i]}))`);
-    }
-}
-
-const e = 0;
-
-// This just gives the initial state of the memory, with its active
-// initialisers applied.
-mem_test("(nop)",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Copy non-zero over non-zero
-mem_test("(memory.copy (i32.const 13) (i32.const 2) (i32.const 3))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Copy non-zero over zero
-mem_test("(memory.copy (i32.const 25) (i32.const 15) (i32.const 2))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]);
-
-// Copy zero over non-zero
-mem_test("(memory.copy (i32.const 13) (i32.const 25) (i32.const 3))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Copy zero over zero
-mem_test("(memory.copy (i32.const 20) (i32.const 22) (i32.const 4))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Copy zero and non-zero entries, non overlapping
-mem_test("(memory.copy (i32.const 25) (i32.const 1) (i32.const 3))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]);
-
-// Copy zero and non-zero entries, overlapping, backwards
-mem_test("(memory.copy (i32.const 10) (i32.const 12) (i32.const 7))",
-         [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Copy zero and non-zero entries, overlapping, forwards
-mem_test("(memory.copy (i32.const 12) (i32.const 10) (i32.const 7))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]);
-
-// Out-of-bounds tests.
-//
-// The operation is out of bounds of the memory for the source or target, but
-// must perform the operation up to the appropriate bound.  Major cases:
-//
-// - non-overlapping regions
-// - overlapping regions with src >= dest
-// - overlapping regions with src == dest
-// - overlapping regions with src < dest
-// - arithmetic overflow on src addresses
-// - arithmetic overflow on target addresses
-//
-// for each of those,
-//
-// - src address oob
-// - target address oob
-// - both oob
-
-function initializers(count, startingAt) {
-    let s = "";
-    for ( let i=0, j=startingAt; i < count; i++, j++ )
-        s += "\\" + (i + 256).toString(16).substring(1);
-    return s;
-}
-
-function mem_copy(min, max, shared, srcOffs, targetOffs, len) {
-    let copyDown = srcOffs < targetOffs;
-    let memLength = min * PAGESIZE;
-    let targetAvail = memLength - targetOffs;
-    let srcAvail = memLength - srcOffs;
-    let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail);
-    let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail);
-
-    print(
+      for (let i = 0; i < expected_result_vector.length; i++) {
+          print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`);
+      }
+  }
+
+  const e = 0;
+
+  // This just gives the initial state of the memory, with its active
+  // initialisers applied.
+  mem_test("(nop)",
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Copy non-zero over non-zero
+  mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 2) (${memtype}.const 3))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Copy non-zero over zero
+  mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 15) (${memtype}.const 2))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]);
+
+  // Copy zero over non-zero
+  mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 25) (${memtype}.const 3))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Copy zero over zero
+  mem_test(`(memory.copy (${memtype}.const 20) (${memtype}.const 22) (${memtype}.const 4))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Copy zero and non-zero entries, non overlapping
+  mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 1) (${memtype}.const 3))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]);
+
+  // Copy zero and non-zero entries, overlapping, backwards
+  mem_test(`(memory.copy (${memtype}.const 10) (${memtype}.const 12) (${memtype}.const 7))`,
+           [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Copy zero and non-zero entries, overlapping, forwards
+  mem_test(`(memory.copy (${memtype}.const 12) (${memtype}.const 10) (${memtype}.const 7))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]);
+
+  // Out-of-bounds tests.
+  //
+  // The operation is out of bounds of the memory for the source or target, but
+  // must perform the operation up to the appropriate bound.  Major cases:
+  //
+  // - non-overlapping regions
+  // - overlapping regions with src >= dest
+  // - overlapping regions with src == dest
+  // - overlapping regions with src < dest
+  // - arithmetic overflow on src addresses
+  // - arithmetic overflow on target addresses
+  //
+  // for each of those,
+  //
+  // - src address oob
+  // - target address oob
+  // - both oob
+
+  function initializers(count, startingAt) {
+      let s = "";
+      for ( let i=0, j=startingAt; i < count; i++, j++ )
+          s += "\\" + (i + 256).toString(16).substring(1);
+      return s;
+  }
+
+  function mem_copy(min, max, shared, srcOffs, targetOffs, len) {
+      let copyDown = srcOffs < targetOffs;
+      let memLength = min * PAGESIZE;
+      let targetAvail = memLength - targetOffs;
+      let srcAvail = memLength - srcOffs;
+      let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail);
+      let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail);
+
+      print(
 `
 (module
   (memory (export "mem") ${min} ${max} ${shared})
@@ -106,663 +110,664 @@ function mem_copy(min, max, shared, srcOffs, targetOffs, len) {
              "out of bounds memory access")
 `);
 
-    let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength);
-
-    var s = 0;
-    var i = 0;
-    let k = 0;
-    for (i=0; i < memLength; i++ ) {
-        if (i >= srcOffs && i < srcLim) {
-            print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`);
-            continue;
-        }
-        // Only spot-check for zero, or we'll be here all night.
-        if (++k == 199) {
-            print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`);
-            k = 0;
-        }
-    }
-}
-
-// OOB target address, nonoverlapping
-mem_copy(1, 1, "", 0, PAGESIZE-20, 40);
-mem_copy(1, 1, "", 0, PAGESIZE-21, 39);
-if (WITH_SHARED_MEMORY) {
-    mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40);
-    mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39);
-}
-
-// OOB source address, nonoverlapping
-mem_copy(1, 1, "", PAGESIZE-20, 0, 40);
-mem_copy(1, 1, "", PAGESIZE-21, 0, 39);
-if (WITH_SHARED_MEMORY) {
-    mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40);
-    mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39);
-}
-
-// OOB target address, overlapping, src < target
-mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40);
-
-// OOB source address, overlapping, target < src
-mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40);
-
-// OOB both, overlapping, including target == src
-mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40);
-mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40);
-mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40);
-
-// Arithmetic overflow on source address.
-mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000);
-
-// Arithmetic overflow on target adddress is an overlapping case.
-mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00);
-
-// Sundry compilation failures.
-
-// Module doesn't have a memory.
-print(
+      let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength);
+
+      var s = 0;
+      var i = 0;
+      let k = 0;
+      for (i=0; i < memLength; i++ ) {
+          if (i >= srcOffs && i < srcLim) {
+              print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`);
+              continue;
+          }
+          // Only spot-check for zero, or we'll be here all night.
+          if (++k == 199) {
+              print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`);
+              k = 0;
+          }
+      }
+  }
+
+  // OOB target address, nonoverlapping
+  mem_copy(1, 1, "", 0, PAGESIZE-20, 40);
+  mem_copy(1, 1, "", 0, PAGESIZE-21, 39);
+  if (WITH_SHARED_MEMORY) {
+      mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40);
+      mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39);
+  }
+
+  // OOB source address, nonoverlapping
+  mem_copy(1, 1, "", PAGESIZE-20, 0, 40);
+  mem_copy(1, 1, "", PAGESIZE-21, 0, 39);
+  if (WITH_SHARED_MEMORY) {
+      mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40);
+      mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39);
+  }
+
+  // OOB target address, overlapping, src < target
+  mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40);
+
+  // OOB source address, overlapping, target < src
+  mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40);
+
+  // OOB both, overlapping, including target == src
+  mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40);
+  mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40);
+  mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40);
+
+  // Arithmetic overflow on source address.
+  mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000);
+
+  // Arithmetic overflow on target adddress is an overlapping case.
+  mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00);
+
+  // Sundry compilation failures.
+
+  // Module doesn't have a memory.
+  print(
 `
 (assert_invalid
   (module
     (func (export "testfn")
-      (memory.copy (i32.const 10) (i32.const 20) (i32.const 30))))
+      (memory.copy (${memtype}.const 10) (${memtype}.const 20) (${memtype}.const 30))))
   "unknown memory 0")
 `);
 
-// Invalid argument types.  TODO: We can add anyref, funcref, etc here.
-{
-    const tys = ['i32', 'f32', 'i64', 'f64'];
-    for (let ty1 of tys) {
-    for (let ty2 of tys) {
-    for (let ty3 of tys) {
-        if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32')
-            continue;  // this is the only valid case
-        print(
+  // Invalid argument types.  TODO: We can add anyref, funcref, etc here.
+  {
+      const tys = ['i32', 'f32', 'i64', 'f64'];
+      for (let ty1 of tys) {
+      for (let ty2 of tys) {
+      for (let ty3 of tys) {
+          if (ty1 == memtype && ty2 == memtype && ty3 == memtype)
+              continue;  // this is the only valid case
+          print(
 `(assert_invalid
   (module
-    (memory 1 1)
+    (memory${decltype} 1 1)
     (func (export "testfn")
       (memory.copy (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30))))
   "type mismatch")
 `);
-    }}}
-}
+      }}}
+  }
 
-// Both ranges valid.  Copy 5 bytes backwards by 1 (overlapping).
-// result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20)
-print(
+  // Both ranges valid.  Copy 5 bytes backwards by 1 (overlapping).
+  // result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20)
+  print(
 `
 (module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10))
-    (memory.copy (i32.const 9) (i32.const 10) (i32.const 5)))
-  ${checkRangeCode()})
+    (memory.fill (${memtype}.const 10) (i32.const 0x55) (${memtype}.const 10))
+    (memory.copy (${memtype}.const 9) (${memtype}.const 10) (${memtype}.const 5)))
+  ${checkRangeCode(memtype)})
 (invoke "test")
 `);
-checkRange(0,    0+9,     0x00);
-checkRange(9,    9+11,    0x55);
-checkRange(9+11, 0x10000, 0x00);
+  checkRange(memtype, 0,    0+9,     0x00);
+  checkRange(memtype, 9,    9+11,    0x55);
+  checkRange(memtype, 9+11, 0x10000, 0x00);
 
-// Both ranges valid.  Copy 5 bytes forwards by 1 (overlapping).
-// result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19)
-print(
+  // Both ranges valid.  Copy 5 bytes forwards by 1 (overlapping).
+  // result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19)
+  print(
 `
 (module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10))
-    (memory.copy (i32.const 16) (i32.const 15) (i32.const 5)))
-  ${checkRangeCode()})
+    (memory.fill (${memtype}.const 10) (i32.const 0x55) (${memtype}.const 10))
+    (memory.copy (${memtype}.const 16) (${memtype}.const 15) (${memtype}.const 5)))
+  ${checkRangeCode(memtype)})
 (invoke "test")
 `);
-checkRange(0,     0+10,    0x00);
-checkRange(10,    10+11,   0x55);
-checkRange(10+11, 0x10000, 0x00);
+  checkRange(memtype, 0,     0+10,    0x00);
+  checkRange(memtype, 10,    10+11,   0x55);
+  checkRange(memtype, 10+11, 0x10000, 0x00);
 
-// Destination range invalid
-print(
+  // Destination range invalid
+  print(
 `
 (module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0xFF00) (i32.const 0x8000) (i32.const 257))))
+    (memory.copy (${memtype}.const 0xFF00) (${memtype}.const 0x8000) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Destination wraparound the end of 32-bit offset space
+  // Destination wraparound the end of 32-bit offset space
 print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0xFFFFFF00) (i32.const 0x4000) (i32.const 257))))
+    (memory.copy (${memtype}.const 0xFFFFFF00) (${memtype}.const 0x4000) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Source range invalid
+  // Source range invalid
 print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x8000) (i32.const 0xFF00) (i32.const 257))))
+    (memory.copy (${memtype}.const 0x8000) (${memtype}.const 0xFF00) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Source wraparound the end of 32-bit offset space
+  // Source wraparound the end of 32-bit offset space
 print(
 `(module
- (memory 1 1)
+ (memory${decltype} 1 1)
  (func (export "test")
-   (memory.copy (i32.const 0x4000) (i32.const 0xFFFFFF00) (i32.const 257))))
+   (memory.copy (${memtype}.const 0x4000) (${memtype}.const 0xFFFFFF00) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Zero len with both offsets in-bounds is a no-op
+  // Zero len with both offsets in-bounds is a no-op
 print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.fill (i32.const 0x0000) (i32.const 0x55) (i32.const 0x8000))
-    (memory.fill (i32.const 0x8000) (i32.const 0xAA) (i32.const 0x8000))
-    (memory.copy (i32.const 0x9000) (i32.const 0x7000) (i32.const 0)))
-  ${checkRangeCode()})
+    (memory.fill (${memtype}.const 0x0000) (i32.const 0x55) (${memtype}.const 0x8000))
+    (memory.fill (${memtype}.const 0x8000) (i32.const 0xAA) (${memtype}.const 0x8000))
+    (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x7000) (${memtype}.const 0)))
+  ${checkRangeCode(memtype)})
 (invoke "test")
 `);
-checkRange(0x00000, 0x08000, 0x55);
-checkRange(0x08000, 0x10000, 0xAA);
+  checkRange(memtype, 0x00000, 0x08000, 0x55);
+  checkRange(memtype, 0x08000, 0x10000, 0xAA);
 
-// Zero len with dest offset out-of-bounds at the end of memory is allowed
-print(
+  // Zero len with dest offset out-of-bounds at the end of memory is allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x10000) (i32.const 0x7000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x10000) (${memtype}.const 0x7000) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// Zero len with dest offset out-of-bounds past the end of memory is not allowed
-print(
+  // Zero len with dest offset out-of-bounds past the end of memory is not allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x20000) (i32.const 0x7000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x20000) (${memtype}.const 0x7000) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Zero len with src offset out-of-bounds at the end of memory is allowed
-print(
+  // Zero len with src offset out-of-bounds at the end of memory is allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x9000) (i32.const 0x10000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x10000) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// Zero len with src offset out-of-bounds past the end of memory is not allowed
-print(
+  // Zero len with src offset out-of-bounds past the end of memory is not allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x9000) (i32.const 0x20000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x20000) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed
-print(
+  // Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x10000) (i32.const 0x10000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x10000) (${memtype}.const 0x10000) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed
-print(
+  // Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.copy (i32.const 0x20000) (i32.const 0x20000) (i32.const 0))))
+    (memory.copy (${memtype}.const 0x20000) (${memtype}.const 0x20000) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// 100 random fills followed by 100 random copies, in a single-page buffer,
-// followed by verification of the (now heavily mashed-around) buffer.
-print(
+  // 100 random fills followed by 100 random copies, in a single-page buffer,
+  // followed by verification of the (now heavily mashed-around) buffer.
+  print(
 `(module
-  (memory 1 1)
+  (memory${decltype} 1 1)
   (func (export "test")
-    (memory.fill (i32.const 17767) (i32.const 1) (i32.const 1344))
-    (memory.fill (i32.const 39017) (i32.const 2) (i32.const 1055))
-    (memory.fill (i32.const 56401) (i32.const 3) (i32.const 988))
-    (memory.fill (i32.const 37962) (i32.const 4) (i32.const 322))
-    (memory.fill (i32.const 7977) (i32.const 5) (i32.const 1994))
-    (memory.fill (i32.const 22714) (i32.const 6) (i32.const 3036))
-    (memory.fill (i32.const 16882) (i32.const 7) (i32.const 2372))
-    (memory.fill (i32.const 43491) (i32.const 8) (i32.const 835))
-    (memory.fill (i32.const 124) (i32.const 9) (i32.const 1393))
-    (memory.fill (i32.const 2132) (i32.const 10) (i32.const 2758))
-    (memory.fill (i32.const 8987) (i32.const 11) (i32.const 3098))
-    (memory.fill (i32.const 52711) (i32.const 12) (i32.const 741))
-    (memory.fill (i32.const 3958) (i32.const 13) (i32.const 2823))
-    (memory.fill (i32.const 49715) (i32.const 14) (i32.const 1280))
-    (memory.fill (i32.const 50377) (i32.const 15) (i32.const 1466))
-    (memory.fill (i32.const 20493) (i32.const 16) (i32.const 3158))
-    (memory.fill (i32.const 47665) (i32.const 17) (i32.const 544))
-    (memory.fill (i32.const 12451) (i32.const 18) (i32.const 2669))
-    (memory.fill (i32.const 24869) (i32.const 19) (i32.const 2651))
-    (memory.fill (i32.const 45317) (i32.const 20) (i32.const 1570))
-    (memory.fill (i32.const 43096) (i32.const 21) (i32.const 1691))
-    (memory.fill (i32.const 33886) (i32.const 22) (i32.const 646))
-    (memory.fill (i32.const 48555) (i32.const 23) (i32.const 1858))
-    (memory.fill (i32.const 53453) (i32.const 24) (i32.const 2657))
-    (memory.fill (i32.const 30363) (i32.const 25) (i32.const 981))
-    (memory.fill (i32.const 9300) (i32.const 26) (i32.const 1807))
-    (memory.fill (i32.const 50190) (i32.const 27) (i32.const 487))
-    (memory.fill (i32.const 62753) (i32.const 28) (i32.const 530))
-    (memory.fill (i32.const 36316) (i32.const 29) (i32.const 943))
-    (memory.fill (i32.const 6768) (i32.const 30) (i32.const 381))
-    (memory.fill (i32.const 51262) (i32.const 31) (i32.const 3089))
-    (memory.fill (i32.const 49729) (i32.const 32) (i32.const 658))
-    (memory.fill (i32.const 44540) (i32.const 33) (i32.const 1702))
-    (memory.fill (i32.const 33342) (i32.const 34) (i32.const 1092))
-    (memory.fill (i32.const 50814) (i32.const 35) (i32.const 1410))
-    (memory.fill (i32.const 47594) (i32.const 36) (i32.const 2204))
-    (memory.fill (i32.const 54123) (i32.const 37) (i32.const 2394))
-    (memory.fill (i32.const 55183) (i32.const 38) (i32.const 250))
-    (memory.fill (i32.const 22620) (i32.const 39) (i32.const 2097))
-    (memory.fill (i32.const 17132) (i32.const 40) (i32.const 3264))
-    (memory.fill (i32.const 54331) (i32.const 41) (i32.const 3299))
-    (memory.fill (i32.const 39474) (i32.const 42) (i32.const 2796))
-    (memory.fill (i32.const 36156) (i32.const 43) (i32.const 2070))
-    (memory.fill (i32.const 35308) (i32.const 44) (i32.const 2763))
-    (memory.fill (i32.const 32731) (i32.const 45) (i32.const 312))
-    (memory.fill (i32.const 63746) (i32.const 46) (i32.const 192))
-    (memory.fill (i32.const 30974) (i32.const 47) (i32.const 596))
-    (memory.fill (i32.const 16635) (i32.const 48) (i32.const 501))
-    (memory.fill (i32.const 57002) (i32.const 49) (i32.const 686))
-    (memory.fill (i32.const 34299) (i32.const 50) (i32.const 385))
-    (memory.fill (i32.const 60881) (i32.const 51) (i32.const 903))
-    (memory.fill (i32.const 61445) (i32.const 52) (i32.const 2390))
-    (memory.fill (i32.const 46972) (i32.const 53) (i32.const 1441))
-    (memory.fill (i32.const 25973) (i32.const 54) (i32.const 3162))
-    (memory.fill (i32.const 5566) (i32.const 55) (i32.const 2135))
-    (memory.fill (i32.const 35977) (i32.const 56) (i32.const 519))
-    (memory.fill (i32.const 44892) (i32.const 57) (i32.const 3280))
-    (memory.fill (i32.const 46760) (i32.const 58) (i32.const 1678))
-    (memory.fill (i32.const 46607) (i32.const 59) (i32.const 3168))
-    (memory.fill (i32.const 22449) (i32.const 60) (i32.const 1441))
-    (memory.fill (i32.const 58609) (i32.const 61) (i32.const 663))
-    (memory.fill (i32.const 32261) (i32.const 62) (i32.const 1671))
-    (memory.fill (i32.const 3063) (i32.const 63) (i32.const 721))
-    (memory.fill (i32.const 34025) (i32.const 64) (i32.const 84))
-    (memory.fill (i32.const 33338) (i32.const 65) (i32.const 2029))
-    (memory.fill (i32.const 36810) (i32.const 66) (i32.const 29))
-    (memory.fill (i32.const 19147) (i32.const 67) (i32.const 3034))
-    (memory.fill (i32.const 12616) (i32.const 68) (i32.const 1043))
-    (memory.fill (i32.const 18276) (i32.const 69) (i32.const 3324))
-    (memory.fill (i32.const 4639) (i32.const 70) (i32.const 1091))
-    (memory.fill (i32.const 16158) (i32.const 71) (i32.const 1997))
-    (memory.fill (i32.const 18204) (i32.const 72) (i32.const 2259))
-    (memory.fill (i32.const 50532) (i32.const 73) (i32.const 3189))
-    (memory.fill (i32.const 11028) (i32.const 74) (i32.const 1968))
-    (memory.fill (i32.const 15962) (i32.const 75) (i32.const 1455))
-    (memory.fill (i32.const 45406) (i32.const 76) (i32.const 1177))
-    (memory.fill (i32.const 54137) (i32.const 77) (i32.const 1568))
-    (memory.fill (i32.const 33083) (i32.const 78) (i32.const 1642))
-    (memory.fill (i32.const 61028) (i32.const 79) (i32.const 3284))
-    (memory.fill (i32.const 51729) (i32.const 80) (i32.const 223))
-    (memory.fill (i32.const 4361) (i32.const 81) (i32.const 2171))
-    (memory.fill (i32.const 57514) (i32.const 82) (i32.const 1322))
-    (memory.fill (i32.const 55724) (i32.const 83) (i32.const 2648))
-    (memory.fill (i32.const 24091) (i32.const 84) (i32.const 1045))
-    (memory.fill (i32.const 43183) (i32.const 85) (i32.const 3097))
-    (memory.fill (i32.const 32307) (i32.const 86) (i32.const 2796))
-    (memory.fill (i32.const 3811) (i32.const 87) (i32.const 2010))
-    (memory.fill (i32.const 54856) (i32.const 88) (i32.const 0))
-    (memory.fill (i32.const 49941) (i32.const 89) (i32.const 2069))
-    (memory.fill (i32.const 20411) (i32.const 90) (i32.const 2896))
-    (memory.fill (i32.const 33826) (i32.const 91) (i32.const 192))
-    (memory.fill (i32.const 9402) (i32.const 92) (i32.const 2195))
-    (memory.fill (i32.const 12413) (i32.const 93) (i32.const 24))
-    (memory.fill (i32.const 14091) (i32.const 94) (i32.const 577))
-    (memory.fill (i32.const 44058) (i32.const 95) (i32.const 2089))
-    (memory.fill (i32.const 36735) (i32.const 96) (i32.const 3436))
-    (memory.fill (i32.const 23288) (i32.const 97) (i32.const 2765))
-    (memory.fill (i32.const 6392) (i32.const 98) (i32.const 830))
-    (memory.fill (i32.const 33307) (i32.const 99) (i32.const 1938))
-    (memory.fill (i32.const 21941) (i32.const 100) (i32.const 2750))
-    (memory.copy (i32.const 59214) (i32.const 54248) (i32.const 2098))
-    (memory.copy (i32.const 63026) (i32.const 39224) (i32.const 230))
-    (memory.copy (i32.const 51833) (i32.const 23629) (i32.const 2300))
-    (memory.copy (i32.const 6708) (i32.const 23996) (i32.const 639))
-    (memory.copy (i32.const 6990) (i32.const 33399) (i32.const 1097))
-    (memory.copy (i32.const 19403) (i32.const 10348) (i32.const 3197))
-    (memory.copy (i32.const 27308) (i32.const 54406) (i32.const 100))
-    (memory.copy (i32.const 27221) (i32.const 43682) (i32.const 1717))
-    (memory.copy (i32.const 60528) (i32.const 8629) (i32.const 119))
-    (memory.copy (i32.const 5947) (i32.const 2308) (i32.const 658))
-    (memory.copy (i32.const 4787) (i32.const 51631) (i32.const 2269))
-    (memory.copy (i32.const 12617) (i32.const 19197) (i32.const 833))
-    (memory.copy (i32.const 11854) (i32.const 46505) (i32.const 3300))
-    (memory.copy (i32.const 11376) (i32.const 45012) (i32.const 2281))
-    (memory.copy (i32.const 34186) (i32.const 6697) (i32.const 2572))
-    (memory.copy (i32.const 4936) (i32.const 1690) (i32.const 1328))
-    (memory.copy (i32.const 63164) (i32.const 7637) (i32.const 1670))
-    (memory.copy (i32.const 44568) (i32.const 18344) (i32.const 33))
-    (memory.copy (i32.const 43918) (i32.const 22348) (i32.const 1427))
-    (memory.copy (i32.const 46637) (i32.const 49819) (i32.const 1434))
-    (memory.copy (i32.const 63684) (i32.const 8755) (i32.const 834))
-    (memory.copy (i32.const 33485) (i32.const 20131) (i32.const 3317))
-    (memory.copy (i32.const 40575) (i32.const 54317) (i32.const 3201))
-    (memory.copy (i32.const 25812) (i32.const 59254) (i32.const 2452))
-    (memory.copy (i32.const 19678) (i32.const 56882) (i32.const 346))
-    (memory.copy (i32.const 15852) (i32.const 35914) (i32.const 2430))
-    (memory.copy (i32.const 11824) (i32.const 35574) (i32.const 300))
-    (memory.copy (i32.const 59427) (i32.const 13957) (i32.const 3153))
-    (memory.copy (i32.const 34299) (i32.const 60594) (i32.const 1281))
-    (memory.copy (i32.const 8964) (i32.const 12276) (i32.const 943))
-    (memory.copy (i32.const 2827) (i32.const 10425) (i32.const 1887))
-    (memory.copy (i32.const 43194) (i32.const 43910) (i32.const 738))
-    (memory.copy (i32.const 63038) (i32.const 18949) (i32.const 122))
-    (memory.copy (i32.const 24044) (i32.const 44761) (i32.const 1755))
-    (memory.copy (i32.const 22608) (i32.const 14755) (i32.const 702))
-    (memory.copy (i32.const 11284) (i32.const 26579) (i32.const 1830))
-    (memory.copy (i32.const 23092) (i32.const 20471) (i32.const 1064))
-    (memory.copy (i32.const 57248) (i32.const 54770) (i32.const 2631))
-    (memory.copy (i32.const 25492) (i32.const 1025) (i32.const 3113))
-    (memory.copy (i32.const 49588) (i32.const 44220) (i32.const 975))
-    (memory.copy (i32.const 28280) (i32.const 41722) (i32.const 2336))
-    (memory.copy (i32.const 61289) (i32.const 230) (i32.const 2872))
-    (memory.copy (i32.const 22480) (i32.const 52506) (i32.const 2197))
-    (memory.copy (i32.const 40553) (i32.const 9578) (i32.const 1958))
-    (memory.copy (i32.const 29004) (i32.const 20862) (i32.const 2186))
-    (memory.copy (i32.const 53029) (i32.const 43955) (i32.const 1037))
-    (memory.copy (i32.const 25476) (i32.const 35667) (i32.const 1650))
-    (memory.copy (i32.const 58516) (i32.const 45819) (i32.const 1986))
-    (memory.copy (i32.const 38297) (i32.const 5776) (i32.const 1955))
-    (memory.copy (i32.const 28503) (i32.const 55364) (i32.const 2368))
-    (memory.copy (i32.const 62619) (i32.const 18108) (i32.const 1356))
-    (memory.copy (i32.const 50149) (i32.const 13861) (i32.const 382))
-    (memory.copy (i32.const 16904) (i32.const 36341) (i32.const 1900))
-    (memory.copy (i32.const 48098) (i32.const 11358) (i32.const 2807))
-    (memory.copy (i32.const 28512) (i32.const 40362) (i32.const 323))
-    (memory.copy (i32.const 35506) (i32.const 27856) (i32.const 1670))
-    (memory.copy (i32.const 62970) (i32.const 53332) (i32.const 1341))
-    (memory.copy (i32.const 14133) (i32.const 46312) (i32.const 644))
-    (memory.copy (i32.const 29030) (i32.const 19074) (i32.const 496))
-    (memory.copy (i32.const 44952) (i32.const 47577) (i32.const 2784))
-    (memory.copy (i32.const 39559) (i32.const 44661) (i32.const 1350))
-    (memory.copy (i32.const 10352) (i32.const 29274) (i32.const 1475))
-    (memory.copy (i32.const 46911) (i32.const 46178) (i32.const 1467))
-    (memory.copy (i32.const 4905) (i32.const 28740) (i32.const 1895))
-    (memory.copy (i32.const 38012) (i32.const 57253) (i32.const 1751))
-    (memory.copy (i32.const 26446) (i32.const 27223) (i32.const 1127))
-    (memory.copy (i32.const 58835) (i32.const 24657) (i32.const 1063))
-    (memory.copy (i32.const 61356) (i32.const 38790) (i32.const 766))
-    (memory.copy (i32.const 44160) (i32.const 2284) (i32.const 1520))
-    (memory.copy (i32.const 32740) (i32.const 47237) (i32.const 3014))
-    (memory.copy (i32.const 11148) (i32.const 21260) (i32.const 1011))
-    (memory.copy (i32.const 7665) (i32.const 31612) (i32.const 3034))
-    (memory.copy (i32.const 18044) (i32.const 12987) (i32.const 3320))
-    (memory.copy (i32.const 57306) (i32.const 55905) (i32.const 308))
-    (memory.copy (i32.const 24675) (i32.const 16815) (i32.const 1155))
-    (memory.copy (i32.const 19900) (i32.const 10115) (i32.const 722))
-    (memory.copy (i32.const 2921) (i32.const 5935) (i32.const 2370))
-    (memory.copy (i32.const 32255) (i32.const 50095) (i32.const 2926))
-    (memory.copy (i32.const 15126) (i32.const 17299) (i32.const 2607))
-    (memory.copy (i32.const 45575) (i32.const 28447) (i32.const 2045))
-    (memory.copy (i32.const 55149) (i32.const 36113) (i32.const 2596))
-    (memory.copy (i32.const 28461) (i32.const 54157) (i32.const 1168))
-    (memory.copy (i32.const 47951) (i32.const 53385) (i32.const 3137))
-    (memory.copy (i32.const 30646) (i32.const 45155) (i32.const 2649))
-    (memory.copy (i32.const 5057) (i32.const 4295) (i32.const 52))
-    (memory.copy (i32.const 6692) (i32.const 24195) (i32.const 441))
-    (memory.copy (i32.const 32984) (i32.const 27117) (i32.const 3445))
-    (memory.copy (i32.const 32530) (i32.const 59372) (i32.const 2785))
-    (memory.copy (i32.const 34361) (i32.const 8962) (i32.const 2406))
-    (memory.copy (i32.const 17893) (i32.const 54538) (i32.const 3381))
-    (memory.copy (i32.const 22685) (i32.const 44151) (i32.const 136))
-    (memory.copy (i32.const 59089) (i32.const 7077) (i32.const 1045))
-    (memory.copy (i32.const 42945) (i32.const 55028) (i32.const 2389))
-    (memory.copy (i32.const 44693) (i32.const 20138) (i32.const 877))
-    (memory.copy (i32.const 36810) (i32.const 25196) (i32.const 3447))
-    (memory.copy (i32.const 45742) (i32.const 31888) (i32.const 854))
-    (memory.copy (i32.const 24236) (i32.const 31866) (i32.const 1377))
-    (memory.copy (i32.const 33778) (i32.const 692) (i32.const 1594))
-    (memory.copy (i32.const 60618) (i32.const 18585) (i32.const 2987))
-    (memory.copy (i32.const 50370) (i32.const 41271) (i32.const 1406))
+    (memory.fill (${memtype}.const 17767) (i32.const 1) (${memtype}.const 1344))
+    (memory.fill (${memtype}.const 39017) (i32.const 2) (${memtype}.const 1055))
+    (memory.fill (${memtype}.const 56401) (i32.const 3) (${memtype}.const 988))
+    (memory.fill (${memtype}.const 37962) (i32.const 4) (${memtype}.const 322))
+    (memory.fill (${memtype}.const 7977) (i32.const 5) (${memtype}.const 1994))
+    (memory.fill (${memtype}.const 22714) (i32.const 6) (${memtype}.const 3036))
+    (memory.fill (${memtype}.const 16882) (i32.const 7) (${memtype}.const 2372))
+    (memory.fill (${memtype}.const 43491) (i32.const 8) (${memtype}.const 835))
+    (memory.fill (${memtype}.const 124) (i32.const 9) (${memtype}.const 1393))
+    (memory.fill (${memtype}.const 2132) (i32.const 10) (${memtype}.const 2758))
+    (memory.fill (${memtype}.const 8987) (i32.const 11) (${memtype}.const 3098))
+    (memory.fill (${memtype}.const 52711) (i32.const 12) (${memtype}.const 741))
+    (memory.fill (${memtype}.const 3958) (i32.const 13) (${memtype}.const 2823))
+    (memory.fill (${memtype}.const 49715) (i32.const 14) (${memtype}.const 1280))
+    (memory.fill (${memtype}.const 50377) (i32.const 15) (${memtype}.const 1466))
+    (memory.fill (${memtype}.const 20493) (i32.const 16) (${memtype}.const 3158))
+    (memory.fill (${memtype}.const 47665) (i32.const 17) (${memtype}.const 544))
+    (memory.fill (${memtype}.const 12451) (i32.const 18) (${memtype}.const 2669))
+    (memory.fill (${memtype}.const 24869) (i32.const 19) (${memtype}.const 2651))
+    (memory.fill (${memtype}.const 45317) (i32.const 20) (${memtype}.const 1570))
+    (memory.fill (${memtype}.const 43096) (i32.const 21) (${memtype}.const 1691))
+    (memory.fill (${memtype}.const 33886) (i32.const 22) (${memtype}.const 646))
+    (memory.fill (${memtype}.const 48555) (i32.const 23) (${memtype}.const 1858))
+    (memory.fill (${memtype}.const 53453) (i32.const 24) (${memtype}.const 2657))
+    (memory.fill (${memtype}.const 30363) (i32.const 25) (${memtype}.const 981))
+    (memory.fill (${memtype}.const 9300) (i32.const 26) (${memtype}.const 1807))
+    (memory.fill (${memtype}.const 50190) (i32.const 27) (${memtype}.const 487))
+    (memory.fill (${memtype}.const 62753) (i32.const 28) (${memtype}.const 530))
+    (memory.fill (${memtype}.const 36316) (i32.const 29) (${memtype}.const 943))
+    (memory.fill (${memtype}.const 6768) (i32.const 30) (${memtype}.const 381))
+    (memory.fill (${memtype}.const 51262) (i32.const 31) (${memtype}.const 3089))
+    (memory.fill (${memtype}.const 49729) (i32.const 32) (${memtype}.const 658))
+    (memory.fill (${memtype}.const 44540) (i32.const 33) (${memtype}.const 1702))
+    (memory.fill (${memtype}.const 33342) (i32.const 34) (${memtype}.const 1092))
+    (memory.fill (${memtype}.const 50814) (i32.const 35) (${memtype}.const 1410))
+    (memory.fill (${memtype}.const 47594) (i32.const 36) (${memtype}.const 2204))
+    (memory.fill (${memtype}.const 54123) (i32.const 37) (${memtype}.const 2394))
+    (memory.fill (${memtype}.const 55183) (i32.const 38) (${memtype}.const 250))
+    (memory.fill (${memtype}.const 22620) (i32.const 39) (${memtype}.const 2097))
+    (memory.fill (${memtype}.const 17132) (i32.const 40) (${memtype}.const 3264))
+    (memory.fill (${memtype}.const 54331) (i32.const 41) (${memtype}.const 3299))
+    (memory.fill (${memtype}.const 39474) (i32.const 42) (${memtype}.const 2796))
+    (memory.fill (${memtype}.const 36156) (i32.const 43) (${memtype}.const 2070))
+    (memory.fill (${memtype}.const 35308) (i32.const 44) (${memtype}.const 2763))
+    (memory.fill (${memtype}.const 32731) (i32.const 45) (${memtype}.const 312))
+    (memory.fill (${memtype}.const 63746) (i32.const 46) (${memtype}.const 192))
+    (memory.fill (${memtype}.const 30974) (i32.const 47) (${memtype}.const 596))
+    (memory.fill (${memtype}.const 16635) (i32.const 48) (${memtype}.const 501))
+    (memory.fill (${memtype}.const 57002) (i32.const 49) (${memtype}.const 686))
+    (memory.fill (${memtype}.const 34299) (i32.const 50) (${memtype}.const 385))
+    (memory.fill (${memtype}.const 60881) (i32.const 51) (${memtype}.const 903))
+    (memory.fill (${memtype}.const 61445) (i32.const 52) (${memtype}.const 2390))
+    (memory.fill (${memtype}.const 46972) (i32.const 53) (${memtype}.const 1441))
+    (memory.fill (${memtype}.const 25973) (i32.const 54) (${memtype}.const 3162))
+    (memory.fill (${memtype}.const 5566) (i32.const 55) (${memtype}.const 2135))
+    (memory.fill (${memtype}.const 35977) (i32.const 56) (${memtype}.const 519))
+    (memory.fill (${memtype}.const 44892) (i32.const 57) (${memtype}.const 3280))
+    (memory.fill (${memtype}.const 46760) (i32.const 58) (${memtype}.const 1678))
+    (memory.fill (${memtype}.const 46607) (i32.const 59) (${memtype}.const 3168))
+    (memory.fill (${memtype}.const 22449) (i32.const 60) (${memtype}.const 1441))
+    (memory.fill (${memtype}.const 58609) (i32.const 61) (${memtype}.const 663))
+    (memory.fill (${memtype}.const 32261) (i32.const 62) (${memtype}.const 1671))
+    (memory.fill (${memtype}.const 3063) (i32.const 63) (${memtype}.const 721))
+    (memory.fill (${memtype}.const 34025) (i32.const 64) (${memtype}.const 84))
+    (memory.fill (${memtype}.const 33338) (i32.const 65) (${memtype}.const 2029))
+    (memory.fill (${memtype}.const 36810) (i32.const 66) (${memtype}.const 29))
+    (memory.fill (${memtype}.const 19147) (i32.const 67) (${memtype}.const 3034))
+    (memory.fill (${memtype}.const 12616) (i32.const 68) (${memtype}.const 1043))
+    (memory.fill (${memtype}.const 18276) (i32.const 69) (${memtype}.const 3324))
+    (memory.fill (${memtype}.const 4639) (i32.const 70) (${memtype}.const 1091))
+    (memory.fill (${memtype}.const 16158) (i32.const 71) (${memtype}.const 1997))
+    (memory.fill (${memtype}.const 18204) (i32.const 72) (${memtype}.const 2259))
+    (memory.fill (${memtype}.const 50532) (i32.const 73) (${memtype}.const 3189))
+    (memory.fill (${memtype}.const 11028) (i32.const 74) (${memtype}.const 1968))
+    (memory.fill (${memtype}.const 15962) (i32.const 75) (${memtype}.const 1455))
+    (memory.fill (${memtype}.const 45406) (i32.const 76) (${memtype}.const 1177))
+    (memory.fill (${memtype}.const 54137) (i32.const 77) (${memtype}.const 1568))
+    (memory.fill (${memtype}.const 33083) (i32.const 78) (${memtype}.const 1642))
+    (memory.fill (${memtype}.const 61028) (i32.const 79) (${memtype}.const 3284))
+    (memory.fill (${memtype}.const 51729) (i32.const 80) (${memtype}.const 223))
+    (memory.fill (${memtype}.const 4361) (i32.const 81) (${memtype}.const 2171))
+    (memory.fill (${memtype}.const 57514) (i32.const 82) (${memtype}.const 1322))
+    (memory.fill (${memtype}.const 55724) (i32.const 83) (${memtype}.const 2648))
+    (memory.fill (${memtype}.const 24091) (i32.const 84) (${memtype}.const 1045))
+    (memory.fill (${memtype}.const 43183) (i32.const 85) (${memtype}.const 3097))
+    (memory.fill (${memtype}.const 32307) (i32.const 86) (${memtype}.const 2796))
+    (memory.fill (${memtype}.const 3811) (i32.const 87) (${memtype}.const 2010))
+    (memory.fill (${memtype}.const 54856) (i32.const 88) (${memtype}.const 0))
+    (memory.fill (${memtype}.const 49941) (i32.const 89) (${memtype}.const 2069))
+    (memory.fill (${memtype}.const 20411) (i32.const 90) (${memtype}.const 2896))
+    (memory.fill (${memtype}.const 33826) (i32.const 91) (${memtype}.const 192))
+    (memory.fill (${memtype}.const 9402) (i32.const 92) (${memtype}.const 2195))
+    (memory.fill (${memtype}.const 12413) (i32.const 93) (${memtype}.const 24))
+    (memory.fill (${memtype}.const 14091) (i32.const 94) (${memtype}.const 577))
+    (memory.fill (${memtype}.const 44058) (i32.const 95) (${memtype}.const 2089))
+    (memory.fill (${memtype}.const 36735) (i32.const 96) (${memtype}.const 3436))
+    (memory.fill (${memtype}.const 23288) (i32.const 97) (${memtype}.const 2765))
+    (memory.fill (${memtype}.const 6392) (i32.const 98) (${memtype}.const 830))
+    (memory.fill (${memtype}.const 33307) (i32.const 99) (${memtype}.const 1938))
+    (memory.fill (${memtype}.const 21941) (i32.const 100) (${memtype}.const 2750))
+    (memory.copy (${memtype}.const 59214) (${memtype}.const 54248) (${memtype}.const 2098))
+    (memory.copy (${memtype}.const 63026) (${memtype}.const 39224) (${memtype}.const 230))
+    (memory.copy (${memtype}.const 51833) (${memtype}.const 23629) (${memtype}.const 2300))
+    (memory.copy (${memtype}.const 6708) (${memtype}.const 23996) (${memtype}.const 639))
+    (memory.copy (${memtype}.const 6990) (${memtype}.const 33399) (${memtype}.const 1097))
+    (memory.copy (${memtype}.const 19403) (${memtype}.const 10348) (${memtype}.const 3197))
+    (memory.copy (${memtype}.const 27308) (${memtype}.const 54406) (${memtype}.const 100))
+    (memory.copy (${memtype}.const 27221) (${memtype}.const 43682) (${memtype}.const 1717))
+    (memory.copy (${memtype}.const 60528) (${memtype}.const 8629) (${memtype}.const 119))
+    (memory.copy (${memtype}.const 5947) (${memtype}.const 2308) (${memtype}.const 658))
+    (memory.copy (${memtype}.const 4787) (${memtype}.const 51631) (${memtype}.const 2269))
+    (memory.copy (${memtype}.const 12617) (${memtype}.const 19197) (${memtype}.const 833))
+    (memory.copy (${memtype}.const 11854) (${memtype}.const 46505) (${memtype}.const 3300))
+    (memory.copy (${memtype}.const 11376) (${memtype}.const 45012) (${memtype}.const 2281))
+    (memory.copy (${memtype}.const 34186) (${memtype}.const 6697) (${memtype}.const 2572))
+    (memory.copy (${memtype}.const 4936) (${memtype}.const 1690) (${memtype}.const 1328))
+    (memory.copy (${memtype}.const 63164) (${memtype}.const 7637) (${memtype}.const 1670))
+    (memory.copy (${memtype}.const 44568) (${memtype}.const 18344) (${memtype}.const 33))
+    (memory.copy (${memtype}.const 43918) (${memtype}.const 22348) (${memtype}.const 1427))
+    (memory.copy (${memtype}.const 46637) (${memtype}.const 49819) (${memtype}.const 1434))
+    (memory.copy (${memtype}.const 63684) (${memtype}.const 8755) (${memtype}.const 834))
+    (memory.copy (${memtype}.const 33485) (${memtype}.const 20131) (${memtype}.const 3317))
+    (memory.copy (${memtype}.const 40575) (${memtype}.const 54317) (${memtype}.const 3201))
+    (memory.copy (${memtype}.const 25812) (${memtype}.const 59254) (${memtype}.const 2452))
+    (memory.copy (${memtype}.const 19678) (${memtype}.const 56882) (${memtype}.const 346))
+    (memory.copy (${memtype}.const 15852) (${memtype}.const 35914) (${memtype}.const 2430))
+    (memory.copy (${memtype}.const 11824) (${memtype}.const 35574) (${memtype}.const 300))
+    (memory.copy (${memtype}.const 59427) (${memtype}.const 13957) (${memtype}.const 3153))
+    (memory.copy (${memtype}.const 34299) (${memtype}.const 60594) (${memtype}.const 1281))
+    (memory.copy (${memtype}.const 8964) (${memtype}.const 12276) (${memtype}.const 943))
+    (memory.copy (${memtype}.const 2827) (${memtype}.const 10425) (${memtype}.const 1887))
+    (memory.copy (${memtype}.const 43194) (${memtype}.const 43910) (${memtype}.const 738))
+    (memory.copy (${memtype}.const 63038) (${memtype}.const 18949) (${memtype}.const 122))
+    (memory.copy (${memtype}.const 24044) (${memtype}.const 44761) (${memtype}.const 1755))
+    (memory.copy (${memtype}.const 22608) (${memtype}.const 14755) (${memtype}.const 702))
+    (memory.copy (${memtype}.const 11284) (${memtype}.const 26579) (${memtype}.const 1830))
+    (memory.copy (${memtype}.const 23092) (${memtype}.const 20471) (${memtype}.const 1064))
+    (memory.copy (${memtype}.const 57248) (${memtype}.const 54770) (${memtype}.const 2631))
+    (memory.copy (${memtype}.const 25492) (${memtype}.const 1025) (${memtype}.const 3113))
+    (memory.copy (${memtype}.const 49588) (${memtype}.const 44220) (${memtype}.const 975))
+    (memory.copy (${memtype}.const 28280) (${memtype}.const 41722) (${memtype}.const 2336))
+    (memory.copy (${memtype}.const 61289) (${memtype}.const 230) (${memtype}.const 2872))
+    (memory.copy (${memtype}.const 22480) (${memtype}.const 52506) (${memtype}.const 2197))
+    (memory.copy (${memtype}.const 40553) (${memtype}.const 9578) (${memtype}.const 1958))
+    (memory.copy (${memtype}.const 29004) (${memtype}.const 20862) (${memtype}.const 2186))
+    (memory.copy (${memtype}.const 53029) (${memtype}.const 43955) (${memtype}.const 1037))
+    (memory.copy (${memtype}.const 25476) (${memtype}.const 35667) (${memtype}.const 1650))
+    (memory.copy (${memtype}.const 58516) (${memtype}.const 45819) (${memtype}.const 1986))
+    (memory.copy (${memtype}.const 38297) (${memtype}.const 5776) (${memtype}.const 1955))
+    (memory.copy (${memtype}.const 28503) (${memtype}.const 55364) (${memtype}.const 2368))
+    (memory.copy (${memtype}.const 62619) (${memtype}.const 18108) (${memtype}.const 1356))
+    (memory.copy (${memtype}.const 50149) (${memtype}.const 13861) (${memtype}.const 382))
+    (memory.copy (${memtype}.const 16904) (${memtype}.const 36341) (${memtype}.const 1900))
+    (memory.copy (${memtype}.const 48098) (${memtype}.const 11358) (${memtype}.const 2807))
+    (memory.copy (${memtype}.const 28512) (${memtype}.const 40362) (${memtype}.const 323))
+    (memory.copy (${memtype}.const 35506) (${memtype}.const 27856) (${memtype}.const 1670))
+    (memory.copy (${memtype}.const 62970) (${memtype}.const 53332) (${memtype}.const 1341))
+    (memory.copy (${memtype}.const 14133) (${memtype}.const 46312) (${memtype}.const 644))
+    (memory.copy (${memtype}.const 29030) (${memtype}.const 19074) (${memtype}.const 496))
+    (memory.copy (${memtype}.const 44952) (${memtype}.const 47577) (${memtype}.const 2784))
+    (memory.copy (${memtype}.const 39559) (${memtype}.const 44661) (${memtype}.const 1350))
+    (memory.copy (${memtype}.const 10352) (${memtype}.const 29274) (${memtype}.const 1475))
+    (memory.copy (${memtype}.const 46911) (${memtype}.const 46178) (${memtype}.const 1467))
+    (memory.copy (${memtype}.const 4905) (${memtype}.const 28740) (${memtype}.const 1895))
+    (memory.copy (${memtype}.const 38012) (${memtype}.const 57253) (${memtype}.const 1751))
+    (memory.copy (${memtype}.const 26446) (${memtype}.const 27223) (${memtype}.const 1127))
+    (memory.copy (${memtype}.const 58835) (${memtype}.const 24657) (${memtype}.const 1063))
+    (memory.copy (${memtype}.const 61356) (${memtype}.const 38790) (${memtype}.const 766))
+    (memory.copy (${memtype}.const 44160) (${memtype}.const 2284) (${memtype}.const 1520))
+    (memory.copy (${memtype}.const 32740) (${memtype}.const 47237) (${memtype}.const 3014))
+    (memory.copy (${memtype}.const 11148) (${memtype}.const 21260) (${memtype}.const 1011))
+    (memory.copy (${memtype}.const 7665) (${memtype}.const 31612) (${memtype}.const 3034))
+    (memory.copy (${memtype}.const 18044) (${memtype}.const 12987) (${memtype}.const 3320))
+    (memory.copy (${memtype}.const 57306) (${memtype}.const 55905) (${memtype}.const 308))
+    (memory.copy (${memtype}.const 24675) (${memtype}.const 16815) (${memtype}.const 1155))
+    (memory.copy (${memtype}.const 19900) (${memtype}.const 10115) (${memtype}.const 722))
+    (memory.copy (${memtype}.const 2921) (${memtype}.const 5935) (${memtype}.const 2370))
+    (memory.copy (${memtype}.const 32255) (${memtype}.const 50095) (${memtype}.const 2926))
+    (memory.copy (${memtype}.const 15126) (${memtype}.const 17299) (${memtype}.const 2607))
+    (memory.copy (${memtype}.const 45575) (${memtype}.const 28447) (${memtype}.const 2045))
+    (memory.copy (${memtype}.const 55149) (${memtype}.const 36113) (${memtype}.const 2596))
+    (memory.copy (${memtype}.const 28461) (${memtype}.const 54157) (${memtype}.const 1168))
+    (memory.copy (${memtype}.const 47951) (${memtype}.const 53385) (${memtype}.const 3137))
+    (memory.copy (${memtype}.const 30646) (${memtype}.const 45155) (${memtype}.const 2649))
+    (memory.copy (${memtype}.const 5057) (${memtype}.const 4295) (${memtype}.const 52))
+    (memory.copy (${memtype}.const 6692) (${memtype}.const 24195) (${memtype}.const 441))
+    (memory.copy (${memtype}.const 32984) (${memtype}.const 27117) (${memtype}.const 3445))
+    (memory.copy (${memtype}.const 32530) (${memtype}.const 59372) (${memtype}.const 2785))
+    (memory.copy (${memtype}.const 34361) (${memtype}.const 8962) (${memtype}.const 2406))
+    (memory.copy (${memtype}.const 17893) (${memtype}.const 54538) (${memtype}.const 3381))
+    (memory.copy (${memtype}.const 22685) (${memtype}.const 44151) (${memtype}.const 136))
+    (memory.copy (${memtype}.const 59089) (${memtype}.const 7077) (${memtype}.const 1045))
+    (memory.copy (${memtype}.const 42945) (${memtype}.const 55028) (${memtype}.const 2389))
+    (memory.copy (${memtype}.const 44693) (${memtype}.const 20138) (${memtype}.const 877))
+    (memory.copy (${memtype}.const 36810) (${memtype}.const 25196) (${memtype}.const 3447))
+    (memory.copy (${memtype}.const 45742) (${memtype}.const 31888) (${memtype}.const 854))
+    (memory.copy (${memtype}.const 24236) (${memtype}.const 31866) (${memtype}.const 1377))
+    (memory.copy (${memtype}.const 33778) (${memtype}.const 692) (${memtype}.const 1594))
+    (memory.copy (${memtype}.const 60618) (${memtype}.const 18585) (${memtype}.const 2987))
+    (memory.copy (${memtype}.const 50370) (${memtype}.const 41271) (${memtype}.const 1406))
   )
-  ${checkRangeCode()})
+  ${checkRangeCode(memtype)})
 (invoke "test")
 `);
-checkRange(0, 124, 0);
-checkRange(124, 1517, 9);
-checkRange(1517, 2132, 0);
-checkRange(2132, 2827, 10);
-checkRange(2827, 2921, 92);
-checkRange(2921, 3538, 83);
-checkRange(3538, 3786, 77);
-checkRange(3786, 4042, 97);
-checkRange(4042, 4651, 99);
-checkRange(4651, 5057, 0);
-checkRange(5057, 5109, 99);
-checkRange(5109, 5291, 0);
-checkRange(5291, 5524, 72);
-checkRange(5524, 5691, 92);
-checkRange(5691, 6552, 83);
-checkRange(6552, 7133, 77);
-checkRange(7133, 7665, 99);
-checkRange(7665, 8314, 0);
-checkRange(8314, 8360, 62);
-checkRange(8360, 8793, 86);
-checkRange(8793, 8979, 83);
-checkRange(8979, 9373, 79);
-checkRange(9373, 9518, 95);
-checkRange(9518, 9934, 59);
-checkRange(9934, 10087, 77);
-checkRange(10087, 10206, 5);
-checkRange(10206, 10230, 77);
-checkRange(10230, 10249, 41);
-checkRange(10249, 11148, 83);
-checkRange(11148, 11356, 74);
-checkRange(11356, 11380, 93);
-checkRange(11380, 11939, 74);
-checkRange(11939, 12159, 68);
-checkRange(12159, 12575, 83);
-checkRange(12575, 12969, 79);
-checkRange(12969, 13114, 95);
-checkRange(13114, 14133, 59);
-checkRange(14133, 14404, 76);
-checkRange(14404, 14428, 57);
-checkRange(14428, 14458, 59);
-checkRange(14458, 14580, 32);
-checkRange(14580, 14777, 89);
-checkRange(14777, 15124, 59);
-checkRange(15124, 15126, 36);
-checkRange(15126, 15192, 100);
-checkRange(15192, 15871, 96);
-checkRange(15871, 15998, 95);
-checkRange(15998, 17017, 59);
-checkRange(17017, 17288, 76);
-checkRange(17288, 17312, 57);
-checkRange(17312, 17342, 59);
-checkRange(17342, 17464, 32);
-checkRange(17464, 17661, 89);
-checkRange(17661, 17727, 59);
-checkRange(17727, 17733, 5);
-checkRange(17733, 17893, 96);
-checkRange(17893, 18553, 77);
-checkRange(18553, 18744, 42);
-checkRange(18744, 18801, 76);
-checkRange(18801, 18825, 57);
-checkRange(18825, 18876, 59);
-checkRange(18876, 18885, 77);
-checkRange(18885, 18904, 41);
-checkRange(18904, 19567, 83);
-checkRange(19567, 20403, 96);
-checkRange(20403, 21274, 77);
-checkRange(21274, 21364, 100);
-checkRange(21364, 21468, 74);
-checkRange(21468, 21492, 93);
-checkRange(21492, 22051, 74);
-checkRange(22051, 22480, 68);
-checkRange(22480, 22685, 100);
-checkRange(22685, 22694, 68);
-checkRange(22694, 22821, 10);
-checkRange(22821, 22869, 100);
-checkRange(22869, 24107, 97);
-checkRange(24107, 24111, 37);
-checkRange(24111, 24236, 77);
-checkRange(24236, 24348, 72);
-checkRange(24348, 24515, 92);
-checkRange(24515, 24900, 83);
-checkRange(24900, 25136, 95);
-checkRange(25136, 25182, 85);
-checkRange(25182, 25426, 68);
-checkRange(25426, 25613, 89);
-checkRange(25613, 25830, 96);
-checkRange(25830, 26446, 100);
-checkRange(26446, 26517, 10);
-checkRange(26517, 27468, 92);
-checkRange(27468, 27503, 95);
-checkRange(27503, 27573, 77);
-checkRange(27573, 28245, 92);
-checkRange(28245, 28280, 95);
-checkRange(28280, 29502, 77);
-checkRange(29502, 29629, 42);
-checkRange(29629, 30387, 83);
-checkRange(30387, 30646, 77);
-checkRange(30646, 31066, 92);
-checkRange(31066, 31131, 77);
-checkRange(31131, 31322, 42);
-checkRange(31322, 31379, 76);
-checkRange(31379, 31403, 57);
-checkRange(31403, 31454, 59);
-checkRange(31454, 31463, 77);
-checkRange(31463, 31482, 41);
-checkRange(31482, 31649, 83);
-checkRange(31649, 31978, 72);
-checkRange(31978, 32145, 92);
-checkRange(32145, 32530, 83);
-checkRange(32530, 32766, 95);
-checkRange(32766, 32812, 85);
-checkRange(32812, 33056, 68);
-checkRange(33056, 33660, 89);
-checkRange(33660, 33752, 59);
-checkRange(33752, 33775, 36);
-checkRange(33775, 33778, 32);
-checkRange(33778, 34603, 9);
-checkRange(34603, 35218, 0);
-checkRange(35218, 35372, 10);
-checkRange(35372, 35486, 77);
-checkRange(35486, 35605, 5);
-checkRange(35605, 35629, 77);
-checkRange(35629, 35648, 41);
-checkRange(35648, 36547, 83);
-checkRange(36547, 36755, 74);
-checkRange(36755, 36767, 93);
-checkRange(36767, 36810, 83);
-checkRange(36810, 36839, 100);
-checkRange(36839, 37444, 96);
-checkRange(37444, 38060, 100);
-checkRange(38060, 38131, 10);
-checkRange(38131, 39082, 92);
-checkRange(39082, 39117, 95);
-checkRange(39117, 39187, 77);
-checkRange(39187, 39859, 92);
-checkRange(39859, 39894, 95);
-checkRange(39894, 40257, 77);
-checkRange(40257, 40344, 89);
-checkRange(40344, 40371, 59);
-checkRange(40371, 40804, 77);
-checkRange(40804, 40909, 5);
-checkRange(40909, 42259, 92);
-checkRange(42259, 42511, 77);
-checkRange(42511, 42945, 83);
-checkRange(42945, 43115, 77);
-checkRange(43115, 43306, 42);
-checkRange(43306, 43363, 76);
-checkRange(43363, 43387, 57);
-checkRange(43387, 43438, 59);
-checkRange(43438, 43447, 77);
-checkRange(43447, 43466, 41);
-checkRange(43466, 44129, 83);
-checkRange(44129, 44958, 96);
-checkRange(44958, 45570, 77);
-checkRange(45570, 45575, 92);
-checkRange(45575, 45640, 77);
-checkRange(45640, 45742, 42);
-checkRange(45742, 45832, 72);
-checkRange(45832, 45999, 92);
-checkRange(45999, 46384, 83);
-checkRange(46384, 46596, 95);
-checkRange(46596, 46654, 92);
-checkRange(46654, 47515, 83);
-checkRange(47515, 47620, 77);
-checkRange(47620, 47817, 79);
-checkRange(47817, 47951, 95);
-checkRange(47951, 48632, 100);
-checkRange(48632, 48699, 97);
-checkRange(48699, 48703, 37);
-checkRange(48703, 49764, 77);
-checkRange(49764, 49955, 42);
-checkRange(49955, 50012, 76);
-checkRange(50012, 50036, 57);
-checkRange(50036, 50087, 59);
-checkRange(50087, 50096, 77);
-checkRange(50096, 50115, 41);
-checkRange(50115, 50370, 83);
-checkRange(50370, 51358, 92);
-checkRange(51358, 51610, 77);
-checkRange(51610, 51776, 83);
-checkRange(51776, 51833, 89);
-checkRange(51833, 52895, 100);
-checkRange(52895, 53029, 97);
-checkRange(53029, 53244, 68);
-checkRange(53244, 54066, 100);
-checkRange(54066, 54133, 97);
-checkRange(54133, 54137, 37);
-checkRange(54137, 55198, 77);
-checkRange(55198, 55389, 42);
-checkRange(55389, 55446, 76);
-checkRange(55446, 55470, 57);
-checkRange(55470, 55521, 59);
-checkRange(55521, 55530, 77);
-checkRange(55530, 55549, 41);
-checkRange(55549, 56212, 83);
-checkRange(56212, 57048, 96);
-checkRange(57048, 58183, 77);
-checkRange(58183, 58202, 41);
-checkRange(58202, 58516, 83);
-checkRange(58516, 58835, 95);
-checkRange(58835, 58855, 77);
-checkRange(58855, 59089, 95);
-checkRange(59089, 59145, 77);
-checkRange(59145, 59677, 99);
-checkRange(59677, 60134, 0);
-checkRange(60134, 60502, 89);
-checkRange(60502, 60594, 59);
-checkRange(60594, 60617, 36);
-checkRange(60617, 60618, 32);
-checkRange(60618, 60777, 42);
-checkRange(60777, 60834, 76);
-checkRange(60834, 60858, 57);
-checkRange(60858, 60909, 59);
-checkRange(60909, 60918, 77);
-checkRange(60918, 60937, 41);
-checkRange(60937, 61600, 83);
-checkRange(61600, 62436, 96);
-checkRange(62436, 63307, 77);
-checkRange(63307, 63397, 100);
-checkRange(63397, 63501, 74);
-checkRange(63501, 63525, 93);
-checkRange(63525, 63605, 74);
-checkRange(63605, 63704, 100);
-checkRange(63704, 63771, 97);
-checkRange(63771, 63775, 37);
-checkRange(63775, 64311, 77);
-checkRange(64311, 64331, 26);
-checkRange(64331, 64518, 92);
-checkRange(64518, 64827, 11);
-checkRange(64827, 64834, 26);
-checkRange(64834, 65536, 0);
+  checkRange(memtype, 0, 124, 0);
+  checkRange(memtype, 124, 1517, 9);
+  checkRange(memtype, 1517, 2132, 0);
+  checkRange(memtype, 2132, 2827, 10);
+  checkRange(memtype, 2827, 2921, 92);
+  checkRange(memtype, 2921, 3538, 83);
+  checkRange(memtype, 3538, 3786, 77);
+  checkRange(memtype, 3786, 4042, 97);
+  checkRange(memtype, 4042, 4651, 99);
+  checkRange(memtype, 4651, 5057, 0);
+  checkRange(memtype, 5057, 5109, 99);
+  checkRange(memtype, 5109, 5291, 0);
+  checkRange(memtype, 5291, 5524, 72);
+  checkRange(memtype, 5524, 5691, 92);
+  checkRange(memtype, 5691, 6552, 83);
+  checkRange(memtype, 6552, 7133, 77);
+  checkRange(memtype, 7133, 7665, 99);
+  checkRange(memtype, 7665, 8314, 0);
+  checkRange(memtype, 8314, 8360, 62);
+  checkRange(memtype, 8360, 8793, 86);
+  checkRange(memtype, 8793, 8979, 83);
+  checkRange(memtype, 8979, 9373, 79);
+  checkRange(memtype, 9373, 9518, 95);
+  checkRange(memtype, 9518, 9934, 59);
+  checkRange(memtype, 9934, 10087, 77);
+  checkRange(memtype, 10087, 10206, 5);
+  checkRange(memtype, 10206, 10230, 77);
+  checkRange(memtype, 10230, 10249, 41);
+  checkRange(memtype, 10249, 11148, 83);
+  checkRange(memtype, 11148, 11356, 74);
+  checkRange(memtype, 11356, 11380, 93);
+  checkRange(memtype, 11380, 11939, 74);
+  checkRange(memtype, 11939, 12159, 68);
+  checkRange(memtype, 12159, 12575, 83);
+  checkRange(memtype, 12575, 12969, 79);
+  checkRange(memtype, 12969, 13114, 95);
+  checkRange(memtype, 13114, 14133, 59);
+  checkRange(memtype, 14133, 14404, 76);
+  checkRange(memtype, 14404, 14428, 57);
+  checkRange(memtype, 14428, 14458, 59);
+  checkRange(memtype, 14458, 14580, 32);
+  checkRange(memtype, 14580, 14777, 89);
+  checkRange(memtype, 14777, 15124, 59);
+  checkRange(memtype, 15124, 15126, 36);
+  checkRange(memtype, 15126, 15192, 100);
+  checkRange(memtype, 15192, 15871, 96);
+  checkRange(memtype, 15871, 15998, 95);
+  checkRange(memtype, 15998, 17017, 59);
+  checkRange(memtype, 17017, 17288, 76);
+  checkRange(memtype, 17288, 17312, 57);
+  checkRange(memtype, 17312, 17342, 59);
+  checkRange(memtype, 17342, 17464, 32);
+  checkRange(memtype, 17464, 17661, 89);
+  checkRange(memtype, 17661, 17727, 59);
+  checkRange(memtype, 17727, 17733, 5);
+  checkRange(memtype, 17733, 17893, 96);
+  checkRange(memtype, 17893, 18553, 77);
+  checkRange(memtype, 18553, 18744, 42);
+  checkRange(memtype, 18744, 18801, 76);
+  checkRange(memtype, 18801, 18825, 57);
+  checkRange(memtype, 18825, 18876, 59);
+  checkRange(memtype, 18876, 18885, 77);
+  checkRange(memtype, 18885, 18904, 41);
+  checkRange(memtype, 18904, 19567, 83);
+  checkRange(memtype, 19567, 20403, 96);
+  checkRange(memtype, 20403, 21274, 77);
+  checkRange(memtype, 21274, 21364, 100);
+  checkRange(memtype, 21364, 21468, 74);
+  checkRange(memtype, 21468, 21492, 93);
+  checkRange(memtype, 21492, 22051, 74);
+  checkRange(memtype, 22051, 22480, 68);
+  checkRange(memtype, 22480, 22685, 100);
+  checkRange(memtype, 22685, 22694, 68);
+  checkRange(memtype, 22694, 22821, 10);
+  checkRange(memtype, 22821, 22869, 100);
+  checkRange(memtype, 22869, 24107, 97);
+  checkRange(memtype, 24107, 24111, 37);
+  checkRange(memtype, 24111, 24236, 77);
+  checkRange(memtype, 24236, 24348, 72);
+  checkRange(memtype, 24348, 24515, 92);
+  checkRange(memtype, 24515, 24900, 83);
+  checkRange(memtype, 24900, 25136, 95);
+  checkRange(memtype, 25136, 25182, 85);
+  checkRange(memtype, 25182, 25426, 68);
+  checkRange(memtype, 25426, 25613, 89);
+  checkRange(memtype, 25613, 25830, 96);
+  checkRange(memtype, 25830, 26446, 100);
+  checkRange(memtype, 26446, 26517, 10);
+  checkRange(memtype, 26517, 27468, 92);
+  checkRange(memtype, 27468, 27503, 95);
+  checkRange(memtype, 27503, 27573, 77);
+  checkRange(memtype, 27573, 28245, 92);
+  checkRange(memtype, 28245, 28280, 95);
+  checkRange(memtype, 28280, 29502, 77);
+  checkRange(memtype, 29502, 29629, 42);
+  checkRange(memtype, 29629, 30387, 83);
+  checkRange(memtype, 30387, 30646, 77);
+  checkRange(memtype, 30646, 31066, 92);
+  checkRange(memtype, 31066, 31131, 77);
+  checkRange(memtype, 31131, 31322, 42);
+  checkRange(memtype, 31322, 31379, 76);
+  checkRange(memtype, 31379, 31403, 57);
+  checkRange(memtype, 31403, 31454, 59);
+  checkRange(memtype, 31454, 31463, 77);
+  checkRange(memtype, 31463, 31482, 41);
+  checkRange(memtype, 31482, 31649, 83);
+  checkRange(memtype, 31649, 31978, 72);
+  checkRange(memtype, 31978, 32145, 92);
+  checkRange(memtype, 32145, 32530, 83);
+  checkRange(memtype, 32530, 32766, 95);
+  checkRange(memtype, 32766, 32812, 85);
+  checkRange(memtype, 32812, 33056, 68);
+  checkRange(memtype, 33056, 33660, 89);
+  checkRange(memtype, 33660, 33752, 59);
+  checkRange(memtype, 33752, 33775, 36);
+  checkRange(memtype, 33775, 33778, 32);
+  checkRange(memtype, 33778, 34603, 9);
+  checkRange(memtype, 34603, 35218, 0);
+  checkRange(memtype, 35218, 35372, 10);
+  checkRange(memtype, 35372, 35486, 77);
+  checkRange(memtype, 35486, 35605, 5);
+  checkRange(memtype, 35605, 35629, 77);
+  checkRange(memtype, 35629, 35648, 41);
+  checkRange(memtype, 35648, 36547, 83);
+  checkRange(memtype, 36547, 36755, 74);
+  checkRange(memtype, 36755, 36767, 93);
+  checkRange(memtype, 36767, 36810, 83);
+  checkRange(memtype, 36810, 36839, 100);
+  checkRange(memtype, 36839, 37444, 96);
+  checkRange(memtype, 37444, 38060, 100);
+  checkRange(memtype, 38060, 38131, 10);
+  checkRange(memtype, 38131, 39082, 92);
+  checkRange(memtype, 39082, 39117, 95);
+  checkRange(memtype, 39117, 39187, 77);
+  checkRange(memtype, 39187, 39859, 92);
+  checkRange(memtype, 39859, 39894, 95);
+  checkRange(memtype, 39894, 40257, 77);
+  checkRange(memtype, 40257, 40344, 89);
+  checkRange(memtype, 40344, 40371, 59);
+  checkRange(memtype, 40371, 40804, 77);
+  checkRange(memtype, 40804, 40909, 5);
+  checkRange(memtype, 40909, 42259, 92);
+  checkRange(memtype, 42259, 42511, 77);
+  checkRange(memtype, 42511, 42945, 83);
+  checkRange(memtype, 42945, 43115, 77);
+  checkRange(memtype, 43115, 43306, 42);
+  checkRange(memtype, 43306, 43363, 76);
+  checkRange(memtype, 43363, 43387, 57);
+  checkRange(memtype, 43387, 43438, 59);
+  checkRange(memtype, 43438, 43447, 77);
+  checkRange(memtype, 43447, 43466, 41);
+  checkRange(memtype, 43466, 44129, 83);
+  checkRange(memtype, 44129, 44958, 96);
+  checkRange(memtype, 44958, 45570, 77);
+  checkRange(memtype, 45570, 45575, 92);
+  checkRange(memtype, 45575, 45640, 77);
+  checkRange(memtype, 45640, 45742, 42);
+  checkRange(memtype, 45742, 45832, 72);
+  checkRange(memtype, 45832, 45999, 92);
+  checkRange(memtype, 45999, 46384, 83);
+  checkRange(memtype, 46384, 46596, 95);
+  checkRange(memtype, 46596, 46654, 92);
+  checkRange(memtype, 46654, 47515, 83);
+  checkRange(memtype, 47515, 47620, 77);
+  checkRange(memtype, 47620, 47817, 79);
+  checkRange(memtype, 47817, 47951, 95);
+  checkRange(memtype, 47951, 48632, 100);
+  checkRange(memtype, 48632, 48699, 97);
+  checkRange(memtype, 48699, 48703, 37);
+  checkRange(memtype, 48703, 49764, 77);
+  checkRange(memtype, 49764, 49955, 42);
+  checkRange(memtype, 49955, 50012, 76);
+  checkRange(memtype, 50012, 50036, 57);
+  checkRange(memtype, 50036, 50087, 59);
+  checkRange(memtype, 50087, 50096, 77);
+  checkRange(memtype, 50096, 50115, 41);
+  checkRange(memtype, 50115, 50370, 83);
+  checkRange(memtype, 50370, 51358, 92);
+  checkRange(memtype, 51358, 51610, 77);
+  checkRange(memtype, 51610, 51776, 83);
+  checkRange(memtype, 51776, 51833, 89);
+  checkRange(memtype, 51833, 52895, 100);
+  checkRange(memtype, 52895, 53029, 97);
+  checkRange(memtype, 53029, 53244, 68);
+  checkRange(memtype, 53244, 54066, 100);
+  checkRange(memtype, 54066, 54133, 97);
+  checkRange(memtype, 54133, 54137, 37);
+  checkRange(memtype, 54137, 55198, 77);
+  checkRange(memtype, 55198, 55389, 42);
+  checkRange(memtype, 55389, 55446, 76);
+  checkRange(memtype, 55446, 55470, 57);
+  checkRange(memtype, 55470, 55521, 59);
+  checkRange(memtype, 55521, 55530, 77);
+  checkRange(memtype, 55530, 55549, 41);
+  checkRange(memtype, 55549, 56212, 83);
+  checkRange(memtype, 56212, 57048, 96);
+  checkRange(memtype, 57048, 58183, 77);
+  checkRange(memtype, 58183, 58202, 41);
+  checkRange(memtype, 58202, 58516, 83);
+  checkRange(memtype, 58516, 58835, 95);
+  checkRange(memtype, 58835, 58855, 77);
+  checkRange(memtype, 58855, 59089, 95);
+  checkRange(memtype, 59089, 59145, 77);
+  checkRange(memtype, 59145, 59677, 99);
+  checkRange(memtype, 59677, 60134, 0);
+  checkRange(memtype, 60134, 60502, 89);
+  checkRange(memtype, 60502, 60594, 59);
+  checkRange(memtype, 60594, 60617, 36);
+  checkRange(memtype, 60617, 60618, 32);
+  checkRange(memtype, 60618, 60777, 42);
+  checkRange(memtype, 60777, 60834, 76);
+  checkRange(memtype, 60834, 60858, 57);
+  checkRange(memtype, 60858, 60909, 59);
+  checkRange(memtype, 60909, 60918, 77);
+  checkRange(memtype, 60918, 60937, 41);
+  checkRange(memtype, 60937, 61600, 83);
+  checkRange(memtype, 61600, 62436, 96);
+  checkRange(memtype, 62436, 63307, 77);
+  checkRange(memtype, 63307, 63397, 100);
+  checkRange(memtype, 63397, 63501, 74);
+  checkRange(memtype, 63501, 63525, 93);
+  checkRange(memtype, 63525, 63605, 74);
+  checkRange(memtype, 63605, 63704, 100);
+  checkRange(memtype, 63704, 63771, 97);
+  checkRange(memtype, 63771, 63775, 37);
+  checkRange(memtype, 63775, 64311, 77);
+  checkRange(memtype, 64311, 64331, 26);
+  checkRange(memtype, 64331, 64518, 92);
+  checkRange(memtype, 64518, 64827, 11);
+  checkRange(memtype, 64827, 64834, 26);
+  checkRange(memtype, 64834, 65536, 0);
+}
diff --git a/test/meta/generate_memory_fill.js b/test/meta/generate_memory_fill.js
index 3a8f485f1..b04c3738a 100644
--- a/test/meta/generate_memory_fill.js
+++ b/test/meta/generate_memory_fill.js
@@ -3,155 +3,160 @@
 
 print_origin("generate_memory_fill.js");
 
-let PREAMBLE =
-  `(memory 1 1)
-  ${checkRangeCode()}`;
+for ( const memtype of ['i32', 'i64'] ) {
 
-// Range valid
-print(
+  const decltype = memtype == 'i64' ? ' i64' : '';
+
+  let PREAMBLE =
+  `(memory${decltype} 1 1)
+  ${checkRangeCode(memtype)}`;
+
+  // Range valid
+  print(
 `
 (module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 256))))
+    (memory.fill (${memtype}.const 0xFF00) (i32.const 0x55) (${memtype}.const 256))))
 (invoke "test")
 `);
-checkRange(0x00000, 0x0FF00, 0x00)
-checkRange(0x0FF00, 0x10000, 0x55)
+  checkRange(memtype, 0x00000, 0x0FF00, 0x00)
+  checkRange(memtype, 0x0FF00, 0x10000, 0x55)
 
-// Range invalid
-print(
+  // Range invalid
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 257))))
+    (memory.fill (${memtype}.const 0xFF00) (i32.const 0x55) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Wraparound the end of 32-bit offset space
-print(
+  // Wraparound the end of 32-bit offset space
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0xFFFFFF00) (i32.const 0x55) (i32.const 257))))
+    (memory.fill (${memtype}.const 0xFFFFFF00) (i32.const 0x55) (${memtype}.const 257))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Zero len with offset in-bounds is a no-op
-print(
+  // Zero len with offset in-bounds is a no-op
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 0))))
+    (memory.fill (${memtype}.const 0x12) (i32.const 0x55) (${memtype}.const 0))))
 (invoke "test")
 `);
-checkRange(0x00000, 0x10000, 0x00);
+  checkRange(memtype, 0x00000, 0x10000, 0x00);
 
-// Zero len with offset out-of-bounds at the end of memory is allowed
-print(
+  // Zero len with offset out-of-bounds at the end of memory is allowed
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0x10000) (i32.const 0x55) (i32.const 0))))
+    (memory.fill (${memtype}.const 0x10000) (i32.const 0x55) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// Zero len with offset out-of-bounds past the end of memory is not allowed
-print(
+  // Zero len with offset out-of-bounds past the end of memory is not allowed
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0x20000) (i32.const 0x55) (i32.const 0))))
+    (memory.fill (${memtype}.const 0x20000) (i32.const 0x55) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// Very large range
-print(
+  // Very large range
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.fill (i32.const 0x1) (i32.const 0xAA) (i32.const 0xFFFE))))
+    (memory.fill (${memtype}.const 0x1) (i32.const 0xAA) (${memtype}.const 0xFFFE))))
 (invoke "test")
 `);
-checkRange(0x00000, 0x00001, 0x00);
-checkRange(0x00001, 0x0FFFF, 0xAA);
-checkRange(0x0FFFF, 0x10000, 0x00);
+  checkRange(memtype, 0x00000, 0x00001, 0x00);
+  checkRange(memtype, 0x00001, 0x0FFFF, 0xAA);
+  checkRange(memtype, 0x0FFFF, 0x10000, 0x00);
 
-// Sequencing
-print(
+  // Sequencing
+  print(
 `
 (module
   ${PREAMBLE}
   (func (export "test")
-     (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 10))
-     (memory.fill (i32.const 0x15) (i32.const 0xAA) (i32.const 4))))
+     (memory.fill (${memtype}.const 0x12) (i32.const 0x55) (${memtype}.const 10))
+     (memory.fill (${memtype}.const 0x15) (i32.const 0xAA) (${memtype}.const 4))))
 (invoke "test")
 `);
-checkRange(0x0,     0x12+0,  0x00);
-checkRange(0x12+0,  0x12+3,  0x55);
-checkRange(0x12+3,  0x12+7,  0xAA);
-checkRange(0x12+7,  0x12+10, 0x55);
-checkRange(0x12+10, 0x10000, 0x00);
+  checkRange(memtype, 0x0,     0x12+0,  0x00);
+  checkRange(memtype, 0x12+0,  0x12+3,  0x55);
+  checkRange(memtype, 0x12+3,  0x12+7,  0xAA);
+  checkRange(memtype, 0x12+7,  0x12+10, 0x55);
+  checkRange(memtype, 0x12+10, 0x10000, 0x00);
 
-// Sundry compilation failures.
+  // Sundry compilation failures.
 
-// Module doesn't have a memory.
-print(
+  // Module doesn't have a memory.
+  print(
 `(assert_invalid
   (module
     (func (export "testfn")
-      (memory.fill (i32.const 10) (i32.const 20) (i32.const 30))))
+      (memory.fill (${memtype}.const 10) (i32.const 20) (${memtype}.const 30))))
   "unknown memory 0")
 `);
 
-// Invalid argument types.  TODO: We can add anyref, funcref, etc here.
-{
-    const tys = ['i32', 'f32', 'i64', 'f64'];
-    for (let ty1 of tys) {
-    for (let ty2 of tys) {
-    for (let ty3 of tys) {
-        if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32')
-            continue;  // this is the only valid case
-        print(
+  // Invalid argument types.  TODO: We can add anyref, funcref, etc here.
+  {
+      const tys = ['i32', 'f32', 'i64', 'f64'];
+      for (let ty1 of tys) {
+      for (let ty2 of tys) {
+      for (let ty3 of tys) {
+          if (ty1 == memtype && ty2 == 'i32' && ty3 == memtype)
+              continue;  // this is the only valid case
+          print(
 `(assert_invalid
   (module
-    (memory 1 1)
+    (memory${decltype} 1 1)
     (func (export "testfn")
       (memory.fill (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30))))
   "type mismatch")
 `);
-    }}}
-}
+      }}}
+  }
 
-// memory.fill: out of bounds, and should not perform a partial fill.
-//
-// Arithmetic overflow of memory offset + len should not affect the behavior, we
-// should still fill up to the limit.
+  // memory.fill: out of bounds, and should not perform a partial fill.
+  //
+  // Arithmetic overflow of memory offset + len should not affect the behavior, we
+  // should still fill up to the limit.
 
-function mem_fill(min, max, shared, backup, write=backup*2) {
-    print(
+  function mem_fill(min, max, shared, backup, write=backup*2) {
+      print(
 `(module
-  (memory ${min} ${max} ${shared})
-  ${checkRangeCode()}
-  (func (export "run") (param $offs i32) (param $val i32) (param $len i32)
+  (memory${decltype} ${min} ${max} ${shared})
+  ${checkRangeCode(memtype)}
+  (func (export "run") (param $offs ${memtype}) (param $val i32) (param $len ${memtype})
     (memory.fill (local.get $offs) (local.get $val) (local.get $len))))
 `);
-    // A fill past the end should throw *and* not have performed a partial fill
-    let offs = min*PAGESIZE - backup;
-    let val = 37;
-    print(
-`(assert_trap (invoke "run" (i32.const ${offs}) (i32.const ${val}) (i32.const ${write}))
+      // A fill past the end should throw *and* not have performed a partial fill
+      let offs = min*PAGESIZE - backup;
+      let val = 37;
+      print(
+`(assert_trap (invoke "run" (${memtype}.const ${offs}) (i32.const ${val}) (${memtype}.const ${write}))
               "out of bounds memory access")
 `);
-    checkRange(0, min, 0);
-}
-
-mem_fill(1, 1, "", 256);
-mem_fill(1, 1, "", 257);
-mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit
-
-if (WITH_SHARED_MEMORY) {
-    mem_fill(2, 4, "shared", 256);
-    mem_fill(2, 4, "shared", 257);
-    mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit
+      checkRange(memtype, 0, min, 0);
+  }
+
+  mem_fill(1, 1, "", 256);
+  mem_fill(1, 1, "", 257);
+  mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit
+
+  if (WITH_SHARED_MEMORY) {
+      mem_fill(2, 4, "shared", 256);
+      mem_fill(2, 4, "shared", 257);
+      mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit
+  }
 }
diff --git a/test/meta/generate_memory_init.js b/test/meta/generate_memory_init.js
index f8075cc33..9b65565b6 100644
--- a/test/meta/generate_memory_init.js
+++ b/test/meta/generate_memory_init.js
@@ -3,64 +3,67 @@
 
 print_origin("generate_memory_init.js");
 
-// In-bounds tests.
+for ( const memtype of ['i32', 'i64'] ) {
 
-function mem_test(instruction, expected_result_vector) {
-    print(
+  const decltype = memtype == 'i64' ? ' i64' : '';
+
+  // In-bounds tests.
+  function mem_test(instruction, expected_result_vector) {
+      print(
 `
 (module
-  (memory (export "memory0") 1 1)
-  (data (i32.const 2) "\\03\\01\\04\\01")
+  (memory (export "memory0")${decltype} 1 1)
+  (data (${memtype}.const 2) "\\03\\01\\04\\01")
   (data "\\02\\07\\01\\08")
-  (data (i32.const 12) "\\07\\05\\02\\03\\06")
+  (data (${memtype}.const 12) "\\07\\05\\02\\03\\06")
   (data "\\05\\09\\02\\07\\06")
   (func (export "test")
     ${instruction})
-  (func (export "load8_u") (param i32) (result i32)
+  (func (export "load8_u") (param ${memtype}) (result i32)
     (i32.load8_u (local.get 0))))
 
 (invoke "test")
 `);
-    for (let i = 0; i < expected_result_vector.length; i++) {
-        print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${expected_result_vector[i]}))`);
-    }
-}
+      for (let i = 0; i < expected_result_vector.length; i++) {
+          print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`);
+      }
+  }
 
-const e = 0;
+  const e = 0;
 
-// This just gives the initial state of the memory, with its active
-// initialisers applied.
-mem_test("(nop)",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+  // This just gives the initial state of the memory, with its active
+  // initialisers applied.
+  mem_test("(nop)",
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
 
-// Passive init that overwrites all-zero entries
-mem_test("(memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4))",
-         [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
+  // Passive init that overwrites all-zero entries
+  mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4))`,
+           [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
 
-// Passive init that overwrites existing active-init-created entries
-mem_test("(memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3))",
-         [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]);
+  // Passive init that overwrites existing active-init-created entries
+  mem_test(`(memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3))`,
+           [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]);
 
-// Perform active and passive initialisation and then multiple copies
-mem_test(`(memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4))
+  // Perform active and passive initialisation and then multiple copies
+  mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4))
     (data.drop 1)
-    (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3))
+    (memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3))
     (data.drop 3)
-    (memory.copy (i32.const 20) (i32.const 15) (i32.const 5))
-    (memory.copy (i32.const 21) (i32.const 29) (i32.const 1))
-    (memory.copy (i32.const 24) (i32.const 10) (i32.const 1))
-    (memory.copy (i32.const 13) (i32.const 11) (i32.const 4))
-    (memory.copy (i32.const 19) (i32.const 20) (i32.const 5))`,
-         [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]);
+    (memory.copy (${memtype}.const 20) (${memtype}.const 15) (${memtype}.const 5))
+    (memory.copy (${memtype}.const 21) (${memtype}.const 29) (${memtype}.const 1))
+    (memory.copy (${memtype}.const 24) (${memtype}.const 10) (${memtype}.const 1))
+    (memory.copy (${memtype}.const 13) (${memtype}.const 11) (${memtype}.const 4))
+    (memory.copy (${memtype}.const 19) (${memtype}.const 20) (${memtype}.const 5))`,
+           [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]);
 
-// Miscellaneous
+  // Miscellaneous
 
-let PREAMBLE =
-    `(memory 1)
+  let PREAMBLE =
+    `(memory${decltype} 1)
     (data "\\37")`;
 
-// drop with no memory
-print(
+  // drop with no memory
+  print(
 `(assert_invalid
    (module
      (func (export "test")
@@ -68,8 +71,8 @@ print(
    "unknown data segment")
 `);
 
-// drop with data seg ix out of range
-print(
+  // drop with data seg ix out of range
+  print(
 `(assert_invalid
   (module
     ${PREAMBLE}
@@ -78,8 +81,8 @@ print(
   "unknown data segment")
 `);
 
-// drop, then drop
-print(
+  // drop, then drop
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
@@ -88,147 +91,147 @@ print(
 (invoke "test")
 `);
 
-// drop, then init
-print(
+  // drop, then init
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
     (data.drop 0)
-    (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1))))
+    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init with data seg ix indicating an active segment
-print(
+  // init with data seg ix indicating an active segment
+  print(
 `(module
-   (memory 1)
-   (data (i32.const 0) "\\37")
+   (memory${decltype} 1)
+   (data (${memtype}.const 0) "\\37")
    (func (export "test")
-     (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1))))
+     (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init with no memory
-print(
+  // init with no memory
+  print(
 `(assert_invalid
   (module
     (func (export "test")
-      (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1))))
+      (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
   "unknown memory 0")
 `);
 
-// init with data seg ix out of range
-print(
+  // init with data seg ix out of range
+  print(
 `(assert_invalid
   (module
     ${PREAMBLE}
     (func (export "test")
-      (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1))))
+      (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
   "unknown data segment 1")
 `);
 
-// init, using a data seg ix more than once is OK
-print(
+  // init, using a data seg ix more than once is OK
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1))
-    (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1))))
+    (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1))
+    (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1))))
 (invoke "test")
 `);
 
-// init: seg ix is valid passive, but length to copy > len of seg
-print(
+  // init: seg ix is valid passive, but length to copy > len of seg
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 1234) (i32.const 0) (i32.const 5))))
+    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 0) (${memtype}.const 5))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init: seg ix is valid passive, but implies copying beyond end of seg
-print(
+  // init: seg ix is valid passive, but implies copying beyond end of seg
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 1234) (i32.const 2) (i32.const 3))))
+    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 2) (${memtype}.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init: seg ix is valid passive, but implies copying beyond end of dst
-print(
+  // init: seg ix is valid passive, but implies copying beyond end of dst
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 0xFFFE) (i32.const 1) (i32.const 3))))
+    (memory.init 0 (${memtype}.const 0xFFFE) (${memtype}.const 1) (${memtype}.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init: seg ix is valid passive, src offset past the end, zero len is invalid
-print(
+  // init: seg ix is valid passive, src offset past the end, zero len is invalid
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 1234) (i32.const 4) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 4) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init: seg ix is valid passive, zero len, src offset at the end
-print(
+  // init: seg ix is valid passive, zero len, src offset at the end
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// init: seg ix is valid passive, dst offset past the end, zero len is invalid
-print(
+  // init: seg ix is valid passive, dst offset past the end, zero len is invalid
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 0x10001) (i32.const 0) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 0) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// init: seg ix is valid passive, zero len, but dst offset at the end
-print(
+  // init: seg ix is valid passive, zero len, but dst offset at the end
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 0x10000) (i32.const 0) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 0) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// init: seg ix is valid passive, zero len, dst and src offsets at the end
-print(
+  // init: seg ix is valid passive, zero len, dst and src offsets at the end
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 0x10000) (i32.const 1) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 1) (${memtype}.const 0))))
 (invoke "test")
 `);
 
-// init: seg ix is valid passive, src and dst offset past the end, zero len is
-// invalid
-print(
+  // init: seg ix is valid passive, src and dst offset past the end, zero len is
+  // invalid
+  print(
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (i32.const 0x10001) (i32.const 4) (i32.const 0))))
+    (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 4) (${memtype}.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
-// invalid argument types.  TODO: can add anyfunc etc here.
-{
-    const tys  = ['i32', 'f32', 'i64', 'f64'];
+  // invalid argument types.  TODO: can add anyfunc etc here.
+  {
+      const tys  = ['i32', 'f32', 'i64', 'f64'];
 
-    for (let ty1 of tys) {
-    for (let ty2 of tys) {
-    for (let ty3 of tys) {
-        if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32')
-            continue;  // this is the only valid case
-        print(
+      for (let ty1 of tys) {
+      for (let ty2 of tys) {
+      for (let ty3 of tys) {
+          if (ty1 == memtype && ty2 == memtype && ty3 == memtype)
+              continue;  // this is the only valid case
+          print(
 `(assert_invalid
   (module
     ${PREAMBLE}
@@ -236,68 +239,68 @@ print(
       (memory.init 0 (${ty1}.const 1) (${ty2}.const 1) (${ty3}.const 1))))
   "type mismatch")
 `);
-    }}}
-}
+      }}}
+  }
 
-// memory.init: out of bounds of the memory or the segment, but should perform
-// the operation up to the appropriate bound.
-//
-// Arithmetic overflow of memoffset + len or of bufferoffset + len should not
-// affect the behavior.
+  // memory.init: out of bounds of the memory or the segment, but should perform
+  // the operation up to the appropriate bound.
+  //
+  // Arithmetic overflow of memoffset + len or of bufferoffset + len should not
+  // affect the behavior.
 
-// Note, the length of the data segment is 16.
-const mem_init_len = 16;
+  // Note, the length of the data segment is 16.
+  const mem_init_len = 16;
 
-function mem_init(min, max, shared, backup, write) {
-    print(
+  function mem_init(min, max, shared, backup, write) {
+      print(
 `(module
-  (memory ${min} ${max} ${shared})
+  (memory${decltype} ${min} ${max} ${shared})
   (data "\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42")
-   ${checkRangeCode()}
-  (func (export "run") (param $offs i32) (param $len i32)
-    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
+   ${checkRangeCode(memtype)}
+  (func (export "run") (param $offs ${memtype}) (param $len ${memtype})
+    (memory.init 0 (local.get $offs) (${memtype}.const 0) (local.get $len))))
 `);
-    // A fill writing past the end of the memory should throw *and* have filled
-    // all the way up to the end.
-    //
-    // A fill reading past the end of the segment should throw *and* have filled
-    // memory with as much data as was available.
-    let offs = min*PAGESIZE - backup;
-    print(
-`(assert_trap (invoke "run" (i32.const ${offs}) (i32.const ${write}))
+      // A fill writing past the end of the memory should throw *and* have filled
+      // all the way up to the end.
+      //
+      // A fill reading past the end of the segment should throw *and* have filled
+      // memory with as much data as was available.
+      let offs = min*PAGESIZE - backup;
+      print(
+`(assert_trap (invoke "run" (${memtype}.const ${offs}) (${memtype}.const ${write}))
               "out of bounds memory access")
 `);
-    checkRange(0, min, 0);
-}
-
-// We exceed the bounds of the memory but not of the data segment
-mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len);
-mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len);
-if (WITH_SHARED_MEMORY) {
-    mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len);
-    mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len);
-}
-
-// We exceed the bounds of the data segment but not the memory
-mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2);
-mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1);
-if (WITH_SHARED_MEMORY) {
-    mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2);
-    mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1);
-}
-
-// We arithmetically overflow the memory limit but not the segment limit
-mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00);
-
-// We arithmetically overflow the segment limit but not the memory limit
-mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC);
-
-// Test that the data segment index is properly encoded as an unsigned (not
-// signed) LEB.
-print(
+      checkRange(memtype, 0, min, 0);
+  }
+
+  // We exceed the bounds of the memory but not of the data segment
+  mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len);
+  mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len);
+  if (WITH_SHARED_MEMORY) {
+      mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len);
+      mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len);
+  }
+
+  // We exceed the bounds of the data segment but not the memory
+  mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2);
+  mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1);
+  if (WITH_SHARED_MEMORY) {
+      mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2);
+      mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1);
+  }
+
+  // We arithmetically overflow the memory limit but not the segment limit
+  mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00);
+
+  // We arithmetically overflow the segment limit but not the memory limit
+  mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC);
+
+  // Test that the data segment index is properly encoded as an unsigned (not
+  // signed) LEB.
+  print(
 `
 (module
-  (memory 1)
+  (memory${decltype} 1)
   ;; 65 data segments. 64 is the smallest positive number that is encoded
   ;; differently as a signed LEB.
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
@@ -309,4 +312,5 @@ print(
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "")
-  (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0))))`)
+  (func (memory.init 64 (${memtype}.const 0) (${memtype}.const 0) (${memtype}.const 0))))`)
+}

From 04620c271b8715700131695da4bf5e5757aeceef Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Thu, 2 May 2024 22:29:41 -0700
Subject: [PATCH 135/230] Fix error in type of memory.init introduced in #56
 (#57)

Sorry for the churn.  This time I'll double check the test in wabt
before updating the testsuite repo.
---
 interpreter/valid/valid.ml        |  2 +-
 test/core/memory_init.wast        | 92 +++++++++++++++----------------
 test/meta/generate_memory_init.js | 48 ++++++++--------
 3 files changed, 71 insertions(+), 71 deletions(-)

diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml
index a638a07b5..be1966b08 100644
--- a/interpreter/valid/valid.ml
+++ b/interpreter/valid/valid.ml
@@ -407,7 +407,7 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
   | MemoryInit x ->
     let MemoryType (_, it) = memory c (0l @@ e.at) in
     ignore (data c x);
-    [value_type_of_index_type it; value_type_of_index_type it; value_type_of_index_type it] --> []
+    [value_type_of_index_type it; NumType I32Type; NumType I32Type] --> []
 
   | DataDrop x ->
     ignore (data c x);
diff --git a/test/core/memory_init.wast b/test/core/memory_init.wast
index da19ba9b9..8a3ddbe33 100644
--- a/test/core/memory_init.wast
+++ b/test/core/memory_init.wast
@@ -1017,7 +1017,7 @@
   (data (i64.const 12) "\07\05\02\03\06")
   (data "\05\09\02\07\06")
   (func (export "test")
-    (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4)))
+    (memory.init 1 (i64.const 7) (i32.const 0) (i32.const 4)))
   (func (export "load8_u") (param i64) (result i32)
     (i32.load8_u (local.get 0))))
 
@@ -1061,7 +1061,7 @@
   (data (i64.const 12) "\07\05\02\03\06")
   (data "\05\09\02\07\06")
   (func (export "test")
-    (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3)))
+    (memory.init 3 (i64.const 15) (i32.const 1) (i32.const 3)))
   (func (export "load8_u") (param i64) (result i32)
     (i32.load8_u (local.get 0))))
 
@@ -1105,9 +1105,9 @@
   (data (i64.const 12) "\07\05\02\03\06")
   (data "\05\09\02\07\06")
   (func (export "test")
-    (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4))
+    (memory.init 1 (i64.const 7) (i32.const 0) (i32.const 4))
     (data.drop 1)
-    (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3))
+    (memory.init 3 (i64.const 15) (i32.const 1) (i32.const 3))
     (data.drop 3)
     (memory.copy (i64.const 20) (i64.const 15) (i64.const 5))
     (memory.copy (i64.const 21) (i64.const 29) (i64.const 1))
@@ -1176,20 +1176,20 @@
     (data "\37")
   (func (export "test")
     (data.drop 0)
-    (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1))))
+    (memory.init 0 (i64.const 1234) (i32.const 1) (i32.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
    (memory i64 1)
    (data (i64.const 0) "\37")
    (func (export "test")
-     (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1))))
+     (memory.init 0 (i64.const 1234) (i32.const 1) (i32.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (assert_invalid
   (module
     (func (export "test")
-      (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1))))
+      (memory.init 1 (i64.const 1234) (i32.const 1) (i32.const 1))))
   "unknown memory 0")
 
 (assert_invalid
@@ -1197,78 +1197,78 @@
     (memory i64 1)
     (data "\37")
     (func (export "test")
-      (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1))))
+      (memory.init 1 (i64.const 1234) (i32.const 1) (i32.const 1))))
   "unknown data segment 1")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1))
-    (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1))))
+    (memory.init 0 (i64.const 1) (i32.const 0) (i32.const 1))
+    (memory.init 0 (i64.const 1) (i32.const 0) (i32.const 1))))
 (invoke "test")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 1234) (i64.const 0) (i64.const 5))))
+    (memory.init 0 (i64.const 1234) (i32.const 0) (i32.const 5))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 1234) (i64.const 2) (i64.const 3))))
+    (memory.init 0 (i64.const 1234) (i32.const 2) (i32.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 0xFFFE) (i64.const 1) (i64.const 3))))
+    (memory.init 0 (i64.const 0xFFFE) (i32.const 1) (i32.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 1234) (i64.const 4) (i64.const 0))))
+    (memory.init 0 (i64.const 1234) (i32.const 4) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 0))))
+    (memory.init 0 (i64.const 1234) (i32.const 1) (i32.const 0))))
 (invoke "test")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 0x10001) (i64.const 0) (i64.const 0))))
+    (memory.init 0 (i64.const 0x10001) (i32.const 0) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 0x10000) (i64.const 0) (i64.const 0))))
+    (memory.init 0 (i64.const 0x10000) (i32.const 0) (i32.const 0))))
 (invoke "test")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 0x10000) (i64.const 1) (i64.const 0))))
+    (memory.init 0 (i64.const 0x10000) (i32.const 1) (i32.const 0))))
 (invoke "test")
 
 (module
   (memory i64 1)
     (data "\37")
   (func (export "test")
-    (memory.init 0 (i64.const 0x10001) (i64.const 4) (i64.const 0))))
+    (memory.init 0 (i64.const 0x10001) (i32.const 4) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 
 (assert_invalid
@@ -1527,14 +1527,6 @@
       (memory.init 0 (f32.const 1) (f64.const 1) (f64.const 1))))
   "type mismatch")
 
-(assert_invalid
-  (module
-    (memory i64 1)
-    (data "\37")
-    (func (export "test")
-      (memory.init 0 (i64.const 1) (i32.const 1) (i32.const 1))))
-  "type mismatch")
-
 (assert_invalid
   (module
     (memory i64 1)
@@ -1607,6 +1599,14 @@
       (memory.init 0 (i64.const 1) (i64.const 1) (f32.const 1))))
   "type mismatch")
 
+(assert_invalid
+  (module
+    (memory i64 1)
+    (data "\37")
+    (func (export "test")
+      (memory.init 0 (i64.const 1) (i64.const 1) (i64.const 1))))
+  "type mismatch")
+
 (assert_invalid
   (module
     (memory i64 1)
@@ -1790,10 +1790,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 65528) (i64.const 16))
+(assert_trap (invoke "run" (i64.const 65528) (i32.const 16))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1813,10 +1813,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 65527) (i64.const 16))
+(assert_trap (invoke "run" (i64.const 65527) (i32.const 16))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1836,10 +1836,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 65472) (i64.const 30))
+(assert_trap (invoke "run" (i64.const 65472) (i32.const 30))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1859,10 +1859,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 65473) (i64.const 31))
+(assert_trap (invoke "run" (i64.const 65473) (i32.const 31))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1882,10 +1882,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 65528) (i64.const 4294967040))
+(assert_trap (invoke "run" (i64.const 65528) (i32.const 4294967040))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1905,10 +1905,10 @@
           (br $cont))))
     (return (local.get $from)))
 
-  (func (export "run") (param $offs i64) (param $len i64)
-    (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len))))
+  (func (export "run") (param $offs i64) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 
-(assert_trap (invoke "run" (i64.const 0) (i64.const 4294967292))
+(assert_trap (invoke "run" (i64.const 0) (i32.const 4294967292))
               "out of bounds memory access")
 
 (assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0))
@@ -1927,4 +1927,4 @@
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "")
-  (func (memory.init 64 (i64.const 0) (i64.const 0) (i64.const 0))))
+  (func (memory.init 64 (i64.const 0) (i32.const 0) (i32.const 0))))
diff --git a/test/meta/generate_memory_init.js b/test/meta/generate_memory_init.js
index 9b65565b6..fa8ed22b3 100644
--- a/test/meta/generate_memory_init.js
+++ b/test/meta/generate_memory_init.js
@@ -37,17 +37,17 @@ for ( const memtype of ['i32', 'i64'] ) {
            [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
 
   // Passive init that overwrites all-zero entries
-  mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4))`,
+  mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4))`,
            [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]);
 
   // Passive init that overwrites existing active-init-created entries
-  mem_test(`(memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3))`,
+  mem_test(`(memory.init 3 (${memtype}.const 15) (i32.const 1) (i32.const 3))`,
            [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]);
 
   // Perform active and passive initialisation and then multiple copies
-  mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4))
+  mem_test(`(memory.init 1 (${memtype}.const 7) (i32.const 0) (i32.const 4))
     (data.drop 1)
-    (memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3))
+    (memory.init 3 (${memtype}.const 15) (i32.const 1) (i32.const 3))
     (data.drop 3)
     (memory.copy (${memtype}.const 20) (${memtype}.const 15) (${memtype}.const 5))
     (memory.copy (${memtype}.const 21) (${memtype}.const 29) (${memtype}.const 1))
@@ -97,7 +97,7 @@ for ( const memtype of ['i32', 'i64'] ) {
   ${PREAMBLE}
   (func (export "test")
     (data.drop 0)
-    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
+    (memory.init 0 (${memtype}.const 1234) (i32.const 1) (i32.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -107,7 +107,7 @@ for ( const memtype of ['i32', 'i64'] ) {
    (memory${decltype} 1)
    (data (${memtype}.const 0) "\\37")
    (func (export "test")
-     (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
+     (memory.init 0 (${memtype}.const 1234) (i32.const 1) (i32.const 1))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -116,7 +116,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(assert_invalid
   (module
     (func (export "test")
-      (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
+      (memory.init 1 (${memtype}.const 1234) (i32.const 1) (i32.const 1))))
   "unknown memory 0")
 `);
 
@@ -126,7 +126,7 @@ for ( const memtype of ['i32', 'i64'] ) {
   (module
     ${PREAMBLE}
     (func (export "test")
-      (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1))))
+      (memory.init 1 (${memtype}.const 1234) (i32.const 1) (i32.const 1))))
   "unknown data segment 1")
 `);
 
@@ -135,8 +135,8 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1))
-    (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1))))
+    (memory.init 0 (${memtype}.const 1) (i32.const 0) (i32.const 1))
+    (memory.init 0 (${memtype}.const 1) (i32.const 0) (i32.const 1))))
 (invoke "test")
 `);
 
@@ -145,7 +145,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 0) (${memtype}.const 5))))
+    (memory.init 0 (${memtype}.const 1234) (i32.const 0) (i32.const 5))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -154,7 +154,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 2) (${memtype}.const 3))))
+    (memory.init 0 (${memtype}.const 1234) (i32.const 2) (i32.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -163,7 +163,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 0xFFFE) (${memtype}.const 1) (${memtype}.const 3))))
+    (memory.init 0 (${memtype}.const 0xFFFE) (i32.const 1) (i32.const 3))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -172,7 +172,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 4) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 1234) (i32.const 4) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -181,7 +181,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 1234) (i32.const 1) (i32.const 0))))
 (invoke "test")
 `);
 
@@ -190,7 +190,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 0) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 0x10001) (i32.const 0) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -199,7 +199,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 0) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 0x10000) (i32.const 0) (i32.const 0))))
 (invoke "test")
 `);
 
@@ -208,7 +208,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 1) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 0x10000) (i32.const 1) (i32.const 0))))
 (invoke "test")
 `);
 
@@ -218,7 +218,7 @@ for ( const memtype of ['i32', 'i64'] ) {
 `(module
   ${PREAMBLE}
   (func (export "test")
-    (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 4) (${memtype}.const 0))))
+    (memory.init 0 (${memtype}.const 0x10001) (i32.const 4) (i32.const 0))))
 (assert_trap (invoke "test") "out of bounds memory access")
 `);
 
@@ -229,7 +229,7 @@ for ( const memtype of ['i32', 'i64'] ) {
       for (let ty1 of tys) {
       for (let ty2 of tys) {
       for (let ty3 of tys) {
-          if (ty1 == memtype && ty2 == memtype && ty3 == memtype)
+          if (ty1 == memtype && ty2 == 'i32' && ty3 == 'i32')
               continue;  // this is the only valid case
           print(
 `(assert_invalid
@@ -257,8 +257,8 @@ for ( const memtype of ['i32', 'i64'] ) {
   (memory${decltype} ${min} ${max} ${shared})
   (data "\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42")
    ${checkRangeCode(memtype)}
-  (func (export "run") (param $offs ${memtype}) (param $len ${memtype})
-    (memory.init 0 (local.get $offs) (${memtype}.const 0) (local.get $len))))
+  (func (export "run") (param $offs ${memtype}) (param $len i32)
+    (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len))))
 `);
       // A fill writing past the end of the memory should throw *and* have filled
       // all the way up to the end.
@@ -267,7 +267,7 @@ for ( const memtype of ['i32', 'i64'] ) {
       // memory with as much data as was available.
       let offs = min*PAGESIZE - backup;
       print(
-`(assert_trap (invoke "run" (${memtype}.const ${offs}) (${memtype}.const ${write}))
+`(assert_trap (invoke "run" (${memtype}.const ${offs}) (i32.const ${write}))
               "out of bounds memory access")
 `);
       checkRange(memtype, 0, min, 0);
@@ -312,5 +312,5 @@ for ( const memtype of ['i32', 'i64'] ) {
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "")
   (data "")
-  (func (memory.init 64 (${memtype}.const 0) (${memtype}.const 0) (${memtype}.const 0))))`)
+  (func (memory.init 64 (${memtype}.const 0) (i32.const 0) (i32.const 0))))`)
 }

From 95dc80e422eea3720f0c12543f99899b63907c8e Mon Sep 17 00:00:00 2001
From: Deepti Gandluri 
Date: Fri, 10 May 2024 00:26:54 -0700
Subject: [PATCH 136/230] Update ImplementationStatus.md

---
 proposals/relaxed-simd/ImplementationStatus.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/proposals/relaxed-simd/ImplementationStatus.md b/proposals/relaxed-simd/ImplementationStatus.md
index e621fcf19..9a1273103 100644
--- a/proposals/relaxed-simd/ImplementationStatus.md
+++ b/proposals/relaxed-simd/ImplementationStatus.md
@@ -19,9 +19,9 @@
 | `f32x4.relaxed_max`                   | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
 | `f64x2.relaxed_min`                   | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
 | `f64x2.relaxed_max`                   | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
-| `i16x8.relaxed_q15mulr_s`             | -mrelaxed-simd |                    |                    |
-| `i16x8.relaxed_dot_i8x16_i7x16_s`     | -mrelaxed-simd |                    |                    |
-| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | -mrelaxed-simd |                    |                    |
+| `i16x8.relaxed_q15mulr_s`             | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
+| `i16x8.relaxed_dot_i8x16_i7x16_s`     | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
+| `i32x4.relaxed_dot_i8x16_i7x16_add_s` | -mrelaxed-simd | :heavy_check_mark: | :heavy_check_mark: |
 
 
 [1] Tip of tree LLVM as of 2021-10-28

From b99ab2d66a59880bb8ffaf44ff70719372b6a1ca Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Fri, 24 May 2024 11:00:41 -0700
Subject: [PATCH 137/230] Allow table.copy between tables with different index
 types (#58)

See #7, #6
---
 interpreter/syntax/types.ml     |  1 -
 interpreter/valid/valid.ml      |  6 ++---
 proposals/memory64/Overview.md  |  6 ++---
 test/core/table_copy_mixed.wast | 48 +++++++++++++++++++++++++++++++++
 4 files changed, 53 insertions(+), 8 deletions(-)
 create mode 100644 test/core/table_copy_mixed.wast

diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml
index 493ebde96..0e5729089 100644
--- a/interpreter/syntax/types.ml
+++ b/interpreter/syntax/types.ml
@@ -106,7 +106,6 @@ let match_extern_type et1 et2 =
   | ExternGlobalType gt1, ExternGlobalType gt2 -> match_global_type gt1 gt2
   | _, _ -> false
 
-
 (* String conversion *)
 
 let string_of_num_type = function
diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml
index be1966b08..c39e80dba 100644
--- a/interpreter/valid/valid.ml
+++ b/interpreter/valid/valid.ml
@@ -340,13 +340,11 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type
   | TableCopy (x, y) ->
     let TableType (_lim1, it1, t1) = table c x in
     let TableType (_lim2, it2, t2) = table c y in
+    let it3 = min it1 it2 in
     require (t1 = t2) x.at
       ("type mismatch: source element type " ^ string_of_ref_type t1 ^
        " does not match destination element type " ^ string_of_ref_type t2);
-    require (it1 = it2) x.at
-      ("type mismatch: source index type " ^ string_of_index_type it1 ^
-       " does not match destination index type " ^ string_of_index_type it2);
-    [value_type_of_index_type it1; value_type_of_index_type it1; value_type_of_index_type it1] --> []
+    [value_type_of_index_type it1; value_type_of_index_type it2; value_type_of_index_type it3] --> []
 
   | TableInit (x, y) ->
     let TableType (_lim, it, t1) = table c x in
diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index ff4bfcfe5..23958bd84 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -203,9 +203,9 @@ have to support 32-bit memory addresses in their ABI.
       ```
   - table.copy x y
     - ```
-          C.tables[x] = it limits t
-      ----------------------------------
-      C ⊦ table.copy x : [it it it] → []
+        C.tables[d] = iN limits t   C.tables[s] = iM limits t    K = min {N, M}
+      -----------------------------------------------------------------------------
+      C ⊦ table.copy d s : [iN iM iK] → []
       ```
   - table.init x y
     - ```
diff --git a/test/core/table_copy_mixed.wast b/test/core/table_copy_mixed.wast
new file mode 100644
index 000000000..e34cde0d0
--- /dev/null
+++ b/test/core/table_copy_mixed.wast
@@ -0,0 +1,48 @@
+;; Valid cases
+(module
+  (table $t32 30 30 funcref)
+  (table $t64 i64 30 30 funcref)
+
+  (func (export "test32")
+    (table.copy $t32 $t32 (i32.const 13) (i32.const 2) (i32.const 3)))
+
+  (func (export "test64")
+    (table.copy $t64 $t64 (i64.const 13) (i64.const 2) (i64.const 3)))
+
+  (func (export "test_64to32")
+    (table.copy $t32 $t64 (i32.const 13) (i64.const 2) (i32.const 3)))
+
+  (func (export "test_32to64")
+    (table.copy $t64 $t32 (i64.const 13) (i32.const 2) (i32.const 3)))
+)
+
+;; Invalid cases
+(assert_invalid (module
+  (table $t32 30 30 funcref)
+  (table $t64 i64 30 30 funcref)
+
+  (func (export "bad_size_arg")
+    (table.copy $t32 $t64 (i32.const 13) (i64.const 2) (i64.const 3)))
+  )
+  "type mismatch"
+)
+
+(assert_invalid (module
+  (table $t32 30 30 funcref)
+  (table $t64 i64 30 30 funcref)
+
+  (func (export "bad_src_idx")
+    (table.copy $t32 $t64 (i32.const 13) (i32.const 2) (i32.const 3)))
+  )
+  "type mismatch"
+)
+
+(assert_invalid (module
+  (table $t32 30 30 funcref)
+  (table $t64 i64 30 30 funcref)
+
+  (func (export "bad_dst_idx")
+    (table.copy $t32 $t64 (i64.const 13) (i64.const 2) (i32.const 3)))
+  )
+  "type mismatch"
+)

From 415cdafa5b1d3b56c9fc9cf0020775ffdcdf0ad1 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Tue, 28 May 2024 15:46:47 -0700
Subject: [PATCH 138/230] Update Overview.md with table64 status. NFC

---
 proposals/memory64/Overview.md | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index 23958bd84..4dc581708 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -22,13 +22,13 @@ made during phase 3 of the proposal and we refer to this addition as "table64".
 
 ### Implementation Status (table64)
 
-- spec interpreter: -
-- v8/chrome: -
-- Firefox: -
+- spec interpreter: [Done](https://github.com/WebAssembly/table64/53)
+- v8/chrome: [WIP](https://g-issues.chromium.org/issues/338024338)
+- Firefox: [WIP](https://g-issues.chromium.org/issues/338024338)
 - Safari: -
-- wabt: -
-- binaryen: -
-- emscripten: -
+- wabt: Done
+- binaryen: Done
+- emscripten: Done
 
 ## Motivation
 

From 6f101d6edd15d3fafeea70af9b718878cb9e6902 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Thu, 30 May 2024 07:20:38 -0700
Subject: [PATCH 139/230] Revert parameterization of limits that was added in
 #13. (#59)

See https://github.com/WebAssembly/memory64/pull/50#discussion_r1619433044
---
 proposals/memory64/Overview.md | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index 4dc581708..d4c422d54 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -59,22 +59,16 @@ have to support 32-bit memory addresses in their ABI.
 
 ### Structure
 
+* The [limits][syntax limits] structure is changed to use `u64`
+  - `limits ::= {min u64, max u64?}`
+
 * A new `idxtype` can be either `i32` or `i64`
   - `idxtype ::= i32 | i64`
 
-* The [limits][syntax limits] structure is parameterised by index syntax
-  - `limits(iv) ::= {min iv, max iv?}`
-  The parameter is omitted where it is immaterial.
-
 * The [memory type][syntax memtype] and [table type][syntax tabletype]
   structures are extended to include an index type
-  - `memtype ::= idxtype limits(type(iv))`
-  - `tabletype ::= idxtype limits(type(iv)) reftype`
-  - where
-    ```
-    type(\i32) = \I32
-    type(\i64) = \I64
-    ```
+  - `memtype ::= idxtype limits`
+  - `tabletype ::= idxtype limits reftype`
 
 * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset
   - `memarg ::= {offset u64, align u32}`

From 884edf35fa93bc7432025498c5c12ff8cc957305 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Mon, 3 Jun 2024 16:35:04 -0700
Subject: [PATCH 140/230] Remove unnecessary inc_address function (#62)

---
 interpreter/exec/eval.ml | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml
index 6bb3ac5eb..d6849b12e 100644
--- a/interpreter/exec/eval.ml
+++ b/interpreter/exec/eval.ml
@@ -147,12 +147,6 @@ let elem_oob frame x i n =
   I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n))
     (Elem.size (elem frame.inst x))
 
-let inc_address i at =
-  match i with
-  | I32 x -> (I32 (I32.add x 1l) @@ at)
-  | I64 x -> (I64 (I64.add x 1L) @@ at)
-  | _ -> Crash.error at ("bad address type")
-
 let rec step (c : config) : config =
   let {frame; code = vs, es; _} = c in
   let e = List.hd es in
@@ -440,12 +434,13 @@ let rec step (c : config) : config =
         else if n_64 = 0L then
           vs', []
         else
+          let i_64 = Memory.address_of_num i in
           vs', List.map (at e.at) [
             Plain (Const (i @@ e.at));
             Plain (Const (k @@ e.at));
             Plain (Store
               {ty = I32Type; align = 0; offset = 0L; pack = Some Pack8});
-            Plain (Const (inc_address i e.at));
+            Plain (Const (I64 (I64.add i_64 1L) @@ e.at));
             Plain (Const (k @@ e.at));
             Plain (Const (I64 (I64.sub n_64 1L) @@ e.at));
             Plain (MemoryFill);

From d75e87e0b85bfcfc55cb824361887264080f0532 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Mon, 3 Jun 2024 16:35:15 -0700
Subject: [PATCH 141/230] Remove limit64 from parser.mly (#61)

This was left over from when we had both 64-bit and 32-bit limits
---
 interpreter/text/parser.mly | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly
index e5e855d3c..00a2188b5 100644
--- a/interpreter/text/parser.mly
+++ b/interpreter/text/parser.mly
@@ -325,14 +325,14 @@ func_type_result :
     { $3 @ $5 }
 
 table_type :
-  | value_type limits64 ref_type { TableType ($2, index_type_of_value_type $1 $sloc, $3) }
-  | limits64 ref_type { TableType ($1, I32IndexType, $2) }
+  | value_type limits ref_type { TableType ($2, index_type_of_value_type $1 $sloc, $3) }
+  | limits ref_type { TableType ($1, I32IndexType, $2) }
 
 memory_type :
-  | value_type limits64 { MemoryType ($2, index_type_of_value_type $1 $sloc) }
-  | limits64 { MemoryType ($1, I32IndexType) }
+  | value_type limits { MemoryType ($2, index_type_of_value_type $1 $sloc) }
+  | limits { MemoryType ($1, I32IndexType) }
 
-limits64 :
+limits :
   | NAT { {min = nat64 $1 $loc($1); max = None} }
   | NAT NAT { {min = nat64 $1 $loc($1); max = Some (nat64 $2 $loc($2))} }
 

From 23c6751f8e67dc90a6d6d94f3071199a2237dc42 Mon Sep 17 00:00:00 2001
From: Clemens Backes 
Date: Thu, 6 Jun 2024 00:45:07 +0200
Subject: [PATCH 142/230] Add index constructor argument for WebAssembly.Table
 (#64)

Similar to WebAssembly.Memory (#39), the WebAssembly.Table constructor
also needs an `index` argument.
---
 document/js-api/index.bs             | 16 ++++++++------
 test/js-api/table/constructor.any.js | 33 ++++++++++++++++++++++++++++
 2 files changed, 42 insertions(+), 7 deletions(-)

diff --git a/document/js-api/index.bs b/document/js-api/index.bs
index 9a5def866..7acd52ffd 100644
--- a/document/js-api/index.bs
+++ b/document/js-api/index.bs
@@ -482,6 +482,11 @@ enum ImportExportKind {
   "global"
 };
 
+enum IndexType {
+  "i32",
+  "i64",
+};
+
 dictionary ModuleExportDescriptor {
   required USVString name;
   required ImportExportKind kind;
@@ -584,15 +589,10 @@ Note: The use of this synchronous API is discouraged, as some implementations so
 

Memories

-enum MemoryIndexType {
-  "i32",
-  "i64",
-};
-
 dictionary MemoryDescriptor {
   required [EnforceRange] unsigned long initial;
   [EnforceRange] unsigned long maximum;
-  MemoryIndexType index;
+  IndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
@@ -783,6 +783,7 @@ dictionary TableDescriptor {
   required TableKind element;
   required [EnforceRange] unsigned long initial;
   [EnforceRange] unsigned long maximum;
+  IndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
@@ -829,7 +830,8 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address
         1. Let |ref| be [=DefaultValue=](|elementType|).
     1. Otherwise,
         1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|).
-    1. Let |type| be the [=table type=] {[=table type|min=] |initial|, [=table type|max=] |maximum|} |elementType|.
+    1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "i32".
+    1. Let |type| be the [=table type=] [=table type|index=] |index| {[=table type|min=] |initial|, [=table type|max=] |maximum|} [=table type|refType=] |elementType|.
     1. Let |store| be the [=surrounding agent=]'s [=associated store=].
     1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). 
     1. Set the [=surrounding agent=]'s [=associated store=] to |store|.
diff --git a/test/js-api/table/constructor.any.js b/test/js-api/table/constructor.any.js
index 6d38d04e4..466fe3445 100644
--- a/test/js-api/table/constructor.any.js
+++ b/test/js-api/table/constructor.any.js
@@ -157,6 +157,16 @@ test(() => {
         },
       };
     },
+
+    get index() {
+      order.push("index");
+      return {
+        valueOf() {
+          order.push("index valueOf");
+          return "i32";
+        },
+      };
+    },
   });
 
   assert_array_equals(order, [
@@ -166,6 +176,8 @@ test(() => {
     "initial valueOf",
     "maximum",
     "maximum valueOf",
+    "index",
+    "index valueOf",
   ]);
 }, "Order of evaluation for descriptor");
 
@@ -206,3 +218,24 @@ test(() => {
   assert_throws_js(TypeError, () => new WebAssembly.Table(argument, "cannot be used as a wasm function"));
   assert_throws_js(TypeError, () => new WebAssembly.Table(argument, 37));
 }, "initialize anyfunc table with a bad default value");
+
+test(() => {
+  const argument = { "element": "i32", "initial": 3, "index": "i32" };
+  const table = new WebAssembly.Table(argument);
+  // Once this is merged with the type reflection proposal we should check the
+  // index type of `table`.
+  assert_equals(table.length, 3);
+}, "Table with i32 index constructor");
+
+test(() => {
+  const argument = { "element": "i32", "initial": 3, "index": "i64" };
+  const table = new WebAssembly.Table(argument);
+  // Once this is merged with the type reflection proposal we should check the
+  // index type of `table`.
+  assert_equals(table.length, 3);
+}, "Table with i64 index constructor");
+
+test(() => {
+  const argument = { "element": "i32", "initial": 3, "index": "unknown" };
+  assert_throws_js(TypeError, () => new WebAssembly.Table(argument));
+}, "Unknown table index");

From 9edc82d34fd938b98c84ba09a6078eb0f43f21aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Eva=20Herencs=C3=A1rov=C3=A1?= 
Date: Mon, 10 Jun 2024 23:10:24 +0200
Subject: [PATCH 143/230] Fix validation rules for table.set and table.grow in
 Overview.md (#65)

---
 proposals/memory64/Overview.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index d4c422d54..bd2867c3e 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -175,7 +175,7 @@ have to support 32-bit memory addresses in their ABI.
     - ```
         C.tables[x] = it limits t
       ------------------------------
-      C ⊦ table.set x : [it] → [t]
+      C ⊦ table.set x : [it t] → []
       ```
   - table.size x
     - ```
@@ -187,7 +187,7 @@ have to support 32-bit memory addresses in their ABI.
     - ```
         C.tables[x] = it limits t
       -------------------------------
-      C ⊦ table.grow x : [it] → [it]
+      C ⊦ table.grow x : [t it] → [it]
       ```
   - table.fill x
     - ```

From aae6d053cd50f4108245f2225181c05e9040a943 Mon Sep 17 00:00:00 2001
From: Rick Byers 
Date: Fri, 14 Jun 2024 09:58:04 -0700
Subject: [PATCH 144/230] Tweak Overview.md (#66)

Fix URLs for Table64 status (Chromium one was a Google internal link, Firefox one was a typo pointing at the same Chromium one).
---
 proposals/memory64/Overview.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md
index bd2867c3e..70874aab3 100644
--- a/proposals/memory64/Overview.md
+++ b/proposals/memory64/Overview.md
@@ -23,8 +23,8 @@ made during phase 3 of the proposal and we refer to this addition as "table64".
 ### Implementation Status (table64)
 
 - spec interpreter: [Done](https://github.com/WebAssembly/table64/53)
-- v8/chrome: [WIP](https://g-issues.chromium.org/issues/338024338)
-- Firefox: [WIP](https://g-issues.chromium.org/issues/338024338)
+- v8/chrome: [WIP](https://issues.chromium.org/issues/338024338)
+- Firefox: [WIP](https://bugzilla.mozilla.org/show_bug.cgi?id=1893643)
 - Safari: -
 - wabt: Done
 - binaryen: Done

From c7320ac3be86702051e4953028be88101a8268d6 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Mon, 1 Jul 2024 14:40:01 -0700
Subject: [PATCH 145/230] [spec] Update spec text for memory64 (#50)

---
 document/core/binary/instructions.rst |   4 +-
 document/core/binary/types.rst        |  12 +-
 document/core/exec/instructions.rst   | 596 ++++++++++++++------------
 document/core/syntax/instructions.rst |   5 +-
 document/core/syntax/types.rst        |  39 +-
 document/core/text/modules.rst        |  10 +-
 document/core/text/types.rst          |  30 +-
 document/core/util/macros.def         |   3 +
 document/core/valid/instructions.rst  | 185 ++++----
 9 files changed, 512 insertions(+), 372 deletions(-)

diff --git a/document/core/binary/instructions.rst b/document/core/binary/instructions.rst
index f054013e6..e54aabc3f 100644
--- a/document/core/binary/instructions.rst
+++ b/document/core/binary/instructions.rst
@@ -278,9 +278,9 @@ Each variant of :ref:`memory instruction ` is encoded with
 .. math::
    \begin{array}{llcllll}
    \production{memory argument} & \Bmemarg &::=&
-     a{:}\Bu32~~o{:}\Bu32 &\Rightarrow& 0~\{ \ALIGN~a,~\OFFSET~o \}
+     a{:}\Bu32~~o{:}\Bu64 &\Rightarrow& 0~\{ \ALIGN~a,~\OFFSET~o \}
        & (\iff a < 2^6) \\ &&|&
-     a{:}\Bu32~~x{:}\memidx~~o{:}\Bu32 &\Rightarrow& x~\{ \ALIGN~(a - 2^6),~\OFFSET~o \}
+     a{:}\Bu32~~x{:}\memidx~~o{:}\Bu64 &\Rightarrow& x~\{ \ALIGN~(a - 2^6),~\OFFSET~o \}
        & (\iff 2^6 \leq a < 2^7) \\
    \production{instruction} & \Binstr &::=& \dots \\ &&|&
      \hex{28}~~m{:}\Bmemarg &\Rightarrow& \I32.\LOAD~m \\ &&|&
diff --git a/document/core/binary/types.rst b/document/core/binary/types.rst
index 700cc2dbd..e2e3a199c 100644
--- a/document/core/binary/types.rst
+++ b/document/core/binary/types.rst
@@ -249,13 +249,15 @@ Additional shorthands are recognized for unary recursions and sub types without
 Limits
 ~~~~~~
 
-:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present.
+:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and the corresponsing index type.
 
 .. math::
    \begin{array}{llclll}
    \production{limits} & \Blimits &::=&
-     \hex{00}~~n{:}\Bu32 &\Rightarrow& \{ \LMIN~n, \LMAX~\epsilon \} \\ &&|&
-     \hex{01}~~n{:}\Bu32~~m{:}\Bu32 &\Rightarrow& \{ \LMIN~n, \LMAX~m \} \\
+     \hex{00}~~n{:}\Bu64 &\Rightarrow& (\I32, \{ \LMIN~n, \LMAX~\epsilon \}) \\ &&|&
+     \hex{01}~~n{:}\Bu64~~m{:}\Bu64 &\Rightarrow& (\I32, \{ \LMIN~n, \LMAX~m \}) \\ &&|&
+     \hex{04}~~n{:}\Bu64 &\Rightarrow& (\I64, \{ \LMIN~n, \LMAX~\epsilon \}) \\ &&|&
+     \hex{05}~~n{:}\Bu64~~m{:}\Bu64 &\Rightarrow& (\I64, \{ \LMIN~n, \LMAX~m \})
    \end{array}
 
 
@@ -271,7 +273,7 @@ Memory Types
 .. math::
    \begin{array}{llclll@{\qquad\qquad}l}
    \production{memory type} & \Bmemtype &::=&
-     \X{lim}{:}\Blimits &\Rightarrow& \X{lim} \\
+     (\X{it}, \X{lim}){:}\Blimits &\Rightarrow& \X{it}~~\X{lim} \\
    \end{array}
 
 
@@ -287,7 +289,7 @@ Table Types
 .. math::
    \begin{array}{llclll}
    \production{table type} & \Btabletype &::=&
-     \X{et}{:}\Breftype~~\X{lim}{:}\Blimits &\Rightarrow& \X{lim}~\X{et} \\
+     \X{et}{:}\Breftype~~(\X{it}, \X{lim}){:}\Blimits &\Rightarrow& \X{it}~~\X{lim}~\X{et} \\
    \end{array}
 
 
diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst
index fdd0941b6..4743e18b7 100644
--- a/document/core/exec/instructions.rst
+++ b/document/core/exec/instructions.rst
@@ -2541,28 +2541,30 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~i` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
+
+8. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-8. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then:
+9. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then:
 
    a. Trap.
 
-9. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`.
+10. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`.
 
-10. Push the value :math:`\val` to the stack.
+11. Push the value :math:`\val` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \val
+   S; F; (\X{it}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \val
    \end{array}
    \\ \qquad
      (\iff S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM[i] = \val) \\
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -2584,30 +2586,32 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`.
 
-6. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Pop the value :math:`\val` from the stack.
+7. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
 
-8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+8. Pop the value :math:`\val` from the stack.
 
-9. Pop the value :math:`\I32.\CONST~i` from the stack.
+9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-10. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then:
+10. Pop the value :math:`\X{it}.\CONST~i` from the stack.
+
+11. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then:
 
     a. Trap.
 
-11. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`.
+12. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~\val~(\TABLESET~x) &\stepto& S'; F; \epsilon
+   S; F; (\X{it}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S'; F; \epsilon
    \end{array}
    \\ \qquad
      (\iff S' = S \with \STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM[i] = \val) \\
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~\val~(\TABLESET~x) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -2629,14 +2633,16 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`.
 
-6. Let :math:`\X{sz}` be the length of :math:`\X{tab}.\TIELEM`.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Push the value :math:`\I32.\CONST~\X{sz}` to the stack.
+7. Let :math:`\X{sz}` be the length of :math:`\X{tab}.\TIELEM`.
+
+8. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack.
 
 .. math::
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\TABLESIZE~x) &\stepto& S; F; (\I32.\CONST~\X{sz})
+   S; F; (\TABLESIZE~x) &\stepto& S; F; (\X{it}.\CONST~\X{sz})
    \end{array}
    \\ \qquad
      (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz}) \\
@@ -2658,37 +2664,39 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`.
 
-6. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+7. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`.
 
-8. Pop the value :math:`\I32.\CONST~n` from the stack.
+8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
+9. Pop the value :math:`\X{it}.\CONST~n` from the stack.
 
-10. Pop the value :math:`\val` from the stack.
+10. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
+
+11. Pop the value :math:`\val` from the stack.
 
-11. Let :math:`\X{err}` be the |i32| value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`.
+12. Let :math:`\X{err}` be the :math:`\X{it}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`.
 
-12. Either:
+13. Either:
 
    a. If :ref:`growing ` :math:`\X{tab}` by :math:`n` entries with initialization value :math:`\val` succeeds, then:
 
-      i. Push the value :math:`\I32.\CONST~\X{sz}` to the stack.
+      i. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack.
 
    b. Else:
 
-      i. Push the value :math:`\I32.\CONST~\X{err}` to the stack.
+      i. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack.
 
-13. Or:
+14. Or:
 
-   a. push the value :math:`\I32.\CONST~\X{err}` to the stack.
+   a. push the value :math:`\X{it}.\CONST~\X{err}` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; \val~(\I32.\CONST~n)~(\TABLEGROW~x) &\stepto& S'; F; (\I32.\CONST~\X{sz})
+   S; F; \val~(\X{it}.\CONST~n)~(\TABLEGROW~x) &\stepto& S'; F; (\X{it}.\CONST~\X{sz})
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -2698,7 +2706,7 @@ Table Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; \val~(\I32.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1))
+   S; F; \val~(\X{it}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{it}.\CONST~\signed_{32}^{-1}(-1))
    \end{array}
    \end{array}
 
@@ -2726,60 +2734,62 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~n` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-8. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
+8. Pop the value :math:`\X{it}.\CONST~n` from the stack.
 
-9. Pop the value :math:`\val` from the stack.
+9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Pop the value :math:`\val` from the stack.
+
+11. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-11. Pop the value :math:`\I32.\CONST~i` from the stack.
+12. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-12. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then:
+13. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then:
 
     a. Trap.
 
-12. If :math:`n` is :math:`0`, then:
+13. If :math:`n` is :math:`0`, then:
 
     a. Return.
 
-13. Push the value :math:`\I32.\CONST~i` to the stack.
+14. Push the value :math:`\X{it}.\CONST~i` to the stack.
 
-14. Push the value :math:`\val` to the stack.
+15. Push the value :math:`\val` to the stack.
 
-15. Execute the instruction :math:`\TABLESET~x`.
+16. Execute the instruction :math:`\TABLESET~x`.
 
-16. Push the value :math:`\I32.\CONST~(i+1)` to the stack.
+17. Push the value :math:`\X{it}.\CONST~(i+1)` to the stack.
 
-17. Push the value :math:`\val` to the stack.
+18. Push the value :math:`\val` to the stack.
 
-18. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+19. Push the value :math:`\X{it}.\CONST~(n-1)` to the stack.
 
-19. Execute the instruction :math:`\TABLEFILL~x`.
+20. Execute the instruction :math:`\TABLEFILL~x`.
 
 .. math::
    \begin{array}{l}
-   S; F; (\I32.\CONST~i)~\val~(\I32.\CONST~n)~(\TABLEFILL~x)
+   S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~n)~(\TABLEFILL~x)
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
      (\iff & i + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex]
      \end{array}
    \\[1ex]
-   S; F; (\I32.\CONST~i)~\val~(\I32.\CONST~0)~(\TABLEFILL~x)
+   S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~0)~(\TABLEFILL~x)
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~i)~\val~(\I32.\CONST~n+1)~(\TABLEFILL~x)
+   S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~n+1)~(\TABLEFILL~x)
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~i)~\val~(\TABLESET~x) \\
-       (\I32.\CONST~i+1)~\val~(\I32.\CONST~n)~(\TABLEFILL~x) \\
+       (\X{it}.\CONST~i)~\val~(\TABLESET~x) \\
+       (\X{it}.\CONST~i+1)~\val~(\X{it}.\CONST~n)~(\TABLEFILL~x) \\
        \end{array}
      \\ \qquad
      (\otherwise) \\
@@ -2809,31 +2819,37 @@ Table Instructions
 
 9. Let :math:`\X{tab}_y` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}_y]`.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Let :math:`\X{it}_x~\limits_x` be the :ref:`table type ` :math:`\X{tab}_x.\TITYPE`.
 
-11. Pop the value :math:`\I32.\CONST~n` from the stack.
+11. Let :math:`\X{it}_y~\limits_y` be the :ref:`table type ` :math:`\X{tab}_y.\TITYPE`.
+
+12. Let :math:`\X{it}_n` be the :ref:`minimum ` of :math:`\X{it}_s` and :math:`\X{it}_d`.
+
+13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_n` is on the top of the stack.
 
-12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+14. Pop the value :math:`\X{it}_n.\CONST~n` from the stack.
 
-13. Pop the value :math:`\I32.\CONST~s` from the stack.
+15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_y` is on the top of the stack.
 
-14. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+16. Pop the value :math:`\X{it}_y.\CONST~s` from the stack.
 
-15. Pop the value :math:`\I32.\CONST~d` from the stack.
+17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_x` is on the top of the stack.
 
-16. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then:
+18. Pop the value :math:`\X{it}_x.\CONST~d` from the stack.
+
+19. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then:
 
     a. Trap.
 
-17. If :math:`n = 0`, then:
+20. If :math:`n = 0`, then:
 
    a. Return.
 
-18. If :math:`d \leq s`, then:
+21. If :math:`d \leq s`, then:
 
-   a. Push the value :math:`\I32.\CONST~d` to the stack.
+   a. Push the value :math:`\X{it}_x.\CONST~d` to the stack.
 
-   b. Push the value :math:`\I32.\CONST~s` to the stack.
+   b. Push the value :math:`\X{it}_y.\CONST~s` to the stack.
 
    c. Execute the instruction :math:`\TABLEGET~y`.
 
@@ -2841,38 +2857,38 @@ Table Instructions
 
    e. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`.
 
-   f. Push the value :math:`\I32.\CONST~(d+1)` to the stack.
+   f. Push the value :math:`\X{it}_x.\CONST~(d+1)` to the stack.
 
    g. Assert: due to the earlier check against the table size, :math:`s+1 < 2^{32}`.
 
-   h. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
+   h. Push the value :math:`\X{it}_y.\CONST~(s+1)` to the stack.
 
-19. Else:
+22. Else:
 
    a. Assert: due to the earlier check against the table size, :math:`d+n-1 < 2^{32}`.
 
-   b. Push the value :math:`\I32.\CONST~(d+n-1)` to the stack.
+   b. Push the value :math:`\X{it}_x.\CONST~(d+n-1)` to the stack.
 
    c. Assert: due to the earlier check against the table size, :math:`s+n-1 < 2^{32}`.
 
-   d. Push the value :math:`\I32.\CONST~(s+n-1)` to the stack.
+   d. Push the value :math:`\X{it}_y.\CONST~(s+n-1)` to the stack.
 
    c. Execute the instruction :math:`\TABLEGET~y`.
 
    f. Execute the instruction :math:`\TABLESET~x`.
 
-   g. Push the value :math:`\I32.\CONST~d` to the stack.
+   g. Push the value :math:`\X{it}_x.\CONST~d` to the stack.
 
-   h. Push the value :math:`\I32.\CONST~s` to the stack.
+   h. Push the value :math:`\X{it}_y.\CONST~s` to the stack.
 
-20. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+23. Push the value :math:`\X{it}_n.\CONST~(n-1)` to the stack.
 
-21. Execute the instruction :math:`\TABLECOPY~x~y`.
+24. Execute the instruction :math:`\TABLECOPY~x~y`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLECOPY~x~y)
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y)
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -2880,27 +2896,27 @@ Table Instructions
       \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex]
      \end{array}
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\TABLECOPY~x~y)
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~0)~(\TABLECOPY~x~y)
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLECOPY~x~y)
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~(\TABLECOPY~x~y)
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d)~(\I32.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\
-       (\I32.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\TABLECOPY~x~y) \\
+       (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\
+       (\X{it}_x.\CONST~d+1)~(\X{it}_y.\CONST~s+1)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y) \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff d \leq s)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLECOPY~x~y)
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~(\TABLECOPY~x~y)
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d+n)~(\I32.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\
-       (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLECOPY~x~y) \\
+       (\X{it}_x.\CONST~d+n)~(\X{it}_y.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\
+       (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y) \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff d > s) \\
@@ -2922,58 +2938,60 @@ Table Instructions
 
 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`.
 
-6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists.
+6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`.
 
-7. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`.
+7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists.
 
-8. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists.
+8. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`.
 
-9. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`.
+9. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`.
 
-11. Pop the value :math:`\I32.\CONST~n` from the stack.
+11. Assert: due to :ref:`validation `, a value of :ref:`value type `  is on the top of the stack.
+
+12. Pop the value :math:`\I32.\CONST~n` from the stack.
 
-12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
 
-13. Pop the value :math:`\I32.\CONST~s` from the stack.
+14. Pop the value :math:`\I32.\CONST~s` from the stack.
 
-14. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-15. Pop the value :math:`\I32.\CONST~d` from the stack.
+16. Pop the value :math:`\X{it}.\CONST~d` from the stack.
 
-16. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then:
+17. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then:
 
     a. Trap.
 
-17. If :math:`n = 0`, then:
+18. If :math:`n = 0`, then:
 
     a. Return.
 
-18. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`.
+19. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`.
 
-19. Push the value :math:`\I32.\CONST~d` to the stack.
+20. Push the value :math:`\X{it}.\CONST~d` to the stack.
 
-20. Push the value :math:`\val` to the stack.
+21. Push the value :math:`\val` to the stack.
 
-21. Execute the instruction :math:`\TABLESET~x`.
+22. Execute the instruction :math:`\TABLESET~x`.
 
-22. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`.
+23. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`.
 
-23. Push the value :math:`\I32.\CONST~(d+1)` to the stack.
+24. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack.
 
-24. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`.
+25. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`.
 
-25. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
+26. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
 
-26. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+27. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
 
-27. Execute the instruction :math:`\TABLEINIT~x~y`.
+28. Execute the instruction :math:`\TABLEINIT~x~y`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLEINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLEINIT~x~y)
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -2981,17 +2999,17 @@ Table Instructions
       \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex]
      \end{array}
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\TABLEINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\TABLEINIT~x~y)
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLEINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLEINIT~x~y)
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d)~\val~(\TABLESET~x) \\
-       (\I32.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\TABLEINIT~x~y) \\
+       (\X{it}.\CONST~d)~\val~(\TABLESET~x) \\
+       (\X{it}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\TABLEINIT~x~y) \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff \val = S.\SELEMS[F.\AMODULE.\MIELEMS[y]].\EIELEM[s]) \\
@@ -3057,39 +3075,41 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~i` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
+
+8. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
 
-9. If :math:`N` is not part of the instruction, then:
+10. If :math:`N` is not part of the instruction, then:
 
    a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`.
 
-10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
+12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
 
-12. If :math:`N` and :math:`\sx` are part of the instruction, then:
+13. If :math:`N` and :math:`\sx` are part of the instruction, then:
 
     a. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`.
 
     b. Let :math:`c` be the result of computing :math:`\extend^{\sx}_{N,|t|}(n)`.
 
-13. Else:
+14. Else:
 
     a. Let :math:`c` be the constant for which :math:`\bytes_t(c) = b^\ast`.
 
-14. Push the value :math:`t.\CONST~c` to the stack.
+15. Push the value :math:`t.\CONST~c` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\LOAD~x~\memarg) &\stepto& S; F; (t.\CONST~c)
+   S; F; (\X{it}.\CONST~i)~(t.\LOAD~x~\memarg) &\stepto& S; F; (t.\CONST~c)
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3099,7 +3119,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\LOAD{N}\K{\_}\sx~x~\memarg) &\stepto&
+   S; F; (\X{it}.\CONST~i)~(t.\LOAD{N}\K{\_}\sx~x~\memarg) &\stepto&
      S; F; (t.\CONST~\extend^{\sx}_{N,|t|}(n))
    \end{array}
    \\ \qquad
@@ -3110,7 +3130,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\LOAD({N}\K{\_}\sx)^?~x~\memarg) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(t.\LOAD({N}\K{\_}\sx)^?~x~\memarg) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3132,33 +3152,35 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~i` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+8. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-9. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+
+10. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`.
+11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`.
 
-11. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`.
+12. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`.
 
-12. Let :math:`W` be the integer :math:`M \cdot 2`.
+13. Let :math:`W` be the integer :math:`M \cdot 2`.
 
-13. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`.
+14. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`.
 
-14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`.
+15. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`.
 
-15. Push the value :math:`\V128.\CONST~c` to the stack.
+16. Push the value :math:`\V128.\CONST~c` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\LOAD{M}\K{x}N\_\sx~x~\memarg) &\stepto&
+   S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\_\sx~x~\memarg) &\stepto&
      S; F; (\V128.\CONST~c)
    \end{array}
    \\ \qquad
@@ -3171,7 +3193,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\LOAD{M}\K{x}N\K{\_}\sx~x~\memarg) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\K{\_}\sx~x~\memarg) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3193,31 +3215,33 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~i` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
+
+8. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
 
-9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
+11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
 
-11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`.
+12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`.
 
-12. Let :math:`L` be the integer :math:`128 / N`.
+13. Let :math:`L` be the integer :math:`128 / N`.
 
-13. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`.
+14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`.
 
-14. Push the value :math:`\V128.\CONST~c` to the stack.
+15. Push the value :math:`\V128.\CONST~c` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c)
+   S; F; (\X{it}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c)
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3228,7 +3252,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3250,29 +3274,31 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~i` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+8. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+
+10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
+11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
 
-11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`.
+12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`.
 
-12. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`.
+13. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`.
 
-13. Push the value :math:`\V128.\CONST~c` to the stack.
+14. Push the value :math:`\V128.\CONST~c` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c)
+   S; F; (\X{it}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c)
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3283,7 +3309,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3305,37 +3331,39 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\V128.\CONST~v` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack.
 
-8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+8. Pop the value :math:`\V128.\CONST~v` from the stack.
 
-9. Pop the value :math:`\I32.\CONST~i` from the stack.
+9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+10. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+
+12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
+13. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`.
 
-13. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`.
+14. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`.
 
-14. Let :math:`L` be :math:`128 / N`.
+15. Let :math:`L` be :math:`128 / N`.
 
-15. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`.
+16. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`.
 
-16. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`.
+17. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`.
 
-17. Push the value :math:`\V128.\CONST~c` to the stack.
+18. Push the value :math:`\V128.\CONST~c` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\CONST~v)~(\V128\K{.}\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; (\V128.\CONST~c)
+   S; F; (\X{it}.\CONST~i)~(\V128.\CONST~v)~(\V128\K{.}\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; (\V128.\CONST~c)
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3347,7 +3375,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\CONST~v)~(\V128.\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\V128.\CONST~v)~(\V128.\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3370,41 +3398,43 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`t.\CONST~c` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack.
 
-8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+8. Pop the value :math:`t.\CONST~c` from the stack.
 
-9. Pop the value :math:`\I32.\CONST~i` from the stack.
+9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
+
+10. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
 
-11. If :math:`N` is not part of the instruction, then:
+12. If :math:`N` is not part of the instruction, then:
 
     a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`.
 
-12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+13. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-13. If :math:`N` is part of the instruction, then:
+14. If :math:`N` is part of the instruction, then:
 
     a. Let :math:`n` be the result of computing :math:`\wrap_{|t|,N}(c)`.
 
     b. Let :math:`b^\ast` be the byte sequence :math:`\bytes_{\iN}(n)`.
 
-14. Else:
+15. Else:
 
     a. Let :math:`b^\ast` be the byte sequence :math:`\bytes_t(c)`.
 
-15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`.
+16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\CONST~c)~(t.\STORE~x~\memarg) &\stepto& S'; F; \epsilon
+   S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE~x~\memarg) &\stepto& S'; F; \epsilon
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3414,7 +3444,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}~x~\memarg) &\stepto& S'; F; \epsilon
+   S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}~x~\memarg) &\stepto& S'; F; \epsilon
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3424,7 +3454,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}^?~x~\memarg) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}^?~x~\memarg) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3446,33 +3476,35 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\V128.\CONST~c` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack.
 
-8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+8. Pop the value :math:`\V128.\CONST~c` from the stack.
 
-9. Pop the value :math:`\I32.\CONST~i` from the stack.
+9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+10. Pop the value :math:`\X{it}.\CONST~i` from the stack.
 
-11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`.
+
+12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-12. Let :math:`L` be :math:`128/N`.
+13. Let :math:`L` be :math:`128/N`.
 
-13. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`.
+14. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`.
 
-14. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`.
+15. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`.
 
-15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`.
+16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S'; F; \epsilon
+   S; F; (\X{it}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S'; F; \epsilon
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3483,7 +3515,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP
+   S; F; (\X{it}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP
    \end{array}
    \\ \qquad
      (\otherwise) \\
@@ -3505,14 +3537,16 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Let :math:`\X{sz}` be the length of :math:`\X{mem}.\MIDATA` divided by the :ref:`page size `.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
+
+7. Let :math:`\X{sz}` be the length of :math:`\X{mem}.\MIDATA` divided by the :ref:`page size `.
 
-7. Push the value :math:`\I32.\CONST~\X{sz}` to the stack.
+8. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack.
 
 .. math::
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\I32.\CONST~\X{sz})
+   S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\X{it}.\CONST~\X{sz})
    \end{array}
    \\ \qquad
      (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki}) \\
@@ -3534,33 +3568,35 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`.
 
-6. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+7. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `.
 
-8. Pop the value :math:`\I32.\CONST~n` from the stack.
+8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-9. Let :math:`\X{err}` be the |i32| value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`.
+9. Pop the value :math:`\X{it}.\CONST~n` from the stack.
 
-10. Either:
+10. Let :math:`\X{err}` be the :math:`\X{it}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`.
+
+11. Either:
 
    a. If :ref:`growing ` :math:`\X{mem}` by :math:`n` :ref:`pages ` succeeds, then:
 
-      i. Push the value :math:`\I32.\CONST~\X{sz}` to the stack.
+      i. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack.
 
    b. Else:
 
-      i. Push the value :math:`\I32.\CONST~\X{err}` to the stack.
+      i. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack.
 
-11. Or:
+12. Or:
 
-   a. Push the value :math:`\I32.\CONST~\X{err}` to the stack.
+   a. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~n)~(\MEMORYGROW~x) &\stepto& S'; F; (\I32.\CONST~\X{sz})
+   S; F; (\X{it}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S'; F; (\X{it}.\CONST~\X{sz})
    \end{array}
    \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3570,7 +3606,7 @@ Memory Instructions
      \end{array}
    \\[1ex]
    \begin{array}{lcl@{\qquad}l}
-   S; F; (\I32.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1))
+   S; F; (\X{it}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{it}.\CONST~\signed_{32}^{-1}(-1))
    \end{array}
    \end{array}
 
@@ -3598,17 +3634,19 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`.
 
-6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Pop the value :math:`\I32.\CONST~n` from the stack.
+7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
+
+7. Pop the value :math:`\X{it}.\CONST~n` from the stack.
 
 8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
 
 9. Pop the value :math:`\val` from the stack.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-11. Pop the value :math:`\I32.\CONST~d` from the stack.
+11. Pop the value :math:`\X{it}.\CONST~d` from the stack.
 
 12. If :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
@@ -3622,37 +3660,37 @@ Memory Instructions
 
 15. Push the value :math:`\val` to the stack.
 
-16. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`.
+16. Execute the instruction :math:`\X{it}\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`.
 
 17. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`.
 
-18. Push the value :math:`\I32.\CONST~(d+1)` to the stack.
+18. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack.
 
 19. Push the value :math:`\val` to the stack.
 
-20. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+20. Push the value :math:`\X{it}.\CONST~(n-1)` to the stack.
 
 21. Execute the instruction :math:`\MEMORYFILL~x`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
-   S; F; (\I32.\CONST~d)~\val~(\I32.\CONST~n)~\MEMORYFILL~x
+   S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~n)~\MEMORYFILL~x
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      (\iff d + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA|)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~\val~(\I32.\CONST~0)~\MEMORYFILL~x
+   S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~0)~\MEMORYFILL~x
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~\val~(\I32.\CONST~n+1)~\MEMORYFILL~x
+   S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~n+1)~\MEMORYFILL~x
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d)~\val~(\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
-       (\I32.\CONST~d+1)~\val~(\I32.\CONST~n)~\MEMORYFILL~x \\
+       (\X{it}.\CONST~d)~\val~(\X{it}\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
+       (\X{it}.\CONST~d+1)~\val~(\X{it}.\CONST~n)~\MEMORYFILL~x \\
        \end{array}
      \\ \qquad
      (\otherwise) \\
@@ -3682,31 +3720,37 @@ Memory Instructions
 
 9. Let :math:`\X{mem}_s` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{sa}]`.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Let :math:`\X{it}_d~\limits_d` be the :ref:`memory type ` :math:`\X{mem}_d.\MITYPE`.
 
-11. Pop the value :math:`\I32.\CONST~n` from the stack.
+11. Let :math:`\X{it}_s~\limits_s` be the :ref:`memory type ` :math:`\X{mem}_s.\MITYPE`.
+
+12. Let :math:`\X{it}_n` be the :ref:`minimum ` of :math:`\X{it}_s` and :math:`\X{it}_d`.
+
+13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_n` is on the top of the stack.
 
-12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+14. Pop the value :math:`\X{it}_n.\CONST~n` from the stack.
 
-13. Pop the value :math:`\I32.\CONST~s` from the stack.
+15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_s` is on the top of the stack.
 
-14. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+16. Pop the value :math:`\X{it}_s.\CONST~s` from the stack.
 
-15. Pop the value :math:`\I32.\CONST~d` from the stack.
+17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_d` is on the top of the stack.
 
-16. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then:
+18. Pop the value :math:`\X{it}_d.\CONST~d` from the stack.
+
+19. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then:
 
     a. Trap.
 
-17. If :math:`n = 0`, then:
+20. If :math:`n = 0`, then:
 
    a. Return.
 
-18. If :math:`d \leq s`, then:
+21. If :math:`d \leq s`, then:
 
-   a. Push the value :math:`\I32.\CONST~d` to the stack.
+   a. Push the value :math:`\X{it}_d.\CONST~d` to the stack.
 
-   b. Push the value :math:`\I32.\CONST~s` to the stack.
+   b. Push the value :math:`\X{it}_s.\CONST~s` to the stack.
 
    c. Execute the instruction :math:`\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}`.
 
@@ -3714,70 +3758,70 @@ Memory Instructions
 
    e. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`.
 
-   f. Push the value :math:`\I32.\CONST~(d+1)` to the stack.
+   f. Push the value :math:`\X{it}_d.\CONST~(d+1)` to the stack.
 
    g. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`.
 
-   h. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
+   h. Push the value :math:`\X{it}_s.\CONST~(s+1)` to the stack.
 
-19. Else:
+22. Else:
 
    a. Assert: due to the earlier check against the memory size, :math:`d+n-1 < 2^{32}`.
 
-   b. Push the value :math:`\I32.\CONST~(d+n-1)` to the stack.
+   b. Push the value :math:`\X{it}_d.\CONST~(d+n-1)` to the stack.
 
    c. Assert: due to the earlier check against the memory size, :math:`s+n-1 < 2^{32}`.
 
-   d. Push the value :math:`\I32.\CONST~(s+n-1)` to the stack.
+   d. Push the value :math:`\X{it}_s.\CONST~(s+n-1)` to the stack.
 
    e. Execute the instruction :math:`\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}`.
 
    f. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`.
 
-   g. Push the value :math:`\I32.\CONST~d` to the stack.
+   g. Push the value :math:`\X{it}_d.\CONST~d` to the stack.
 
-   h. Push the value :math:`\I32.\CONST~s` to the stack.
+   h. Push the value :math:`\X{it}_s.\CONST~s` to the stack.
 
-20. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+23. Push the value :math:`\X{it}_n.\CONST~(n-1)` to the stack.
 
-21. Execute the instruction :math:`\MEMORYCOPY~x~y`.
+24. Execute the instruction :math:`\MEMORYCOPY~x~y`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~\MEMORYCOPY~x~y
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
-     (\iff & d + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| \\
-      \vee & s + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[y]].\MIDATA|) \\[1ex]
+     (\iff & (d + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| \\
+      \vee & s + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[y]].\MIDATA|)) \\
      \end{array}
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~\MEMORYCOPY~x~y
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~0)~\MEMORYCOPY~x~y
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~\MEMORYCOPY~x~y
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~\MEMORYCOPY~x~y
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d) \\
-       (\I32.\CONST~s)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\
+       (\X{it}_x.\CONST~d) \\
+       (\X{it}_y.\CONST~s)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\
        (\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
-       (\I32.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~\MEMORYCOPY~x~y \\
+       (\X{it}_x.\CONST~d+1)~(\X{it}_y.\CONST~s+1)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff d \leq s)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~\MEMORYCOPY~x~y
+   S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~\MEMORYCOPY~x~y
      \quad\stepto
      \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d+n) \\
-       (\I32.\CONST~s+n)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\
+       (\X{it}_x.\CONST~d+n) \\
+       (\X{it}_y.\CONST~s+n)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\
        (\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
-       (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~\MEMORYCOPY~x~y \\
+       (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff d > s) \\
@@ -3799,58 +3843,60 @@ Memory Instructions
 
 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`.
 
-6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists.
+6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`.
 
-7. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`.
+7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists.
 
-8. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists.
+8. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`.
 
-9. Let :math:`\X{data}` be the  :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`.
+9. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists.
 
-10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+10. Let :math:`\X{data}` be the  :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`.
 
-11. Pop the value :math:`\I32.\CONST~n` from the stack.
+11. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+
+12. Pop the value :math:`\I32.\CONST~n` from the stack.
 
-12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
 
-13. Pop the value :math:`\I32.\CONST~s` from the stack.
+14. Pop the value :math:`\I32.\CONST~s` from the stack.
 
-14. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack.
+15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack.
 
-15. Pop the value :math:`\I32.\CONST~d` from the stack.
+16. Pop the value :math:`\X{it}.\CONST~d` from the stack.
 
-16. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
+17. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then:
 
     a. Trap.
 
-17. If :math:`n = 0`, then:
+18. If :math:`n = 0`, then:
 
     a. Return.
 
-18. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`.
+19. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`.
 
-19. Push the value :math:`\I32.\CONST~d` to the stack.
+20. Push the value :math:`\X{it}.\CONST~d` to the stack.
 
-20. Push the value :math:`\I32.\CONST~b` to the stack.
+21. Push the value :math:`\I32.\CONST~b` to the stack.
 
-21. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`.
+22. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`.
 
-22. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`.
+23. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`.
 
-23. Push the value :math:`\I32.\CONST~(d+1)` to the stack.
+24. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack.
 
-24. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`.
+25. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`.
 
-25. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
+26. Push the value :math:`\I32.\CONST~(s+1)` to the stack.
 
-26. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
+27. Push the value :math:`\I32.\CONST~(n-1)` to the stack.
 
-27. Execute the instruction :math:`\MEMORYINIT~x~y`.
+28. Execute the instruction :math:`\MEMORYINIT~x~y`.
 
 .. math::
    ~\\[-1ex]
    \begin{array}{l}
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\MEMORYINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\MEMORYINIT~x~y)
      \quad\stepto\quad S; F; \TRAP
      \\ \qquad
      \begin{array}[t]{@{}r@{~}l@{}}
@@ -3858,17 +3904,17 @@ Memory Instructions
       \vee & s + n > |S.\SDATAS[F.\AMODULE.\MIDATAS[y]].\MIDATA|) \\[1ex]
      \end{array}
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\MEMORYINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\MEMORYINIT~x~y)
      \quad\stepto\quad S; F; \epsilon
      \\ \qquad
      (\otherwise)
    \\[1ex]
-   S; F; (\I32.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\MEMORYINIT~x~y)
+   S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\MEMORYINIT~x~y)
      \quad\stepto
        \\ \qquad S; F;
        \begin{array}[t]{@{}l@{}}
-       (\I32.\CONST~d)~(\I32.\CONST~b)~(\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
-       (\I32.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) \\
+       (\X{it}.\CONST~d)~(\I32.\CONST~b)~(\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\
+       (\X{it}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) \\
        \end{array}
      \\ \qquad
      (\otherwise, \iff b = S.\SDATAS[F.\AMODULE.\MIDATAS[y]].\DIDATA[s]) \\
diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst
index 4b3bb0863..ae4523119 100644
--- a/document/core/syntax/instructions.rst
+++ b/document/core/syntax/instructions.rst
@@ -650,7 +650,7 @@ Instructions in this group are concerned with linear :ref:`memory `.
 .. math::
    \begin{array}{llrl}
    \production{memory immediate} & \memarg &::=&
-     \{ \OFFSET~\u32, \ALIGN~\u32 \} \\
+     \{ \OFFSET~\u64, \ALIGN~\u32 \} \\
    \production{lane width} & \X{ww} &::=&
      8 ~|~ 16 ~|~ 32 ~|~ 64 \\
    \production{instruction} & \instr &::=&
@@ -696,9 +696,6 @@ The static address offset is added to the dynamic address operand, yielding a 33
 All values are read and written in |LittleEndian|_ byte order.
 A :ref:`trap ` results if any of the accessed memory bytes lies outside the address range implied by the memory's current size.
 
-.. note::
-   Future versions of WebAssembly might provide memory instructions with 64 bit address ranges.
-
 The |MEMORYSIZE| instruction returns the current size of a memory.
 The |MEMORYGROW| instruction grows a memory by a given delta and returns the previous size, or :math:`-1` if enough memory cannot be allocated.
 Both instructions operate in units of :ref:`page size `.
diff --git a/document/core/syntax/types.rst b/document/core/syntax/types.rst
index 406eebde7..838ff87eb 100644
--- a/document/core/syntax/types.rst
+++ b/document/core/syntax/types.rst
@@ -349,6 +349,39 @@ In a :ref:`module `, each member of a recursive type is assigned
 The syntax of sub types is :ref:`generalized ` for the purpose of specifying :ref:`validation ` and :ref:`execution `.
 
 
+.. _index:: ! index type
+   pair: abstract syntax; index type
+   single: memory; index type
+   single: table; index type
+.. _syntax-idxtype:
+
+Index Type
+~~~~~~~~~~
+
+*Index types* classify the values that can be used to index into
+:ref:`memories ` and :ref:`tables `.
+
+.. math::
+   \begin{array}{llll}
+   \production{index type} & \idxtype &::=&
+     \I32 ~|~ \I64 \\
+   \end{array}
+
+.. _aux-idxtype-min:
+
+Conventions
+...........
+
+The *minimum* of two index types is defined as |I32| if either of the types are
+|I32|, and |I64| otherwise.
+
+.. math::
+   \begin{array}{llll}
+   \itmin(\I64, \I64) &=& \I64 \\
+   \itmin(\X{it}_1, \X{it}_2) &=& \I32 & (\otherwise) \\
+   \end{array}
+
+
 .. index:: ! limits, memory type, table type
    pair: abstract syntax; limits
    single: memory; limits
@@ -363,7 +396,7 @@ Limits
 .. math::
    \begin{array}{llrl}
    \production{limits} & \limits &::=&
-     \{ \LMIN~\u32, \LMAX~\u32^? \} \\
+     \{ \LMIN~\u64, \LMAX~\u64^? \} \\
    \end{array}
 
 If no maximum is given, the respective storage can grow to any size.
@@ -383,7 +416,7 @@ Memory Types
 .. math::
    \begin{array}{llrl}
    \production{memory type} & \memtype &::=&
-     \limits \\
+     ~\idxtype~\limits \\
    \end{array}
 
 The limits constrain the minimum and optionally the maximum size of a memory.
@@ -404,7 +437,7 @@ Table Types
 .. math::
    \begin{array}{llrl}
    \production{table type} & \tabletype &::=&
-     \limits~\reftype \\
+     ~\idxtype~\limits ~\reftype \\
    \end{array}
 
 Like memories, tables are constrained by limits for their minimum and optionally maximum size.
diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst
index 591ca2e0a..541f960f0 100644
--- a/document/core/text/modules.rst
+++ b/document/core/text/modules.rst
@@ -365,11 +365,13 @@ A :ref:`data segment ` can be given inline with a memory definition,
 .. math::
    \begin{array}{llclll}
    \production{module field} &
-     \text{(}~\text{memory}~~\Tid^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad
-       \text{(}~\text{memory}~~\Tid'~~m~~m~\text{)} \\ & \qquad
-       \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\text{i32.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)}
+     \text{(}~\text{memory}~~\Tid^?~~\X{it}^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad
+       \text{(}~\text{memory}~~\Tid'~~\X{it}^?~~m~~m~\text{)} \\ & \qquad
+       \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\X{it}'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)}
        \\ & \qquad\qquad
-       (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, m = \F{ceil}(n / 64\,\F{Ki})) \\
+       (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad
+        \iff it^? \neq \epsilon \wedge \X{it}' = \X{it}^? \vee \X{it}^? = \epsilon \wedge \X{it}' = \text{i32}, \\ & \qquad\qquad
+        m = \F{ceil}(n / 64\,\F{Ki})), \\
    \end{array}
 
 Memories can be defined as :ref:`imports ` or :ref:`exports ` inline:
diff --git a/document/core/text/types.rst b/document/core/text/types.rst
index 731af495a..6833f3e2a 100644
--- a/document/core/text/types.rst
+++ b/document/core/text/types.rst
@@ -282,6 +282,32 @@ Similarly, final sub types with no super-types can omit the |Tsub| keyword and a
    \end{array}
 
 
+.. index:: index type
+   pair: text format; index type
+.. _text-idxtype:
+
+Index Type
+~~~~~~~~~~
+
+.. math::
+   \begin{array}{llclll}
+   \production{index type} & \Tidxtype &::=&
+     \text{i32} &\Rightarrow& \I32 \\ &&|&
+     \text{i64} &\Rightarrow& \I64 \\
+   \end{array}
+
+Abbreviations
+.............
+
+The index type can be omited, in which case it defaults :math:`\I32`:
+
+.. math::
+   \begin{array}{llclll}
+   \production{index type} &
+     \text{} &\equiv& \text{i32}
+   \end{array}
+
+
 .. index:: limits
    pair: text format; limits
 .. _text-limits:
@@ -307,7 +333,7 @@ Memory Types
 .. math::
    \begin{array}{llclll@{\qquad\qquad}l}
    \production{memory type} & \Tmemtype_I &::=&
-     \X{lim}{:}\Tlimits &\Rightarrow& \X{lim} \\
+     \X{it}{:}\Tidxtype~~\X{lim}{:}\Tlimits &\Rightarrow& \X{it}~\X{lim} \\
    \end{array}
 
 
@@ -321,7 +347,7 @@ Table Types
 .. math::
    \begin{array}{llclll}
    \production{table type} & \Ttabletype_I &::=&
-     \X{lim}{:}\Tlimits~~\X{et}{:}\Treftype_I &\Rightarrow& \X{lim}~\X{et} \\
+     \X{it}{:}\Tidxtype~~\X{lim}{:}\Tlimits~~\X{et}{:}\Treftype_I &\Rightarrow& \X{it}~\X{lim}~\X{et} \\
    \end{array}
 
 
diff --git a/document/core/util/macros.def b/document/core/util/macros.def
index 84cb8ffb0..dd17dcf9f 100644
--- a/document/core/util/macros.def
+++ b/document/core/util/macros.def
@@ -269,6 +269,7 @@
 
 .. |globaltype| mathdef:: \xref{syntax/types}{syntax-globaltype}{\X{globaltype}}
 .. |tabletype| mathdef:: \xref{syntax/types}{syntax-tabletype}{\X{tabletype}}
+.. |idxtype| mathdef:: \xref{syntax/types}{syntax-idxtype}{\X{idxtype}}
 .. |memtype| mathdef:: \xref{syntax/types}{syntax-memtype}{\X{memtype}}
 
 .. |limits| mathdef:: \xref{syntax/types}{syntax-limits}{\X{limits}}
@@ -292,6 +293,7 @@
 .. |unrollht| mathdef:: \xref{appendix/properties}{aux-unroll-heaptype}{\F{unroll}}
 
 .. |unpacktype| mathdef:: \xref{syntax/types}{aux-unpacktype}{\F{unpack}}
+.. |itmin| mathdef:: \xref{syntax/types}{aux-idxtype-min}{\F{itmin}}
 
 .. |etfuncs| mathdef:: \xref{syntax/types}{syntax-externtype}{\F{funcs}}
 .. |ettables| mathdef:: \xref{syntax/types}{syntax-externtype}{\F{tables}}
@@ -913,6 +915,7 @@
 
 .. |Tglobaltype| mathdef:: \xref{text/types}{text-globaltype}{\T{globaltype}}
 .. |Ttabletype| mathdef:: \xref{text/types}{text-tabletype}{\T{tabletype}}
+.. |Tidxtype| mathdef:: \xref{text/types}{text-idxtype}{\T{idxtype}}
 .. |Tmemtype| mathdef:: \xref{text/types}{text-memtype}{\T{memtype}}
 .. |Tlimits| mathdef:: \xref{text/types}{text-limits}{\T{limits}}
 
diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst
index 139b5a584..fc83e1d7b 100644
--- a/document/core/valid/instructions.rst
+++ b/document/core/valid/instructions.rst
@@ -1328,15 +1328,15 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [t]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [t]`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
    }{
-     C \vdashinstr \TABLEGET~x : [\I32] \to [t]
+     C \vdashinstr \TABLEGET~x : [\X{it}] \to [t]
    }
 
 
@@ -1347,15 +1347,15 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
-* Then the instruction is valid with type :math:`[\I32~t] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~t] \to []`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
    }{
-     C \vdashinstr \TABLESET~x : [\I32~t] \to []
+     C \vdashinstr \TABLESET~x : [\X{it}~t] \to []
    }
 
 
@@ -1366,13 +1366,13 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[] \to [\I32]`.
+* Then the instruction is valid with type :math:`[] \to [\X{it}]`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \tabletype
+     C.\CTABLES[x] = \X{it}~\limits~t
    }{
-     C \vdashinstr \TABLESIZE~x : [] \to [\I32]
+     C \vdashinstr \TABLESIZE~x : [] \to [\X{it}]
    }
 
 
@@ -1383,15 +1383,15 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
-* Then the instruction is valid with type :math:`[t~\I32] \to [\I32]`.
+* Then the instruction is valid with type :math:`[t~\X{it}] \to [\X{it}]`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
    }{
-     C \vdashinstr \TABLEGROW~x : [t~\I32] \to [\I32]
+     C \vdashinstr \TABLEGROW~x : [t~\X{it}] \to [\X{it}]
    }
 
 
@@ -1402,15 +1402,15 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
-* Then the instruction is valid with type :math:`[\I32~t~\I32] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~t~\X{it}] \to []`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
    }{
-     C \vdashinstr \TABLEFILL~x : [\I32~t~\I32] \to []
+     C \vdashinstr \TABLEFILL~x : [\X{it}~t~\X{it}] \to []
    }
 
 
@@ -1421,25 +1421,27 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits_1~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}_1~\limits_1~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
 * The table :math:`C.\CTABLES[y]` must be defined in the context.
 
-* Let :math:`\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`.
+* Let :math:`\X{it}_2~\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`.
+
+* Let :math:`\X{it}` be the :ref:`minimum ` of :math:`\X{it}_1` and :math:`\X{it}_2`
 
 * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`.
 
-* Then the instruction is valid with type :math:`[\I32~\I32~\I32] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}_1~\X{it}_2~\itmin(\X{it}_1, \X{it}_2)] \to []`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits_1~t_1
+     C.\CTABLES[x] = \X{it}~\limits_1~t_1
      \qquad
-     C.\CTABLES[y] = \limits_2~t_2
+     C.\CTABLES[y] = \X{it}~\limits_2~t_2
      \qquad
      C \vdashreftypematch t_2 \matchesvaltype t_1
    }{
-     C \vdashinstr \TABLECOPY~x~y : [\I32~\I32~\I32] \to []
+     C \vdashinstr \TABLECOPY~x~y : [\X{it}_1~\X{it}_2~\itmin(\X{it}_1, \X{it}_2)] \to []
    }
 
 
@@ -1450,7 +1452,7 @@ Table Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
 * The element segment :math:`C.\CELEMS[y]` must be defined in the context.
 
@@ -1458,17 +1460,17 @@ Table Instructions
 
 * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`.
 
-* Then the instruction is valid with type :math:`[\I32~\I32~\I32] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~\I32~\I32] \to []`.
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t_1
+     C.\CTABLES[x] = \X{it}~\limits~t_1
      \qquad
      C.\CELEMS[y] = t_2
      \qquad
      C \vdashreftypematch t_2 \matchesvaltype t_1
    }{
-     C \vdashinstr \TABLEINIT~x~y : [\I32~\I32~\I32] \to []
+     C \vdashinstr \TABLEINIT~x~y : [\X{it}~\I32~\I32] \to []
    }
 
 
@@ -1505,17 +1507,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [t]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [t]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq |t|/8
    }{
-     C \vdashinstr t\K{.load}~x~\memarg : [\I32] \to [t]
+     C \vdashinstr t\K{.load}~x~\memarg : [\X{it}] \to [t]
    }
 
 
@@ -1526,17 +1530,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [t]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [t]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq N/8
    }{
-     C \vdashinstr t\K{.load}N\K{\_}\sx~x~\memarg : [\I32] \to [t]
+     C \vdashinstr t\K{.load}N\K{\_}\sx~x~\memarg : [\X{it}] \to [t]
    }
 
 
@@ -1545,17 +1551,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`.
 
-* Then the instruction is valid with type :math:`[\I32~t] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~t] \to []`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq |t|/8
    }{
-     C \vdashinstr t\K{.store}~x~\memarg : [\I32~t] \to []
+     C \vdashinstr t\K{.store}~x~\memarg : [\X{it}~t] \to []
    }
 
 
@@ -1568,15 +1576,15 @@ Memory Instructions
 
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
-* Then the instruction is valid with type :math:`[\I32~t] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~t] \to []`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq N/8
    }{
-     C \vdashinstr t\K{.store}N~x~\memarg : [\I32~t] \to []
+     C \vdashinstr t\K{.store}N~x~\memarg : [\X{it}~t] \to []
    }
 
 
@@ -1587,17 +1595,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8 \cdot M`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [\V128]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq N/8 \cdot M
    }{
-     C \vdashinstr \K{v128.}\LOAD{N}\K{x}M\_\sx~x~\memarg : [\I32] \to [\V128]
+     C \vdashinstr \K{v128.}\LOAD{N}\K{x}M\_\sx~x~\memarg : [\X{it}] \to [\V128]
    }
 
 
@@ -1608,17 +1618,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [\V128]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq N/8
    }{
-     C \vdashinstr \K{v128.}\LOAD{N}\K{\_splat}~x~\memarg : [\I32] \to [\V128]
+     C \vdashinstr \K{v128.}\LOAD{N}\K{\_splat}~x~\memarg : [\X{it}] \to [\V128]
    }
 
 
@@ -1629,17 +1641,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
-* Then the instruction is valid with type :math:`[\I32] \to [\V128]`.
+* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} \leq N/8
    }{
-     C \vdashinstr \K{v128.}\LOAD{N}\K{\_zero}~x~\memarg : [\I32] \to [\V128]
+     C \vdashinstr \K{v128.}\LOAD{N}\K{\_zero}~x~\memarg : [\X{it}] \to [\V128]
    }
 
 
@@ -1650,21 +1664,23 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
 * The lane index :math:`\laneidx` must be smaller than :math:`128/N`.
 
-* Then the instruction is valid with type :math:`[\I32~\V128] \to [\V128]`.
+* Then the instruction is valid with type :math:`[\X{it}~\V128] \to [\V128]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} < N/8
      \qquad
      \laneidx < 128/N
    }{
-     C \vdashinstr \K{v128.}\LOAD{N}\K{\_lane}~x~\memarg~\laneidx : [\I32~\V128] \to [\V128]
+     C \vdashinstr \K{v128.}\LOAD{N}\K{\_lane}~x~\memarg~\laneidx : [\X{it}~\V128] \to [\V128]
    }
 
 
@@ -1675,21 +1691,22 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
 * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`.
 
 * The lane index :math:`\laneidx` must be smaller than :math:`128/N`.
 
-* Then the instruction is valid with type :math:`[\I32~\V128] \to [\V128]`.
+* Then the instruction is valid with type :math:`[\X{it}~\V128] \to [\V128]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      2^{\memarg.\ALIGN} < N/8
      \qquad
      \laneidx < 128/N
    }{
-     C \vdashinstr \K{v128.}\STORE{N}\K{\_lane}~x~\memarg~\laneidx : [\I32~\V128] \to []
+     C \vdashinstr \K{v128.}\STORE{N}\K{\_lane}~x~\memarg~\laneidx : [\X{it}~\V128] \to []
    }
 
 
@@ -1700,13 +1717,15 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[] \to [\I32]`.
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
+* Then the instruction is valid with type :math:`[] \to [\X{it}]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
    }{
-     C \vdashinstr \MEMORYSIZE~x : [] \to [\I32]
+     C \vdashinstr \MEMORYSIZE~x : [] \to [\X{it}]
    }
 
 
@@ -1717,13 +1736,15 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[\I32] \to [\I32]`.
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
+* Then the instruction is valid with type :math:`[\X{it}] \to [\X{it}]`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
    }{
-     C \vdashinstr \MEMORYGROW~x : [\I32] \to [\I32]
+     C \vdashinstr \MEMORYGROW~x : [\X{it}] \to [\X{it}]
    }
 
 
@@ -1734,13 +1755,15 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[\I32~\I32~\I32] \to []`.
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
+* Then the instruction is valid with type :math:`[\X{it}~\I32~\X{it}] \to []`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
    }{
-     C \vdashinstr \MEMORYFILL~x : [\I32~\I32~\I32] \to []
+     C \vdashinstr \MEMORYFILL~x : [\X{it}~\I32~\X{it}] \to []
    }
 
 
@@ -1753,15 +1776,21 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[y]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[\I32~\I32~\I32] \to []`.
+* Let :math:`\X{it}_x~\limits_x` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
+* Let :math:`\X{it}_y~\limits_y` be the :ref:`memory type ` :math:`C.\CMEMS[y]`.
+
+* Let :math:`\X{it}` be the :ref:`minimum ` of :math:`\X{it}_x` and :math:`\X{it}_y`
+
+* Then the instruction is valid with type :math:`[\X{it}_x~\X{it}_y~\itmin(\X{it}_x, \X{it}_y)] \to []`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}_x~\limits_y
      \qquad
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[y] = \X{it}_y~\limits_y
    }{
-     C \vdashinstr \MEMORYCOPY~x~y : [\I32~\I32~\I32] \to []
+     C \vdashinstr \MEMORYCOPY~x~y : [\X{it}_x~\X{it}_y~\itmin(\X{it}_x, \X{it}_y)] \to []
    }
 
 
@@ -1772,17 +1801,19 @@ Memory Instructions
 
 * The memory :math:`C.\CMEMS[x]` must be defined in the context.
 
+* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`.
+
 * The data segment :math:`C.\CDATAS[y]` must be defined in the context.
 
-* Then the instruction is valid with type :math:`[\I32~\I32~\I32] \to []`.
+* Then the instruction is valid with type :math:`[\X{it}~\I32~\I32] \to []`.
 
 .. math::
    \frac{
-     C.\CMEMS[x] = \memtype
+     C.\CMEMS[x] = \X{it}~\limits
      \qquad
      C.\CDATAS[y] = {\ok}
    }{
-     C \vdashinstr \MEMORYINIT~x~y : [\I32~\I32~\I32] \to []
+     C \vdashinstr \MEMORYINIT~x~y : [\X{it}~\I32~\I32] \to []
    }
 
 
@@ -2216,7 +2247,7 @@ Control Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
 * The :ref:`reference type ` :math:`t` must :ref:`match ` type :math:`\REF~\NULL~\FUNC`.
 
@@ -2228,13 +2259,13 @@ Control Instructions
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
      \qquad
      C \vdashvaltypematch t \matchesreftype \REF~\NULL~\FUNC
      \qquad
      \expanddt(C.\CTYPES[y]) = \TFUNC~[t_1^\ast] \toF [t_2^\ast]
    }{
-     C \vdashinstr \CALLINDIRECT~x~y : [t_1^\ast~\I32] \to [t_2^\ast]
+     C \vdashinstr \CALLINDIRECT~x~y : [t_1^\ast~\X{it}] \to [t_2^\ast]
    }
 
 
@@ -2305,7 +2336,7 @@ Control Instructions
 
 * The table :math:`C.\CTABLES[x]` must be defined in the context.
 
-* Let :math:`\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
+* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`.
 
 * The :ref:`reference type ` :math:`t` must :ref:`match ` type :math:`\REF~\NULL~\FUNC`.
 
@@ -2319,7 +2350,7 @@ Control Instructions
 
 .. math::
    \frac{
-     C.\CTABLES[x] = \limits~t
+     C.\CTABLES[x] = \X{it}~\limits~t
      \qquad
      C \vdashvaltypematch t \matchesreftype \REF~\NULL~\FUNC
      \qquad

From 62da1256f203042503afe27ada156f9f37ccce52 Mon Sep 17 00:00:00 2001
From: Sam Clegg 
Date: Tue, 2 Jul 2024 11:22:31 -0700
Subject: [PATCH 146/230] Update JS API for memory/table min/max and
 table.get/set (#70)

Use `unsigned long long` rather then `unsigned long` which gives us u64
range rather than u32 range.

See https://webidl.spec.whatwg.org/#idl-unsigned-long-long
---
 document/js-api/index.bs | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/document/js-api/index.bs b/document/js-api/index.bs
index 7acd52ffd..1fb820a5c 100644
--- a/document/js-api/index.bs
+++ b/document/js-api/index.bs
@@ -590,15 +590,15 @@ Note: The use of this synchronous API is discouraged, as some implementations so
 
 
 dictionary MemoryDescriptor {
-  required [EnforceRange] unsigned long initial;
-  [EnforceRange] unsigned long maximum;
+  required [EnforceRange] unsigned long long initial;
+  [EnforceRange] unsigned long long maximum;
   IndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
 interface Memory {
   constructor(MemoryDescriptor descriptor);
-  unsigned long grow([EnforceRange] unsigned long delta);
+  unsigned long grow([EnforceRange] unsigned long long delta);
   ArrayBuffer toFixedLengthBuffer();
   ArrayBuffer toResizableBuffer();
   readonly attribute ArrayBuffer buffer;
@@ -781,17 +781,17 @@ enum TableKind {
 
 dictionary TableDescriptor {
   required TableKind element;
-  required [EnforceRange] unsigned long initial;
-  [EnforceRange] unsigned long maximum;
+  required [EnforceRange] unsigned long long initial;
+  [EnforceRange] unsigned long long maximum;
   IndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
 interface Table {
   constructor(TableDescriptor descriptor, optional any value);
-  unsigned long grow([EnforceRange] unsigned long delta, optional any value);
-  any get([EnforceRange] unsigned long index);
-  undefined set([EnforceRange] unsigned long index, optional any value);
+  unsigned long long grow([EnforceRange] unsigned long long delta, optional any value);
+  any get([EnforceRange] unsigned long long index);
+  undefined set([EnforceRange] unsigned long long index, optional any value);
   readonly attribute unsigned long length;
 };
 
From e9c9a9b72dd05cee7a5df881d90b9b40b6ba7090 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 18 Jul 2024 10:58:09 -0700 Subject: [PATCH 147/230] Add a smoke test for consistent nondeterminism Fixes https://github.com/WebAssembly/relaxed-simd/issues/155 --- .../core/relaxed-simd/relaxed_madd_nmadd.wast | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/core/relaxed-simd/relaxed_madd_nmadd.wast b/test/core/relaxed-simd/relaxed_madd_nmadd.wast index 40ce0ed3e..187b71d5a 100644 --- a/test/core/relaxed-simd/relaxed_madd_nmadd.wast +++ b/test/core/relaxed-simd/relaxed_madd_nmadd.wast @@ -189,3 +189,36 @@ (v128.const f64x2 -0x1.000002p+0 -0x1.000002p+0) (v128.const f64x2 -0x1.00000204p+0 -0x1.00000204p+0)) (v128.const i64x2 -1 -1)) + +;; Test that the non-deterministic choice of fusing and then rounding or +;; rounding multiple times in `relaxed_madd` is consistent throughout a +;; program's execution. +;; +;; This property is impossible to test exhaustively, so this is just a simple +;; smoke test for when the operands to a `relaxed_madd` are known statically +;; versus when they are dynamically supplied. This should, at least, catch +;; illegal constant-folding and -propagation by the compiler that leads to +;; inconsistent rounding behavior at compile time versus at run time. +;; +;; FLT_MAX == 0x1.fffffep+127 +;; FLT_MAX * 2 - FLT_MAX == +;; FLT_MAX (if fma) +;; 0 (if no fma) +;; from https://www.vinc17.net/software/fma-tests.c +(module + (func (export "test-consistent-nondeterminism") (param v128 v128 v128) (result v128) + (f32x4.eq + (f32x4.relaxed_madd (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 ) + (v128.const f32x4 2.0 2.0 2.0 2.0) + (v128.const f32x4 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127)) + (f32x4.relaxed_madd (local.get 0) + (local.get 1) + (local.get 2)) + ) + ) +) +(assert_return (invoke "test-consistent-nondeterminism" + (v128.const f32x4 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 0x1.fffffep+127 ) + (v128.const f32x4 2.0 2.0 2.0 2.0) + (v128.const f32x4 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127 -0x1.fffffep+127)) + (v128.const i32x4 -1 -1 -1 -1)) From 1bf8e0f5197a169f500762ad9efea97b841a8c7c Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Tue, 13 Aug 2024 10:29:53 -0500 Subject: [PATCH 148/230] Update JS API to handle index types (#75) This introduces an IndexValue typedef, which is a union of Number and BigInt, and two algorithms, IndexValueToU64 and U64ToIndexValue, which can be used to convert between IndexValue and WebAssembly's u64 type (used in the embedding spec). It also makes several drive-by fixes and improvements. --- document/js-api/index.bs | 132 +++++++++++++++++++++++++-------------- 1 file changed, 86 insertions(+), 46 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 46b00d184..859a22a87 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -47,6 +47,7 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT text: SetFunctionLength; url: sec-setfunctionlength text: the Number value; url: sec-ecmascript-language-types-number-type text: is a Number; url: sec-ecmascript-language-types-number-type + text: is a BigInt; url: sec-ecmascript-language-types-bigint-type text: NumberToRawBytes; url: sec-numbertorawbytes text: Built-in Function Objects; url: sec-built-in-function-objects text: NativeError Object Structure; url: sec-nativeerror-object-structure @@ -61,6 +62,7 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT text: NativeError Object Structure; url: sec-nativeerror-object-structure text: 𝔽; url: #𝔽 text: ℤ; url: #ℤ + text: mathematical value; url: #mathematical-value text: SameValue; url: sec-samevalue urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: dfn url: valid/modules.html#valid-module @@ -121,6 +123,7 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df text: match_valtype; url: appendix/embedding.html#embed-match-valtype text: error; url: appendix/embedding.html#embed-error text: store; url: exec/runtime.html#syntax-store + text: index type; url: syntax/types.html#syntax-idxtype text: table type; url: syntax/types.html#syntax-tabletype text: table address; url: exec/runtime.html#syntax-tableaddr text: function address; url: exec/runtime.html#syntax-funcaddr @@ -139,6 +142,9 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df text: exn_alloc; url: appendix/embedding.html#embed-exn-alloc text: exn_tag; url: appendix/embedding.html#embed-exn-tag text: exn_read; url: appendix/embedding.html#embed-exn-read + url: syntax/values.html#syntax-int + text: u32 + text: u64 url: syntax/types.html#syntax-numtype text: i32 text: i64 @@ -200,6 +206,7 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df urlPrefix: https://heycam.github.io/webidl/; spec: WebIDL type: dfn text: create a namespace object; url: create-a-namespace-object + text: [EnforceRange]; url: #EnforceRange urlPrefix: https://webassembly.github.io/js-types/js-api/; spec: WebAssembly JS API (JS Type Reflection) type: abstract-op; text: FromValueType; url: abstract-opdef-fromvaluetype urlPrefix: https://tc39.es/proposal-resizablearraybuffer/; spec: ResizableArrayBuffer proposal @@ -561,6 +568,8 @@ enum IndexType { "i64", }; +typedef ([EnforceRange] unsigned long long or bigint) IndexValue; + dictionary ModuleExportDescriptor { required USVString name; required ImportExportKind kind; @@ -665,15 +674,15 @@ Note: The use of this synchronous API is discouraged, as some implementations so
 dictionary MemoryDescriptor {
-  required [EnforceRange] unsigned long long initial;
-  [EnforceRange] unsigned long long maximum;
+  required IndexValue initial;
+  IndexValue maximum;
   IndexType index;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
 interface Memory {
   constructor(MemoryDescriptor descriptor);
-  unsigned long grow([EnforceRange] unsigned long long delta);
+  unsigned long grow(IndexValue delta);
   ArrayBuffer toFixedLengthBuffer();
   ArrayBuffer toResizableBuffer();
   readonly attribute ArrayBuffer buffer;
@@ -736,11 +745,11 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
 
 
The Memory(|descriptor|) constructor, when invoked, performs the following steps: - 1. Let |initial| be |descriptor|["initial"]. - 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty. + 1. If |descriptor|["index"] [=map/exists=], let |indextype| be |descriptor|["index"]; otherwise, let |indextype| be "i32". + 1. Let |initial| be [=?=] [=IndexValueToU64=](|descriptor|["initial"], |indextype|). + 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=IndexValueToU64=](|descriptor|["maximum"], |indextype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. - 1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "i32". - 1. Let |memtype| be { min |initial|, max |maximum|, index |index| }. + 1. Let |memtype| be |indextype| { **min** |initial|, **max** |maximum| }. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |memaddr|) be [=mem_alloc=](|store|, |memtype|). If allocation fails, throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -779,7 +788,10 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
The grow(|delta|) method, when invoked, performs the following steps: 1. Let |memaddr| be **this**.\[[Memory]]. - 1. Return the result of [=grow the memory buffer|growing the memory buffer=] associated with |memaddr| by |delta|. + 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. + 1. Let |indextype| be the [=index type=] in [=mem_type=](|store|, |memaddr|). + 1. Let |delta64| be [=?=] [=IndexValueToU64=](|delta|, |indextype|). + 1. Return the result of [=grow the memory buffer|growing the memory buffer=] associated with |memaddr| by |delta64|.
Immediately after a WebAssembly [=memory.grow=] instruction executes, perform the following steps: @@ -857,18 +869,18 @@ enum TableKind { dictionary TableDescriptor { required TableKind element; - required [EnforceRange] unsigned long long initial; - [EnforceRange] unsigned long long maximum; + required IndexValue initial; + IndexValue maximum; IndexType index; }; [LegacyNamespace=WebAssembly, Exposed=*] interface Table { constructor(TableDescriptor descriptor, optional any value); - unsigned long long grow([EnforceRange] unsigned long long delta, optional any value); - any get([EnforceRange] unsigned long long index); - undefined set([EnforceRange] unsigned long long index, optional any value); - readonly attribute unsigned long length; + IndexValue grow(IndexValue delta, optional any value); + any get(IndexValue index); + undefined set(IndexValue index, optional any value); + readonly attribute IndexValue length; };
@@ -896,19 +908,19 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address
The Table(|descriptor|, |value|) constructor, when invoked, performs the following steps: - 1. Let |elementType| be [=ToValueType=](|descriptor|["element"]). - 1. If |elementType| is not a [=reftype=], - 1. Throw a {{TypeError}} exception. - 1. Let |initial| be |descriptor|["initial"]. - 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty. + 1. Let |elementtype| be [=ToValueType=](|descriptor|["element"]). + 1. If |elementtype| is not a [=reftype=], + 1. [=Throw=] a {{TypeError}} exception. + 1. If |descriptor|["index"] [=map/exists=], let |indextype| be |descriptor|["index"]; otherwise, let |indextype| be "i32". + 1. Let |initial| be [=?=] [=IndexValueToU64=](|descriptor|["initial"], |indextype|). + 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=IndexValueToU64=](|descriptor|["maximum"], |indextype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. 1. If |value| is missing, - 1. Let |ref| be [=DefaultValue=](|elementType|). + 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. Assert: |ref| is not [=error=]. 1. Otherwise, - 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|). - 1. If |descriptior|["index"] [=map/exists=], let |index| be |descriptor|["index"]; otherwise, let |index| be "i32". - 1. Let |type| be the [=table type=] [=table type|index=] |index| {[=table type|min=] |initial|, [=table type|max=] |maximum|} [=table type|refType=] |elementType|. + 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementtype|). + 1. Let |type| be the [=table type=] (|indextype|, { **min** |initial|, **max** |maximum| }, |elementtype|). 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -920,13 +932,14 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let |initialSize| be [=table_size=](|store|, |tableaddr|). - 1. Let (limits, |elementType|) be [=table_type=](|tableaddr|). + 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. Let |delta64| be [=?=] [=IndexValueToU64=](|delta|, |indextype|). 1. If |value| is missing, - 1. Let |ref| be [=DefaultValue=](|elementType|). + 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. If |ref| is [=error=], throw a {{TypeError}} exception. 1. Otherwise, - 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|). - 1. Let |result| be [=table_grow=](|store|, |tableaddr|, |delta|, |ref|). + 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementtype|). + 1. Let |result| be [=table_grow=](|store|, |tableaddr|, |delta64|, |ref|). 1. If |result| is [=error=], throw a {{RangeError}} exception. Note: The above exception can happen due to either insufficient memory or an invalid size parameter. @@ -939,17 +952,20 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address The getter of the length attribute of {{Table}}, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Return [=table_size=](|store|, |tableaddr|). + 1. Let |indextype| be the [=index type=] in [=table_type=](|store|, |tableaddr|). + 1. Let |length64| be [=table_size=](|store|, |tableaddr|). + 1. Return [=U64ToIndexValue=](|length64|, |indextype|).
The get(|index|) method, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let (limits, |elementType|) be [=table_type=](|store|, |tableaddr|). - 1. If |elementType| is [=exnref=], + 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. If |elementtype| is [=exnref=], 1. Throw a {{TypeError}} exception. - 1. Let |result| be [=table_read=](|store|, |tableaddr|, |index|). + 1. Let |index64| be [=?=] [=IndexValueToU64=](|index|, |indextype|). + 1. Let |result| be [=table_read=](|store|, |tableaddr|, |index64|). 1. If |result| is [=error=], throw a {{RangeError}} exception. 1. Return [=ToJSValue=](|result|).
@@ -958,16 +974,16 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address The set(|index|, |value|) method, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let (limits, |elementType|) be [=table_type=](|store|, |tableaddr|). - 1. If |elementType| is [=exnref=], + 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. If |elementtype| is [=exnref=], 1. Throw a {{TypeError}} exception. + 1. Let |index64| be [=?=] [=IndexValueToU64=](|index|, |indextype|). 1. If |value| is missing, - 1. Let |ref| be [=DefaultValue=](|elementType|). + 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. If |ref| is [=error=], throw a {{TypeError}} exception. 1. Otherwise, - 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|). - 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let |store| be [=table_write=](|store|, |tableaddr|, |index|, |ref|). + 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementtype|). + 1. Let |store| be [=table_write=](|store|, |tableaddr|, |index64|, |ref|). 1. If |store| is [=error=], throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -1236,18 +1252,18 @@ The algorithm ToJSValue(|w|) coerces a [=WebAssembly value=] to a Jav 1. Assert: |w| is not of the form [=ref.exn=] exnaddr. 1. If |w| is of the form [=i64.const=] |u64|, 1. Let |i64| be [=signed_64=](|u64|). - 1. Return [=ℤ=](|i64| interpreted as a mathematical value). -1. If |w| is of the form [=i32.const=] |i32|, - 1. Let |i32| be [=signed_32=](|i32|). - 2. Return [=𝔽=](|i32| interpreted as a mathematical value). + 1. Return [=ℤ=](|i64| interpreted as a [=mathematical value=]). +1. If |w| is of the form [=i32.const=] |u32|, + 1. Let |i32| be [=signed_32=](|u32|). + 2. Return [=𝔽=](|i32| interpreted as a [=mathematical value=]). 1. If |w| is of the form [=f32.const=] |f32|, 1. If |f32| is [=+∞=] or [=−∞=], return **+∞**𝔽 or **-∞**𝔽, respectively. 1. If |f32| is [=nan=], return **NaN**. - 1. Return [=𝔽=](|f32| interpreted as a mathematical value). + 1. Return [=𝔽=](|f32| interpreted as a [=mathematical value=]). 1. If |w| is of the form [=f64.const=] |f64|, 1. If |f64| is [=+∞=] or [=−∞=], return **+∞**𝔽 or **-∞**𝔽, respectively. 1. If |f64| is [=nan=], return **NaN**. - 1. Return [=𝔽=](|f64| interpreted as a mathematical value). + 1. Return [=𝔽=](|f64| interpreted as a [=mathematical value=]). 1. If |w| is of the form [=ref.null=] t, return null. 1. If |w| is of the form [=ref.i31=] |u31|, 1. Let |i31| be [=signed_31=](|u31|). @@ -1288,7 +1304,7 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va 1. If |type| is [=f32=], 1. Let |number| be [=?=] [$ToNumber$](|v|). 1. If |number| is **NaN**, - 1. Let |n| be an implementation-defined integer such that [=canon=]32 ≤ |n| < 2[=signif=](32). + 1. Let |n| be an implementation-defined integer such that [=canon=]32 ≤ |n| < 2[=signif=](32). 1. Let |f32| be [=nan=](n). 1. Otherwise, 1. Let |f32| be |number| rounded to the nearest representable value using IEEE 754-2008 round to nearest, ties to even mode. [[IEEE-754]] @@ -1296,7 +1312,7 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va 1. If |type| is [=f64=], 1. Let |number| be [=?=] [$ToNumber$](|v|). 1. If |number| is **NaN**, - 1. Let |n| be an implementation-defined integer such that [=canon=]64 ≤ |n| < 2[=signif=](64). + 1. Let |n| be an implementation-defined integer such that [=canon=]64 ≤ |n| < 2[=signif=](64). 1. Let |f64| be [=nan=](n). 1. Otherwise, 1. Let |f64| be |number|. @@ -1337,6 +1353,31 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va +
+The algorithm IndexValueToU64(|v|, |indextype|) asserts that a JavaScript value is the appropriate variant of {{IndexValue}} for an {{IndexType}}, and ensures that its value is in [=u64=] range for WebAssembly embedding operations, by performing the following steps: + +1. If |indextype| is "i32", + 1. If |v| [=is a Number=], + 1. Assert: Due to WebIDL types and [=[EnforceRange]=], 0 ≤ [=ℝ=](|v|) < 264. + 1. Return [=ℝ=](|v|) as a WebAssembly [=u64=]. + 1. Otherwise, [=throw=] a {{TypeError}}. +1. Else if |indextype| is "i64", + 1. If |v| [=is a BigInt=], + 1. If |v| is not equal to [=!=] [$ToBigUint64$](|v|), [=throw=] a {{RangeError}}. + 1. Return [=ℝ=](|v|) as a WebAssembly [=u64=]. + 1. Otherwise, [=throw=] a {{TypeError}}. +1. Assert: This step is not reached. + +
+ +
+The algorithm U64ToIndexValue(|v|, |indextype|) converts a [=u64=] value from a WebAssembly embedding operation to the correct variant of {{IndexValue}} for an {{IndexType}}, by performing the following steps: + +1. If |indextype| is "i32", return [=𝔽=](|v| interpreted as a [=mathematical value=]). +1. Else if |indextype| is "i64", return [=ℤ=](|v| interpreted as a [=mathematical value=]). +1. Assert: This step is not reached. + +

Tags

@@ -1369,7 +1410,6 @@ To initialize a Tag object |tag| from a [=tag address=] |tagAddress|,
- To create a Tag object from a [=tag address=] |tagAddress|, perform the following steps: 1. Let |map| be the [=surrounding agent=]'s associated [=Tag object cache=]. From 08d7ccb35e1eb007bf5677692c81a9f62f0cffe8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:04:42 +0000 Subject: [PATCH 149/230] Bump actions/download-artifact from 2 to 4.1.7 in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v2...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/ci-spec.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index e88a224d6..6caf511eb 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -79,17 +79,17 @@ jobs: - name: Create output directory run: mkdir _output && cp document/index.html _output/index.html - name: Download core spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: core-rendered path: _output/core - name: Download JS API spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: js-api-rendered path: _output/js-api - name: Download Web API spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: web-api-rendered path: _output/web-api From 6e2dfb3b5450571c251aae256880ddc1102ff88a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:05:05 +0000 Subject: [PATCH 150/230] Bump actions/download-artifact from 2 to 4.1.7 in /.github/workflows Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 2 to 4.1.7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v2...v4.1.7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/ci-spec.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index e88a224d6..6caf511eb 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -79,17 +79,17 @@ jobs: - name: Create output directory run: mkdir _output && cp document/index.html _output/index.html - name: Download core spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: core-rendered path: _output/core - name: Download JS API spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: js-api-rendered path: _output/js-api - name: Download Web API spec artifact - uses: actions/download-artifact@v2 + uses: actions/download-artifact@v4.1.7 with: name: web-api-rendered path: _output/web-api From 6cdb72f36a68eb126b5316f467e9cf25cdda9015 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 4 Sep 2024 07:13:01 +0200 Subject: [PATCH 151/230] Use consistent upload-artifact --- .github/workflows/ci-spec.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 6caf511eb..1c562cbec 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -35,7 +35,7 @@ jobs: - name: Run Bikeshed run: cd document/core && make bikeshed - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: core-rendered path: document/core/_build/html @@ -50,7 +50,7 @@ jobs: - name: Run Bikeshed run: bikeshed spec "document/js-api/index.bs" "document/js-api/index.html" - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: js-api-rendered path: document/js-api/index.html @@ -79,17 +79,17 @@ jobs: - name: Create output directory run: mkdir _output && cp document/index.html _output/index.html - name: Download core spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: core-rendered path: _output/core - name: Download JS API spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: js-api-rendered path: _output/js-api - name: Download Web API spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: web-api-rendered path: _output/web-api From 3370cfccda79d1147b8518b79fe8eff2c9d8e37b Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 4 Sep 2024 07:59:58 +0200 Subject: [PATCH 152/230] Missed one --- .github/workflows/ci-spec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 1c562cbec..a3b4dd875 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -65,7 +65,7 @@ jobs: - name: Run Bikeshed run: bikeshed spec "document/web-api/index.bs" "document/web-api/index.html" - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: web-api-rendered path: document/web-api/index.html From 59174d534dd9422645d03da266d8f2b3a8b21e33 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 4 Sep 2024 08:33:09 +0200 Subject: [PATCH 153/230] Update ci-spec.yml --- .github/workflows/ci-spec.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 6caf511eb..a3b4dd875 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -35,7 +35,7 @@ jobs: - name: Run Bikeshed run: cd document/core && make bikeshed - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: core-rendered path: document/core/_build/html @@ -50,7 +50,7 @@ jobs: - name: Run Bikeshed run: bikeshed spec "document/js-api/index.bs" "document/js-api/index.html" - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: js-api-rendered path: document/js-api/index.html @@ -65,7 +65,7 @@ jobs: - name: Run Bikeshed run: bikeshed spec "document/web-api/index.bs" "document/web-api/index.html" - name: Upload artifact - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: web-api-rendered path: document/web-api/index.html @@ -79,17 +79,17 @@ jobs: - name: Create output directory run: mkdir _output && cp document/index.html _output/index.html - name: Download core spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: core-rendered path: _output/core - name: Download JS API spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: js-api-rendered path: _output/js-api - name: Download Web API spec artifact - uses: actions/download-artifact@v4.1.7 + uses: actions/download-artifact@v4 with: name: web-api-rendered path: _output/web-api From 9d740b06f1062e18524df6fe56ccfd92d72bede2 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 4 Sep 2024 16:57:32 +0200 Subject: [PATCH 154/230] Minor edits --- .github/workflows/ci-interpreter.yml | 2 +- document/core/appendix/profiles.rst | 20 +++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 91a5fc423..6c09ffc0f 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v2 with: - node-version: 19.x + node-version: 20.x - name: Build interpreter run: cd interpreter && opam exec make - name: Run tests diff --git a/document/core/appendix/profiles.rst b/document/core/appendix/profiles.rst index 8d360834d..ea32797d9 100644 --- a/document/core/appendix/profiles.rst +++ b/document/core/appendix/profiles.rst @@ -11,7 +11,7 @@ A host platform can thereby decide to support the language only under a restrict Conventions ~~~~~~~~~~~ -A profile modification is specified by decorating selected rules in the main body of this specification with a *profile annotation* that defines them as "conditional" on the choice of profile. +A profile modification is specified by decorating selected rules in the main body of this specification with a *profile annotation* that defines them as conditional on the choice of profile. For that purpose, every profile defines a *profile marker*, an alphanumeric short-hand like :math:`\profilename{ABC}`. A profile annotation of the form :math:`\exprofiles{\profile{ABC}~\profile{XYZ}}` on a rule indicates that this rule is *excluded* for either of the profiles whose marker is :math:`\profilename{ABC}` or :math:`\profilename{XYZ}`. @@ -46,7 +46,7 @@ The overall effect is that the respective construct is no longer part of the lan & &|& \UNREACHABLE \\ \end{array} - A rule may be annotated by multiple markers, which might be the case if a construct is in the intersection of multiple features. + A rule may be annotated by multiple markers, which could be the case if a construct is in the intersection of multiple features. Semantics Annotations @@ -54,22 +54,22 @@ Semantics Annotations To restrict certain behaviours in a profile, individual :ref:`validation ` or :ref:`reduction ` rules or auxiliary definitions are annotated with an associated marker. -This has the simple consequence that the respective rule is no longer applicable under the given profile. +This has the consequence that the respective rule is no longer applicable under the given profile. .. note:: For example, an "infinite" profile marked :math:`\profilename{INF}` could define that growing memory never fails: .. math:: \begin{array}{llcl@{\qquad}l} - & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S'; F; (\I32.\CONST~\X{sz}) + & S; F; (\I32.\CONST~n)~\MEMORYGROW~x &\stepto& S'; F; (\I32.\CONST~\X{sz}) \\&&& \begin{array}[t]{@{}r@{~}l@{}} - (\iff & F.\AMODULE.\MIMEMS[0] = a \\ + (\iff & F.\AMODULE.\MIMEMS[x] = a \\ \wedge & \X{sz} = |S.\SMEMS[a].\MIDATA|/64\,\F{Ki} \\ \wedge & S' = S \with \SMEMS[a] = \growmem(S.\SMEMS[a], n)) \\[1ex] \end{array} \\[1ex] - \exprofiles{\profile{INF}} & S; F; (\I32.\CONST~n)~\MEMORYGROW &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1)) + \exprofiles{\profile{INF}} & S; F; (\I32.\CONST~n)~\MEMORYGROW~x &\stepto& S; F; (\I32.\CONST~\signed_{32}^{-1}(-1)) \end{array} @@ -80,15 +80,15 @@ All profiles are defined such that the following properties are preserved: * All profiles represent syntactic and semantic subsets of the :ref:`full profile `, i.e., they do not *add* syntax or *alter* behaviour. -* All profiles are mutually compatible, i.e., no two profiles subset semantic behaviour in inconsistent ways, and any intersection of profiles preserves the properties described here. +* All profiles are mutually compatible, i.e., no two profiles subset semantic behaviour in inconsistent or ambiguous ways, and any intersection of profiles preserves the properties described here. -* Profiles that restrict execution do not violate :ref:`soundness `, i.e., all :ref:`configurations ` valid under that profile still have well-defined execution behaviour. +* Profiles do not violate :ref:`soundness `, i.e., all :ref:`configurations ` valid under that profile still have well-defined execution behaviour. .. note:: Tools are generally expected to handle and produce code for the full profile by default. In particular, producers should not generate code that *depends* on specific profiles. Instead, all code should preserve correctness when executed under the full profile. - Moreover, profiles should be considered static and fixed for a given platform or ecosystem. Runtime conditioning on the "current" profile should especially be avoided. + Moreover, profiles should be considered static and fixed for a given platform or ecosystem. Runtime conditioning on the "current" profile is not intended and should be avoided. @@ -123,6 +123,8 @@ It defines a sub-language that does not exhibit any incidental non-deterministic * All :ref:`NaN ` values :ref:`generated ` by :ref:`floating-point instructions ` are canonical and positive. +* All :ref:`relaxed vector instructions ` have a fixed behaviour that does not depend on the implementation. + Even under this profile, the |MEMORYGROW| and |TABLEGROW| instructions technically remain :ref:`non-deterministic `, in order to be able to indicate resource exhaustion. .. note:: From acb599c4a01d320e39908213c8caa68a2aa3481e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 4 Sep 2024 16:58:35 +0200 Subject: [PATCH 155/230] Refactor relaxed ops spec --- document/core/appendix/index-instructions.py | 32 +- document/core/exec/instructions.rst | 30 +- document/core/exec/numerics.rst | 429 +++++++++---------- document/core/util/macros.def | 23 +- document/core/valid/instructions.rst | 2 +- 5 files changed, 258 insertions(+), 258 deletions(-) diff --git a/document/core/appendix/index-instructions.py b/document/core/appendix/index-instructions.py index 882049d8a..c39fc4a90 100755 --- a/document/core/appendix/index-instructions.py +++ b/document/core/appendix/index-instructions.py @@ -633,26 +633,26 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\I32X4.\VTRUNC\K{\_sat\_f64x2\_u\_zero}', r'\hex{FD}~~\hex{FD}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-trunc_sat_u'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_s}', r'\hex{FD}~~\hex{FE}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_s'), Instruction(r'\F64X2.\VCONVERT\K{\_low\_i32x4\_u}', r'\hex{FD}~~\hex{FF}~~\hex{01}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-convert_u'), - Instruction(r'\I8X16.\RELAXEDSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_swizzle', r'exec-relaxed_swizzle', r'op-relaxed_swizzle'), + Instruction(r'\I8X16.\RELAXEDSWIZZLE', r'\hex{FD}~~\hex{80}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_swizzle', r'exec-relaxed_swizzle', r'op-irelaxed_swizzle'), Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_s}', r'\hex{FD}~~\hex{81}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_s'), Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f32x4\_u}', r'\hex{FD}~~\hex{82}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_u'), Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_s}', r'\hex{FD}~~\hex{83}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_s'), Instruction(r'\I32X4.\RELAXEDTRUNC\K{\_f64x2\_u}', r'\hex{FD}~~\hex{84}~~\hex{02}', r'[\V128] \to [\V128]', r'valid-vcvtop', r'exec-vcvtop', r'op-relaxed_trunc_u'), - Instruction(r'\F32X4.\RELAXEDMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_madd'), - Instruction(r'\F32X4.\RELAXEDNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_nmadd'), - Instruction(r'\F64X2.\RELAXEDMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_madd'), - Instruction(r'\F64X2.\RELAXEDNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-relaxed_nmadd'), - Instruction(r'\I8X16.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), - Instruction(r'\I16X8.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), - Instruction(r'\I32X4.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), - Instruction(r'\I64X2.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxedlaneselect', r'exec-relaxedlaneselect', r'op-relaxed_lane_select'), - Instruction(r'\F32X4.\RELAXEDMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_min'), - Instruction(r'\F32X4.\RELAXEDMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_max'), - Instruction(r'\F64X2.\RELAXEDMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_min'), - Instruction(r'\F64X2.\RELAXEDMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_max'), - Instruction(r'\I16X8.\RELAXEDQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-relaxed_q15mulr_s'), - Instruction(r'\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-relaxed_dot_mul'), - Instruction(r'\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot', r'op-relaxed_dot_mul'), + Instruction(r'\F32X4.\RELAXEDMADD', r'\hex{FD}~~\hex{85}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frelaxed_madd'), + Instruction(r'\F32X4.\RELAXEDNMADD', r'\hex{FD}~~\hex{86}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frelaxed_nmadd'), + Instruction(r'\F64X2.\RELAXEDMADD', r'\hex{FD}~~\hex{87}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frelaxed_madd'), + Instruction(r'\F64X2.\RELAXEDNMADD', r'\hex{FD}~~\hex{88}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-vternop', r'exec-vternop', r'op-frelaxed_nmadd'), + Instruction(r'\I8X16.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{89}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_laneselect', r'exec-relaxed_laneselect', r'op-irelaxed_laneselect'), + Instruction(r'\I16X8.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8A}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_laneselect', r'exec-relaxed_laneselect', r'op-irelaxed_laneselect'), + Instruction(r'\I32X4.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8B}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_laneselect', r'exec-relaxed_laneselect', r'op-irelaxed_laneselect'), + Instruction(r'\I64X2.\RELAXEDLANESELECT', r'\hex{FD}~~\hex{8C}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_laneselect', r'exec-relaxed_laneselect', r'op-irelaxed_laneselect'), + Instruction(r'\F32X4.\RELAXEDMIN', r'\hex{FD}~~\hex{8D}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frelaxed_min'), + Instruction(r'\F32X4.\RELAXEDMAX', r'\hex{FD}~~\hex{8E}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frelaxed_max'), + Instruction(r'\F64X2.\RELAXEDMIN', r'\hex{FD}~~\hex{8F}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frelaxed_min'), + Instruction(r'\F64X2.\RELAXEDMAX', r'\hex{FD}~~\hex{90}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-frelaxed_max'), + Instruction(r'\I16X8.\RELAXEDQ15MULRS', r'\hex{FD}~~\hex{91}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-vbinop', r'exec-vbinop', r'op-irelaxed_q15mulr_s'), + Instruction(r'\I16X8.\RELAXEDDOT\K{\_i8x16\_i7x16\_s}', r'\hex{FD}~~\hex{92}~~\hex{02}', r'[\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot'), + Instruction(r'\I32X4.\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}', r'\hex{FD}~~\hex{93}~~\hex{02}', r'[\V128~\V128~\V128] \to [\V128]', r'valid-relaxed_dot', r'exec-relaxed_dot'), Instruction(None, r'\hex{FE}'), Instruction(None, r'\hex{FF}'), ] diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 4fb28a528..35bb4cb46 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -1740,24 +1740,26 @@ Most other vector instructions are defined in terms of numeric operators that ar :math:`\K{i8x16.}\RELAXEDSWIZZLE` ................................. +.. todo: align the implementation of swizzle and relaxed_swizzle + 1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. 3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -4. Let :math:`c'` be the result of computing :math:`\lanes^{-1}_{\I8X16}(\relaxedswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2)))`. +4. Let :math:`c'` be the result of computing :math:`\lanes^{-1}_{\I8X16}(\irelaxedswizzle(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)))`. 5. Push the value :math:`\V128.\VCONST~c'` onto the stack. .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\K{i8x16}\K{.}\relaxedswizzle &\stepto& (\V128\K{.}\VCONST~c') + (\V128\K{.}\VCONST~c_1)~(\V128\K{.}\VCONST~c_2)~\I8X16\K{.}\irelaxedswizzle &\stepto& (\V128\K{.}\VCONST~c') \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & c' = \lanes^{-1}_{i8x16}(\relaxedswizzle(\lanes_{i8x16}(c_1), \lanes_{i8x16}(c_2))) + (\iff & c' = \lanes^{-1}_{\I8X16}(\irelaxedswizzle(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))) \end{array} \end{array} @@ -1971,12 +1973,12 @@ Most other vector instructions are defined in terms of numeric operators that ar \end{array} -.. _exec-relaxedlaneselect: +.. _exec-relaxed_laneselect: :math:`t\K{x}N\K{.}\RELAXEDLANESELECT` ...................................... -1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. +1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -1984,9 +1986,9 @@ Most other vector instructions are defined in terms of numeric operators that ar 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`B` be the :ref:`bit width ` :math:`|t|` of :ref:`value type ` :math:`t`. +5. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`value type ` :math:`t`. -6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{t\K{x}N}(\relaxedlaneselect_{B}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))`. +6. Let :math:`c` be the result of computing :math:`\irelaxedlaneselect_{t\K{x}N}(c_1, c_2, c_3)`. 7. Push the value :math:`\V128.\VCONST~c` to the stack. @@ -1997,7 +1999,7 @@ Most other vector instructions are defined in terms of numeric operators that ar \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff c = \lanes^{-1}_{t\K{x}N}(\relaxedlaneselect_{|t|}(\lanes_{t\K{x}N}(c_1), \lanes_{t\K{x}N}(c_2), \lanes_{t\K{x}N}(c_3)))) \\ + (\iff c = \irelaxedlaneselect_{t\K{x}N}(c_1, c_2, c_3)^\ast \\ \end{array} \end{array} @@ -2325,13 +2327,15 @@ where: :math:`\K{i16x8.}\RELAXEDDOT\K{\_i8x16\_i7x16\_s}` .................................................. +.. todo: move more of this to numerics + 1. Assert: due to :ref:`validation `, two values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_2` from the stack. 3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` 5. Let :math:`j^8` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. @@ -2346,7 +2350,7 @@ where: \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & (i_1~i_2)^8 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + (\iff & (i_1~i_2)^8 = \irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ \wedge & j^8 = \sats_{16}(i_1, i_2)^8 \\ \wedge & c = \lanes^{-1}_{\I16X8}(j^8)) \end{array} @@ -2356,6 +2360,8 @@ where: :math:`\K{i32x4.}\RELAXEDDOT\K{\_i8x16\_i7x16\_add\_s}` ....................................................... +.. todo: move more of this to numerics + 1. Assert: due to :ref:`validation `, three values of :ref:`value type ` |V128| are on the top of the stack. 2. Pop the value :math:`\V128.\VCONST~c_3` from the stack. @@ -2364,7 +2370,7 @@ where: 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\relaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +5. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` 6. Let :math:`(j_1~j_2)^4` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. @@ -2385,7 +2391,7 @@ where: \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} - (\iff & (i_1~i_2)^8 = \relaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ + (\iff & (i_1~i_2)^8 = \irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ \wedge & (j_1~j_2)^4 = \sats_{16}(i_1 + i_2)^8 \\ \wedge & j^4 = \iadd_{32}(\extend^{s}_{16, 32}(j_1), \extend^{s}_{16, 32}(j_2))^4 \\ \wedge & k^4 = \lanes_{\I32X4}(c_3) \\ diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 3348a8367..a32ff11b7 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -1054,9 +1054,9 @@ The non-deterministic result is expressed by the following auxiliary function pr \begin{array}{llcl@{\qquad}l} & \nans_N\{z^\ast\} &=& \{ + \NAN(\canon_N) \} \\ \exprofiles{\PROFDET} & \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n = \canon_N \} - & (\iff \forall \,{\pm \NAN(n)} \in z^\ast,~ n = \canon_N) \\ + & (\iff \{z^\ast\} \subseteq \{ + \NAN(\canon_N), - \NAN(\canon_N) \} \\ \exprofiles{\PROFDET} & \nans_N\{z^\ast\} &=& \{ + \NAN(n), - \NAN(n) ~|~ n \geq \canon_N \} - & (\iff \exists \,{\pm \NAN(n)} \in z^\ast,~ n \neq \canon_N) \\ + & (\iff \{z^\ast\} \not\subseteq \{ + \NAN(\canon_N), - \NAN(\canon_N) \} \\ \end{array} @@ -1239,6 +1239,55 @@ The non-deterministic result is expressed by the following auxiliary function pr \end{array} +.. _op-fma: + +:math:`\fma_N(z_1, z_2, z_3)` +............................. + +The function :math:`\fma` is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). +It computes :math:`(z_1 \cdot z_2) + z_3` as if with unbounded range and precision, rounding only once for the final result. + +* If either :math:`z_1` or :math:`z_2` or :math:`z_3` is a NaN, return an element of :math:`\nans_N{z_1, z_2, z_3}`. + +* Else if either :math:`z_1` or :math:`z_2` is a zero and the other is an infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` or :math:`z_2` are infinities of equal sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` or :math:`z_2` are infinities of opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the same sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the same sign and :math:`z_3` is a zero, then return positive zero. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a positive zero, then return positive zero. + +* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a negative zero, then return negative zero. + +* Else return the result of multiplying :math:`z_1` and :math:`z_2`, adding :math:`z_3` to the intermediate, and the final result ref:`rounded ` to the nearest representable value. + +.. math:: + \begin{array}{@{}llcll} + & \fma_N(\pm \NAN(n), z_2, z_3) &=& \nans_N\{\pm \NAN(n), z_2, z_3\} \\ + & \fma_N(z_1, \pm \NAN(n), z_3) &=& \nans_N\{\pm \NAN(n), z_1, z_3\} \\ + & \fma_N(z_1, z_2, \pm \NAN(n)) &=& \nans_N\{\pm \NAN(n), z_1, z_2\} \\ + & \fma_N(\pm \infty, \pm 0, z_3) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \mp 0, z_3) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \pm \infty, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \mp \infty, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm q_1, \pm \infty, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm q_1, \mp \infty, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm \infty, \pm q_1, - \infty) &=& \nans_N\{\} \\ + & \fma_N(\mp \infty, \pm q_1, + \infty) &=& \nans_N\{\} \\ + & \fma_N(\pm 0, \pm 0, \mp 0) &=& + 0 \\ + & \fma_N(\pm 0, \pm 0, \pm 0) &=& + 0 \\ + & \fma_N(\pm 0, \mp 0, + 0) &=& + 0 \\ + & \fma_N(\pm 0, \mp 0, - 0) &=& - 0 \\ + & \fma_N(z_1, z_2, z_3) &=& \ieee_N(z_1 \cdot z_2 + z_3) \\ + \end{array} + + .. _op-fmin: :math:`\fmin_N(z_1, z_2)` @@ -1979,332 +2028,276 @@ Conversions \narrowu_{M,N}(i) &=& \satu_N(\signed_M(i)) \end{array} + .. _relaxed-ops: +.. _aux-relaxed: -Relaxed operations +Relaxed Operations ~~~~~~~~~~~~~~~~~~ -The result of *relaxed* operators are *host-dependent*, because the set of -possible results may depend on properties of the host environment (such as -hardware). Technically, each such operator produces a fixed-size *list of sets* -of allowed values. For each execution of the operator in the same environment, -only values from the set at the same position in the list are returned, i.e., -each environment globally chooses a fixed projection for each operator. - -.. note:: - Each operator can be thought of as a family of operations that is fixed to - one particular choice by the execution environment. The fixed operation - itself can still be non-deterministic or partial. - - -.. _op-fma: - -:math:`\fma(z_1, z_2, z_3)` -........................... +The result of *relaxed* operators are *implementation-dependent*, because the set of possible results may depend on properties of the host environment, such as its hardware. +Technically, their behaviour is controlled by a set of *global parameters* to the semantics that an implementation can instantiate in different ways. +These choices are fixed, that is, parameters are constant during the execution of any given program. -The function :math:`\fma` is the same as *fusedMultiplyAdd* defined by |IEEE754|_ (Section 5.4.1). -It computes :math:`(z_1 \cdot z_2) + z_3` as if with unbounded range and precision, rounding only once for the final result. - -* If either :math:`z_1` or :math:`z_2` or :math:`z_3` is a NaN, return an element of :math:`\nans_N{z_1, z_2, z_3}`. - -* Else if either :math:`z_1` or :math:`z_2` is a zero and the other is an infinity, then return an element of :math:`\nans_N\{\}`. - -* Else if both :math:`z_1` or :math:`z_2` are infinities of equal sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. - -* Else if both :math:`z_1` or :math:`z_2` are infinities of opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. - -* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the same sign, and :math:`z_3` is a negative infinity, then return an element of :math:`\nans_N\{\}`. - -* Else if either :math:`z_1` or :math:`z_2` is an infinity and the other is a value of the opposite sign, and :math:`z_3` is a positive infinity, then return an element of :math:`\nans_N\{\}`. - -* Else if both :math:`z_1` and :math:`z_2` are zeroes of the same sign and :math:`z_3` is a zero, then return positive zero. - -* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a positive zero, then return positive zero. - -* Else if both :math:`z_1` and :math:`z_2` are zeroes of the opposite sign and :math:`z_3` is a negative zero, then return negative zero. - -* Else return the result of multiplying :math:`z_1` and :math:`z_2`, adding :math:`z_3` to the intermediate, and the final result ref:`rounded ` to the nearest representable value. +Every such parameter is an index into a sequence of possible sets of results and must be instantiated to a defined index. +In the :ref:`deterministic profile `, every parameter is prescribed to be 0. +This behaviour is expressed by the following auxiliary function, +where :math:`R` is a global parameter selecting one of the allowed outcomes: .. math:: - \begin{array}{@{}llcll} - & \fma_N(\pm \NAN(n), z_2, z_3) &=& \nans_N\{\pm \NAN(n), z_2, z_3\} \\ - & \fma_N(z_1, \pm \NAN(n), z_3) &=& \nans_N\{\pm \NAN(n), z_1, z_3\} \\ - & \fma_N(z_1, z_2, \pm \NAN(n)) &=& \nans_N\{\pm \NAN(n), z_1, z_2\} \\ - & \fma_N(\pm \infty, \pm 0, z_3) &=& \nans_N\{\} \\ - & \fma_N(\pm \infty, \mp 0, z_3) &=& \nans_N\{\} \\ - & \fma_N(\pm \infty, \pm \infty, - \infty) &=& \nans_N\{\} \\ - & \fma_N(\pm \infty, \mp \infty, + \infty) &=& \nans_N\{\} \\ - & \fma_N(\pm q_1, \pm \infty, - \infty) &=& \nans_N\{\} \\ - & \fma_N(\pm q_1, \mp \infty, + \infty) &=& \nans_N\{\} \\ - & \fma_N(\pm \infty, \pm q_1, - \infty) &=& \nans_N\{\} \\ - & \fma_N(\mp \infty, \pm q_1, + \infty) &=& \nans_N\{\} \\ - & \fma_N(\pm 0, \pm 0, \mp 0) &=& + 0 \\ - & \fma_N(\pm 0, \pm 0, \pm 0) &=& + 0 \\ - & \fma_N(\pm 0, \mp 0, + 0) &=& + 0 \\ - & \fma_N(\pm 0, \mp 0, - 0) &=& - 0 \\ - & \fma_N(z_1, z_2, z_3) &=& \ieee_N(z_1 \cdot z_2 + z_3) \\ + \begin{array}{@{}lcll} + \EXPROFDET & \relaxed(R)[ A_0, \dots, A_n ] = A_R \\ + & \relaxed(R)[ A_0, \dots, A_n ] = A_0 \\ \end{array} +.. note:: + Each parameter can be thought of as inducing a family of operations + that is fixed to one particular choice by the execution environment. + The fixed operation itself can still be non-deterministic or partial. -.. _op-relaxed_madd: -:math:`\relaxedmadd_N(z_1, z_2, z_3)` -..................................... +.. _op-frelaxed_madd: -Relaxed multiply-add allows for fused or unfused results. +:math:`\frelaxedmadd_N(z_1, z_2, z_3)` +...................................... -* :math:`\EXPROFDET` Return either :math:`\fadd_N(\fmul_N(z_1, z_2), z_3)` or :math:`\fma_N(z_1, z_2, z_3)` +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{fmadd}} \in \{0, 1\}`. -* Return :math:`\fma_N(z_1, z_2, z_3)` +* Return :math:`\relaxed(R_{\F{fmadd}})[\fadd_N(\fmul_N(z_1, z_2), z_3)` or :math:`\fma_N(z_1, z_2, z_3)]`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedmadd_N(z_1, z_2, z_3) &=& [ \fadd_N(\fmul_N(z_1, z_2), z_3), \fma_N(z_1, z_2, z_3) ] \\ - & \relaxedmadd_N(z_1, z_2, z_3) &=& \fma_N(z_1, z_2, z_3) \\ + \begin{array}{@{}lcll} + \frelaxedmadd_N(z_1, z_2, z_3) &=& \relaxed(R_{\F{fmadd}})[ \fadd_N(\fmul_N(z_1, z_2), z_3), \fma_N(z_1, z_2, z_3) ] \\ \end{array} +.. note:: + Relaxed multiply-add allows for fused or unfused results, + which leads to implementation-dependent rounding behaviour. + In the :ref:`deterministic profile `, + the unfused behaviour is used. -.. _op-relaxed_nmadd: -:math:`\relaxednmadd_N(z_1, z_2, z_3)` -...................................... +.. _op-frelaxed_nmadd: -Relaxed negative multiply-add allows for fused or unfused results. +:math:`\frelaxednmadd_N(z_1, z_2, z_3)` +....................................... -* Return :math:`\relaxedmadd(-z_1, z_2, z_3)`. +* Return :math:`\frelaxedmadd(-z_1, z_2, z_3)`. .. math:: - \begin{array}{@{}llcll} - & \relaxednmadd_N(z_1, z_2, z_3) &=& \relaxedmadd_N(-z_1, z_2, z_3) \\ + \begin{array}{@{}lcll} + \frelaxednmadd_N(z_1, z_2, z_3) &=& \frelaxedmadd_N(-z_1, z_2, z_3) \\ \end{array} +.. note:: + This operation is implementation-dependent because :math:`\frelaxedmadd` is implementation-dependent. -.. _op-relaxed_swizzle_lane: - -:math:`\relaxedswizzlelane(i^n, j)` -................................... - -* Let :math:`k` be the :ref:`signed interpretation ` of :math:`j`. - -* If :math:`j` is less than :math:`16`, return :math:`i[j]`. - -* If :math:`k` is less than :math:`0`, return :math:`0`. - -* :math:`\EXPROFDET` Otherwise, return either :math:`0` or :math:`i[j \mod n]`. -* Otherwise, return :math:`0`. +.. _op-frelaxed_min: -.. math:: - \begin{array}{@{}llcll} - & \relaxedswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ - & \relaxedswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ - \EXPROFDET & \relaxedswizzlelane(i^n, j) &=& [ 0, i[j \mod n] ] & (\otherwise) \\ - & \relaxedswizzlelane(i^n, j) &=& 0 & (\otherwise) \\ - \end{array} +:math:`\frelaxedmin_N(z_1, z_2)` +................................ +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{fmin}} \in \{0, 1, 2, 3\}`. -.. _op-relaxed_swizzle: +* If :math:`z_1` is a NaN, then return :math:`\relaxed(R_{\F{fmin}})[ \fmin_N(z_1, z_2)`, \NAN(n), z_2, z_2 ]`. -:math:`\relaxedswizzle(a^n, s^n)` -................................. +* If :math:`z_2` is a NaN, then return :math:`\relaxed(R_{\F{fmin}})[ \fmin_N(z_1, z_2)`, z_1, \NAN(n), z_1 ]`. -Relaxed swizzle lane is deterministic if the signed interpretation of the index is less than 16 (including negative values). -:math:`j` is a 8-bit int. +* If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, then return :math:`\relaxed(R_{\F{fmin}})[ \fmin_N(z_1, z_2)`, \pm 0, \mp 0, -0 ]`. -* Return :math:`\X{rsl}_0 \dots \X{rsl}_{n-1}` where :math:`\X{rsl}_i = \relaxedswizzlelane(a^n, s^n[i])` +* Return :math:`\fmin_N(z_1, z_2)`. .. math:: - \begin{array}{@{}llcll} - & \relaxedswizzle(a^n, s^n) &=& \X{rsl}_0 \dots \X{rsl}_{n-1} \\ - & \qquad \where \X{rsl}_i &=& \relaxedswizzlelane(a^n, s^n[i]) + \begin{array}{@{}lcll} + \frelaxedmin_N(\pm \NAN(n), z_2) &=& \relaxed(R_{\F{fmin}})[ \fmin_N(\pm \NAN(n), z_2), \NAN(n), z_2, z_2 ] \\ + \frelaxedmin_N(z_1, \pm \NAN(n)) &=& \relaxed(R_{\F{fmin}})[ \fmin_N(z_1, \pm \NAN(n)), z_1, \NAN(n), z_1 ] \\ + \frelaxedmin_N(\pm 0, \mp 0) &=& \relaxed(R_{\F{fmin}})[ \fmin_N(\pm 0, \mp 0), \pm 0, \mp 0, -0 ] \\ + \frelaxedmin_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ \end{array} +.. note:: + Relaxed minimum is implementation-dependent for NaNs and for zeroes with different signs. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\fmin`. -.. _op-relaxed_trunc: -.. _op-relaxed_trunc_u: -:math:`\relaxedtrunc^u_{M,N}(z)` +.. _op-frelaxed_max: + +:math:`\frelaxedmax_N(z_1, z_2)` ................................ -Relaxed unsigned truncation converts floating point numbers to integers. -The result for NaN's and out-of-range values is host-dependent. +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{fmax}} \in \{0, 1, 2, 3\}`. -* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`2^N-1` or :math:`2^N-2` or :math:`2^(N-1)`. +* If :math:`z_1` is a NaN, then return :math:`\relaxed(R_{\F{fmax}})[ \fmax_N(z_1, z_2)`, \NAN(n), z_2, z_2 ]`. -* :math:`\EXPROFDET` Else if :math:`\trunc(z)` is positive and less than :math:`2^N`, return :math:`\truncu_{M,N}(z)`. +* If :math:`z_2` is a NaN, then return :math:`\relaxed(R_{\F{fmax}})[ \fmax_N(z_1, z_2)`, z_1, \NAN(n), z_1 ]`. -* :math:`\EXPROFDET` Else return either :math:`\truncsatu_{M,N}(z)` or :math:`2^N-1` or :math:`2^N-2` or :math:`2^(N-1)`. +* If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, then return :math:`\relaxed(R_{\F{fmax}})[ \fmax_N(z_1, z_2)`, \pm 0, \mp 0, +0 ]`. -* Return :math:`\truncsatu_{M,N}(z)`. +* Return :math:`\fmax_N(z_1, z_2)`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm \NAN(n)) &=& [ 0, 2^{N}-1, 2^{N}-2, 2^{N-1}] \\ - \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff -1 < \trunc(\pm q) < 2^N) \\ - \EXPROFDET & \relaxedtrunc^u_{M,N}(\pm p) &=& [ \truncsatu_{M,N}(\pm p), 2^{N}-1, 2^{N}-2, 2^{N-1}] & (\otherwise) \\ - & \relaxedtrunc^u_{M,N}(z) &=& \truncsatu_{M,N}(z) & \\ + \begin{array}{@{}lcll} + \frelaxedmax_N(\pm \NAN(n), z_2) &=& \relaxed(R_{\F{fmax}})[ \fmax_N(\pm \NAN(n), z_2), \NAN(n), z_2, z_2 ] \\ + \frelaxedmax_N(z_1, \pm \NAN(n)) &=& \relaxed(R_{\F{fmax}})[ \fmax_N(z_1, \pm \NAN(n)), z_1, \NAN(n), z_1 ] \\ + \frelaxedmax_N(\pm 0, \mp 0) &=& \relaxed(R_{\F{fmax}})[ \fmax_N(\pm 0, \mp 0), \pm 0, \mp 0, +0 ] \\ + \frelaxedmax_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ \end{array} +.. note:: + Relaxed maximum is implementation-dependent for NaNs and for zeroes with different signs. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\fmax`. -.. _op-relaxed_trunc_s: -:math:`\relaxedtrunc^s_{M,N}(z)` -................................ - -Relaxed signed truncation converts floating point numbers to integers. -The result for NaN's and out-of-range values is host-dependent. +.. _op-irelaxed_dot_mul: -* :math:`\EXPROFDET` If :math:`z` is a NaN, return either :math:`0` or :math:`-2^{N-1}`. +:math:`\irelaxeddotmul_{M,N}(i_1, i_2)` +....................................... -* :math:`\EXPROFDET` Else if :math:`\trunc(z)` is larger than :math:`-2^{N-1}-1` and less than :math:`2^{N-1}`, return :math:`\truncs_{M,N}(z)`. +This is an auxiliary operator for the specification of |RELAXEDDOT|. -* :math:`\EXPROFDET` Else return either :math:`\truncsats_{M,N}(z)` or :math:`-2^{N-1}`. +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{idot}} \in \{0, 1\}`. -* Return :math:`\truncsats_{M,N}(z)`. +* Return :math:`\relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), extends_{M,N}), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ]`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm \NAN(n)) &=& [ 0, -2^{N-1} ] \\ - \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} - 1 < \trunc(\pm q) < 2^{N-1}) \\ - \EXPROFDET & \relaxedtrunc^s_{M,N}(\pm p) &=& [ \truncsats_{M,N}(\pm p), -2^{N-1} ] & (\otherwise) \\ - & \relaxedtrunc^s_{M,N}(z) &=& \truncsats_{M,N}(z) & \\ + \begin{array}{@{}lcll} + \irelaxeddotmul_{M,N}(i_1, i_2) &=& \relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), extends_{M,N}), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ] \\ \end{array} +.. note:: + Relaxed dot product is implementation-dependent when the second operand is negative in a signed intepretation. + In the :ref:`deterministic profile `, + it behaves like signed dot product. + -.. _op-relaxed_lane: +.. _op-irelaxed_q15mulr_s: -:math:`\relaxedlane_N(i_1, i_2, i_3)` +:math:`\irelaxedq15mulrs_N(i_1, i_2)` ..................................... -* :math:`\EXPROFDET` If :math:`i_3` is :math:`2^N - 1`, return :math:`i_1`. - -* :math:`\EXPROFDET` Else if :math:`i_3` is :math:`0`, return :math:`i_2`. +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{iq15mulr}} \in \{0, 1\}`. -* :math:`\EXPROFDET` Otherwise return either :math:`\ibitselect_n(i_1, i_2, i_3)` or :math:`i_1` or :math:`i_2` or :math:`\F{top\_bit\_byteselect_N}(i_1, i_2, i_3)`. +* If both :math:`i_1` and :math:`i_2` equal :math:`(\signed^{-1}_N(-2^{N-1})`, then return :math:`\relaxed(R_{\F{iq15mulr}})[ 2^{N-1}-1, \signed^{-1}_N(-2^{N-1}) ]`. -* Return :math:`\ibitselect_n(i_1, i_2, i_3)`. +* Return :math:`\iq15mulrsats(i_1, i_2)` .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedlane_N(i_1, i_2, 2^N-1) &=& i_1 \\ - \EXPROFDET & \relaxedlane_N(i_1, i_2, 0) &=& i_2 \\ - \EXPROFDET & \relaxedlane_N(i_1, i_2, i_3) &=& [ \ibitselect_N(i_1, i_2, i_3), i_2, i_3, \\ - & & & \qquad \F{top\_bit\_byteselect}(i_1, i_2, i_3)] & (\otherwise) \\ - & \relaxedlane_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, i_3) & (\otherwise) \\ + \begin{array}{@{}lcll} + \irelaxedq15mulrs_N(\signed^{-1}_N(-2^{N-1}), \signed^{-1}_N(-2^{N-1})) &=& \relaxed(R_{\F{iq15mulr}})[ 2^{N-1}-1, \signed^{-1}_N(-2^{N-1}) ] & \\ + \irelaxedq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) \end{array} -where: +.. note:: + Relaxed Q15 multiplication is implementation-dependent when the result overflows. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\iq15mulrsats`. -.. math:: - \begin{array}{@{}llcll} - & \F{top\_bit\_byteselect}_N(i_1, i_2, i_3) &=& tbb_0 ... tbb_{N/8 - 1} \\ - & \F{tbb_j} &=& \F{byteselect}(\bytes_8(i_1)[j], \bytes_8(i_2)[j], \bytes_8(i_3)[j]) \\ - & \F{byteselect}(a, b, 0~c^7) &=& a \\ - & \F{byteselect}(a, b, c) &=& b \\ - \end{array} +.. _op-relaxed_trunc: +.. _op-relaxed_trunc_u: -.. _op-relaxed_lane_select: +:math:`\relaxedtrunc^u_{M,N}(z)` +................................ -:math:`\relaxedlaneselect_B(a^n, b^n, c^n)` -........................................... +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{trunc\_u}} \in \{0, 1, 2, 3\}`. -Relaxed lane selection is deterministic when all bits are set or unset in the -mask. Otherwise depending on the host, either only the top bit is examined, or -all bits are examined (i.e. it becomes a bit select), or the top bit of each -byte in the lane is examined. +* If :math:`z` is normal or subnormal and :math:`\trunc(z)` is non-negative and less than :math:`2^N`, then return :math:`\truncu_{M,N}(z)`. -* Return :math:`rll_0 \dots rll_{n-1}` where :math:`rll_i = \relaxedlane_B(a^n[i], b^n[i], c^n[i])`. +* Else, return :math:`\relaxed(R_{\F{trunc\_u}})[ \truncsatu_{M,N}(z), 2^N-1, 2^N-2, 2^(N-1) ]`. .. math:: - \begin{array}{@{}llcll} - & \relaxedlaneselect_B(a^n, b^n, c^n) &=& rll_0 \dots rll_{n-1} \\ - & \qquad \where rll_i &=& \relaxedlane_B(a^n[i], b^n[i], c^n[i]) \\ + \begin{array}{@{}lcll} + \relaxedtrunc^u_{M,N}(\pm q) &=& \truncu_{M,N}(\pm q) & (\iff 0 \leq \trunc(\pm q) < 2^N) \\ + \relaxedtrunc^u_{M,N}(z) &=& \relaxed(R_{\F{trunc\_u}})[ \truncsatu_{M,N}(z), 2^{N}-1, 2^{N}-2, 2^{N-1}] & (\otherwise) \\ \end{array} +.. note:: + Relaxed unsigned truncation is implementation-dependent for NaNs and out-of-range values. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\truncu`. -.. _op-relaxed_min: - -:math:`\relaxedmin_N(z_1, z_2)` -............................... -Relaxed minimum differs from regular minimum when inputs are NaN's or zeroes with different signs. -It allows for implementation to return the first or second input when either input is a NaN. +.. _op-relaxed_trunc_s: -* :math:`\EXPROFDET` If :math:`z_1` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_2` +:math:`\relaxedtrunc^s_{M,N}(z)` +................................ -* :math:`\EXPROFDET` If :math:`z_2` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_1` +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{trunc\_s}} \in \{0, 1\}`. -* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, return either :math:`+ 0` or :math:`- 0`. +* If :math:`z` is normal or subnormal and :math:`\trunc(z)` is greater than or equal to :math:`-2^{N-1}` and less than :math:`2^{N-1}`, then return :math:`\truncs_{M,N}(z)`. -* Return :math:`\fmin_N(z_1, z_2)`. +* Else, return :math:`\relaxed(R_{\F{trunc\_s}})[ \truncsats_{M,N}(z), 2^N-1, 2^N-2, 2^(N-1) ]`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedmin_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & \relaxedmin_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & \relaxedmin_N(\pm 0, \mp 0) &=& [ -0, \pm 0, \mp 0, -0 ] \\ - & \relaxedmin_N(z_1, z_2) &=& \fmin_N(z_1, z_2) & (\otherwise) \\ + \begin{array}{@{}lcll} + \relaxedtrunc^s_{M,N}(\pm q) &=& \truncs_{M,N}(\pm q) & (\iff -2^{N-1} \leq \trunc(\pm q) < 2^{N-1}) \\ + \relaxedtrunc^s_{M,N}(z) &=& \relaxed(R_{\F{trunc\_s}})[ \truncsats_{M,N}(z), \signed^{-1}_N(-2^{N-1})] & (\otherwise) \\ \end{array} +.. note:: + Relaxed signed truncation is implementation-dependent for NaNs and out-of-range values. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\truncs`. -.. _op-relaxed_max: -:math:`\relaxedmax_N(z_1, z_2)` -............................... +.. _op-irelaxed_swizzle: +.. _op-irelaxed_swizzle_lane: -Relaxed maximum differs from regular maximum when inputs are NaN's or zeroes with different signs. -It allows for implementations to return the first or second input when either input is a NaN. +:math:`\irelaxedswizzle(i^n, j^n)` +.................................. -* :math:`\EXPROFDET` If :math:`z_1` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_2` +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{swizzle}} \in \{0, 1\}`. -* :math:`\EXPROFDET` If :math:`z_2` is a NaN, return either an element of :math:`\nans_N\{z_1, z_2\}`, :math:`\NAN(n)`, or :math:`z_1` +* For each :math:`j_k` in :math:`j^n`, let :math:`r_k` be the value :math:`\irelaxedswizzlelane(i^n, j_k)`. -* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are zeroes of opposite sign, return either :math:`+ 0` or :math:`- 0`. +* Let :math:`r^n` be the concatenation of all :math:`r_k`. -* Return :math:`\fmax_N(z_1, z_2)`. +* Return :math:`r^n`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedmax_N(\pm \NAN(n), z_2) &=& [ \nans_N\{\pm \NAN(n), z_2\}, \NAN(n), z_2, z_2 ] \\ - \EXPROFDET & \relaxedmax_N(z_1, \pm \NAN(n)) &=& [ \nans_N\{\pm \NAN(n), z_1\}, z_1, \NAN(n), z_1 ] \\ - \EXPROFDET & \relaxedmax_N(\pm 0, \mp 0) &=& [ +0, \pm 0, \mp 0, +0 ] \\ - & \relaxedmax_N(z_1, z_2) &=& \fmax_N(z_1, z_2) & (\otherwise) \\ + \begin{array}{@{}lcl} + \irelaxedswizzle(i^n, j^n) &=& \irelaxedswizzlelane(i^n, j)^n \\ \end{array} - -.. _op-relaxed_q15mulr_s: - -:math:`\relaxedq15mulrs_N(i_1, i_2)` -.................................... - -Relaxed Q15 multiply differs from regular Q15 multiply when the multiplication results overflows (i.e. when both inputs are -32768). -It allows for implementations to either wrap around or saturate. - -* :math:`\EXPROFDET` If both :math:`z_1` and :math:`z_2` are :math:`-2^{N-1}`, return either :math:`2^{N-1} - 1` or :math:`-2^{N-1}`. - -* Return :math:`\iq15mulrsats(i_1, i_2)` +where: .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxedq15mulrs_N(-2^{N-1}, -2^{N-1}) &=& [ 2^{N-1}-1, -2^{N-1}] & \\ - & \relaxedq15mulrs_N(i_1, i_2) &=& \iq15mulrsats(i_1, i_2) + \begin{array}{@{}lcll} + \irelaxedswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ + \irelaxedswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ + \irelaxedswizzlelane(i^n, j) &=& \relaxed(R_{\F{swizzle}})[ 0, i[j \mod n] ] & (\otherwise) \\ \end{array} +.. note:: + Relaxed swizzle is implementation-dependent + if the signed interpretation of any of the 8-bit indices in :math:`j^n` is larger than or equal to 16. + In the :ref:`deterministic profile `, + it behaves like regular :math:`\SWIZZLE`. -.. _op-relaxed_dot_mul: -:math:`\relaxeddotmul_{M,N}(i_1, i_2)` -...................................... +.. _op-irelaxed_laneselect: + +:math:`\irelaxedlaneselect_N(i_1, i_2, i_3)` +............................................ -Relaxed integer dot product differs from regular integer dot product when the elements of the input have their most significant bit set. +The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{laneselect}} \in \{0, 1\}`. -* :math:`\EXPROFDET` Return either :math:`\imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2))`. +* If :math:`i_3` is smaller than :math:`2^{N-1}`, then let :math:`i'_3` be the value :math:`0`, otherwise :math:`2^N-1`. -* Return :math:`\imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2))`. +* Let :math:`i''_3` be :math:`\relaxed(R_{\F{laneselect}})[i_3, i'_3]`. + +* Return :math:`\ibitselect_N(i_1, i_2, i''_3)`. .. math:: - \begin{array}{@{}llcll} - \EXPROFDET & \relaxeddotmul_{M,N}(i_1, i_2) &=& [ \imul_N(\signed_M(i_1), i_2), \imul_N(\signed_M(i_1), \signed_M(i_2)) ] \\ - & \relaxeddotmul_{M,N}(i_1, i_2) &=& \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)) \\ + \begin{array}{@{}lcll} + \irelaxedlaneselect_N(i_1, i_2, i_3) &=& \ibitselect_N(i_1, i_2, \relaxed(R_{\F{laneselect}})[ i_3, \extends_{1,N}(\ishru_N(i_3, N-1)) ]) \\ \end{array} + +.. note:: + Relaxed lane selection is non-deterministic when the mask mixes set and cleared bits, + since the value of the high bit may or may not be expanded to all bits. + In the :ref:`deterministic profile `, + it behaves like :math:`\ibitselect`. diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 2adae94f9..82d731fbf 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -1487,6 +1487,7 @@ .. |fsub| mathdef:: \xref{exec/numerics}{op-fsub}{\F{fsub}} .. |fmul| mathdef:: \xref{exec/numerics}{op-fmul}{\F{fmul}} .. |fdiv| mathdef:: \xref{exec/numerics}{op-fdiv}{\F{fdiv}} +.. |fma| mathdef:: \xref{exec/numerics}{op-fma}{\F{fma}} .. |fmin| mathdef:: \xref{exec/numerics}{op-fmin}{\F{fmin}} .. |fmax| mathdef:: \xref{exec/numerics}{op-fmax}{\F{fmax}} .. |fcopysign| mathdef:: \xref{exec/numerics}{op-fcopysign}{\F{fcopysign}} @@ -1523,18 +1524,16 @@ .. |narrowu| mathdef:: \xref{exec/numerics}{op-narrow_u}{\F{narrow}^{\K{u}}} .. |narrows| mathdef:: \xref{exec/numerics}{op-narrow_s}{\F{narrow}^{\K{s}}} -.. |fma| mathdef:: \xref{exec/numerics}{op-fma}{\F{fma}} -.. |relaxedmadd| mathdef:: \xref{exec/numerics}{op-relaxed_madd}{\F{frelaxed\_madd}} -.. |relaxednmadd| mathdef:: \xref{exec/numerics}{op-relaxed_nmadd}{\F{frelaxed\_nmadd}} -.. |relaxedswizzlelane| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle_lane}{\F{relaxed\_swizzle\_lane}} -.. |relaxedswizzle| mathdef:: \xref{exec/numerics}{op-relaxed_swizzle}{\F{relaxed\_swizzle}} +.. |frelaxedmadd| mathdef:: \xref{exec/numerics}{op-frelaxed_madd}{\F{frelaxed\_madd}} +.. |frelaxednmadd| mathdef:: \xref{exec/numerics}{op-frelaxed_nmadd}{\F{frelaxed\_nmadd}} +.. |irelaxedswizzlelane| mathdef:: \xref{exec/numerics}{op-irelaxed_swizzle_lane}{\F{frelaxed\_swizzle\_lane}} +.. |irelaxedswizzle| mathdef:: \xref{exec/numerics}{op-irelaxed_swizzle}{\F{frelaxed\_swizzle}} .. |relaxedtrunc| mathdef:: \xref{exec/numerics}{op-relaxed_trunc}{\F{relaxed\_trunc}} -.. |relaxedlane| mathdef:: \xref{exec/numerics}{op-relaxed_lane}{\F{relaxed\_lane}} -.. |relaxedlaneselect| mathdef:: \xref{exec/numerics}{op-relaxed_lane_select}{\F{relaxed\_laneselect}} -.. |relaxedmin| mathdef:: \xref{exec/numerics}{op-relaxed_min}{\F{frelaxed\_min}} -.. |relaxedmax| mathdef:: \xref{exec/numerics}{op-relaxed_max}{\F{frelaxed\_max}} -.. |relaxedq15mulrs| mathdef:: \xref{exec/numerics}{op-relaxed_q15mulr_s}{\F{irelaxed\_q15mulr\_s}} -.. |relaxeddotmul| mathdef:: \xref{exec/numerics}{op-relaxed_dot_mul}{\F{relaxed\_dot\_mul}} +.. |irelaxedlaneselect| mathdef:: \xref{exec/numerics}{op-irelaxed_laneselect}{\F{irelaxed\_laneselect}} +.. |frelaxedmin| mathdef:: \xref{exec/numerics}{op-frelaxed_min}{\F{frelaxed\_min}} +.. |frelaxedmax| mathdef:: \xref{exec/numerics}{op-frelaxed_max}{\F{frelaxed\_max}} +.. |irelaxedq15mulrs| mathdef:: \xref{exec/numerics}{op-irelaxed_q15mulr_s}{\F{irelaxed\_q15mulr\_s}} +.. |irelaxeddotmul| mathdef:: \xref{exec/numerics}{op-irelaxed_dot_mul}{\F{irelaxed\_dot\_mul}} .. Numerics, meta functions @@ -1557,6 +1556,8 @@ .. |lanes| mathdef:: \xref{exec/numerics}{aux-lanes}{\F{lanes}} +.. |relaxed| mathdef:: \xref{exec/numerics}{aux-relaxed}{\F{relaxed}} + .. Other meta functions diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index f0a57b49c..d3f3577dd 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1038,7 +1038,7 @@ The following auxiliary function denotes the number of lanes in a vector shape, } -.. _valid-relaxedlaneselect: +.. _valid-relaxed_laneselect: :math:`\shape\K{.}\RELAXEDLANESELECT` ..................................... From 940398cd4823522a9b36bec4984be4b153dedb81 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Thu, 5 Sep 2024 10:31:53 -0500 Subject: [PATCH 156/230] Restrict offsets to index type's range in validation (#79) --- document/core/syntax/instructions.rst | 4 +-- document/core/valid/instructions.rst | 39 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/document/core/syntax/instructions.rst b/document/core/syntax/instructions.rst index bbb7de720..f96512ccb 100644 --- a/document/core/syntax/instructions.rst +++ b/document/core/syntax/instructions.rst @@ -683,7 +683,7 @@ Instructions in this group are concerned with linear :ref:`memory `. \DATADROP~\dataidx \\ \end{array} -Memory is accessed with |LOAD| and |STORE| instructions for the different :ref:`number types ` and `vector types `. +Memory is accessed with |LOAD| and |STORE| instructions for the different :ref:`number types ` and :ref:`vector types `. They all take a :ref:`memory index ` and a *memory immediate* |memarg| that contains an address *offset* and the expected *alignment* (expressed as the exponent of a power of 2). Integer loads and stores can optionally specify a *storage size* that is smaller than the :ref:`bit width ` of the respective value type. @@ -692,7 +692,7 @@ In the case of loads, a sign extension mode |sx| is then required to select appr Vector loads can specify a shape that is half the :ref:`bit width ` of |V128|. Each lane is half its usual size, and the sign extension mode |sx| then specifies how the smaller lane is extended to the larger lane. Alternatively, vector loads can perform a *splat*, such that only a single lane of the specified storage size is loaded, and the result is duplicated to all lanes. -The static address offset is added to the dynamic address operand, yielding a 33 bit *effective address* that is the zero-based index at which the memory is accessed. +The static address offset is added to the dynamic address operand, yielding a 33-bit or 65-bit *effective address* that is the zero-based index at which the memory is accessed. All values are read and written in |LittleEndian|_ byte order. A :ref:`trap ` results if any of the accessed memory bytes lies outside the address range implied by the memory's current size. diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index d1345efc3..9b00db7ea 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1509,6 +1509,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`. * Then the instruction is valid with type :math:`[\X{it}] \to [t]`. @@ -1517,6 +1519,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq |t|/8 }{ C \vdashinstr t\K{.load}~x~\memarg : [\X{it}] \to [t] @@ -1532,6 +1536,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * Then the instruction is valid with type :math:`[\X{it}] \to [t]`. @@ -1540,6 +1546,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ C \vdashinstr t\K{.load}N\K{\_}\sx~x~\memarg : [\X{it}] \to [t] @@ -1553,6 +1561,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`. * Then the instruction is valid with type :math:`[\X{it}~t] \to []`. @@ -1561,6 +1571,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq |t|/8 }{ C \vdashinstr t\K{.store}~x~\memarg : [\X{it}~t] \to [] @@ -1574,6 +1586,10 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. +* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. + +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * Then the instruction is valid with type :math:`[\X{it}~t] \to []`. @@ -1582,6 +1598,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ C \vdashinstr t\K{.store}N~x~\memarg : [\X{it}~t] \to [] @@ -1597,6 +1615,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8 \cdot M`. * Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. @@ -1605,6 +1625,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 \cdot M }{ C \vdashinstr \K{v128.}\LOAD{N}\K{x}M\_\sx~x~\memarg : [\X{it}] \to [\V128] @@ -1620,6 +1642,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. @@ -1628,6 +1652,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ C \vdashinstr \K{v128.}\LOAD{N}\K{\_splat}~x~\memarg : [\X{it}] \to [\V128] @@ -1643,6 +1669,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. @@ -1651,6 +1679,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ C \vdashinstr \K{v128.}\LOAD{N}\K{\_zero}~x~\memarg : [\X{it}] \to [\V128] @@ -1666,6 +1696,8 @@ Memory Instructions * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * The lane index :math:`\laneidx` must be smaller than :math:`128/N`. @@ -1676,6 +1708,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 \qquad \laneidx < 128/N @@ -1692,6 +1726,9 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. * Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. + +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. + * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * The lane index :math:`\laneidx` must be smaller than :math:`128/N`. @@ -1702,6 +1739,8 @@ Memory Instructions \frac{ C.\CMEMS[x] = \X{it}~\limits \qquad + \memarg.\OFFSET < 2^{|\X{it}|} + \qquad 2^{\memarg.\ALIGN} \leq N/8 \qquad \laneidx < 128/N From bc87071c03c7850fc12f336c8168764f2f8ceb2c Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Fri, 6 Sep 2024 09:36:51 +0200 Subject: [PATCH 157/230] Implementation note --- document/core/exec/numerics.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index a32ff11b7..cfbe1ae7b 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2052,9 +2052,12 @@ where :math:`R` is a global parameter selecting one of the allowed outcomes: .. note:: Each parameter can be thought of as inducing a family of operations - that is fixed to one particular choice by the execution environment. + that is fixed to one particular choice by an implementation. The fixed operation itself can still be non-deterministic or partial. + Implementations are expexted to either choose the behaviour that is the most efficient on the underlying hardware, + or the behaviour of the deterministic profile. + .. _op-frelaxed_madd: From d29854b17bb949fcf52453b40761e157208f43e4 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Thu, 19 Sep 2024 13:07:55 -0700 Subject: [PATCH 158/230] Fix typing of `array.new` in the index of instructions --- document/core/appendix/index-instructions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/index-instructions.py b/document/core/appendix/index-instructions.py index 5cf52ad9d..2be87918c 100755 --- a/document/core/appendix/index-instructions.py +++ b/document/core/appendix/index-instructions.py @@ -325,7 +325,7 @@ def Instruction(name, opcode, type=None, validation=None, execution=None, operat Instruction(r'\STRUCTGETS~x~y', r'\hex{FB}~\hex{03}', r'[(\REF~\NULL~x)] \to [\I32]', r'valid-struct.get', r'exec-struct.get'), Instruction(r'\STRUCTGETU~x~y', r'\hex{FB}~\hex{04}', r'[(\REF~\NULL~x)] \to [\I32]', r'valid-struct.get', r'exec-struct.get'), Instruction(r'\STRUCTSET~x~y', r'\hex{FB}~\hex{05}', r'[(\REF~\NULL~x)~t] \to []', r'valid-struct.set', r'exec-struct.set'), - Instruction(r'\ARRAYNEW~x', r'\hex{FB}~\hex{06}', r'[t] \to [(\REF~x)]', r'valid-array.new', r'exec-array.new'), + Instruction(r'\ARRAYNEW~x', r'\hex{FB}~\hex{06}', r'[t~\I32] \to [(\REF~x)]', r'valid-array.new', r'exec-array.new'), Instruction(r'\ARRAYNEWDEFAULT~x', r'\hex{FB}~\hex{07}', r'[\I32] \to [(\REF~x)]', r'valid-array.new', r'exec-array.new'), Instruction(r'\ARRAYNEWFIXED~x~n', r'\hex{FB}~\hex{08}', r'[t^n] \to [(\REF~x)]', r'valid-array.new_fixed', r'exec-array.new_fixed'), Instruction(r'\ARRAYNEWDATA~x~y', r'\hex{FB}~\hex{09}', r'[\I32~\I32] \to [(\REF~x)]', r'valid-array.new_data', r'exec-array.new_data'), From 87536c870fa65fccce1d936caeca3b644351c35d Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Sat, 21 Sep 2024 11:10:54 +0200 Subject: [PATCH 159/230] [versions] Update 3.0 draft --- .../versions/core/WebAssembly-3.0-draft.pdf | Bin 2196704 -> 2201931 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/document/versions/core/WebAssembly-3.0-draft.pdf b/document/versions/core/WebAssembly-3.0-draft.pdf index 05d62775d384205b2bfabbda00b83d8d6c35e31a..e984c99ba1769992a69a6b41eee33adce906dcd1 100644 GIT binary patch delta 1113452 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%0Dxyr_LO#P~O?pXcexM{g0lVkYo-lKo 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 z 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%0D5OW0Nyu?I<^;kK$`k@I?B(L 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

nF5mZ6YZs*uo_}C9loKyo=LE!og$i^P@>ts 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

37zU9lS;HE_2U==#Dz?I$d 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%0AeQFa#q)D47gGNewpoXv| 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

Immediately after a WebAssembly [=memory.grow=] instruction executes, perform the following steps: @@ -1364,7 +1365,9 @@ The algorithm IndexValueToU64(|v|, |indextype|) asserts that a JavaSc 1. Otherwise, [=throw=] a {{TypeError}}. 1. Else if |indextype| is "i64", 1. If |v| [=is a BigInt=], - 1. If |v| is not equal to [=!=] [$ToBigUint64$](|v|), [=throw=] a {{RangeError}}. + 1. If |v| is not equal to [=!=] [$ToBigUint64$](|v|), [=throw=] a {{TypeError}}. + + Note: This operation is designed to mirror [=[EnforceRange]=], which [=throws=] a {{TypeError}} for out-of-range numeric values. 1. Return [=ℝ=](|v|) as a WebAssembly [=u64=]. 1. Otherwise, [=throw=] a {{TypeError}}. 1. Assert: This step is not reached. From cd8bba6d0b70ff15440800992ec135e627da431b Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Mon, 23 Sep 2024 14:59:33 -0500 Subject: [PATCH 162/230] Update embedding and execution specs for memory64 (#74) * Convert table and memory instance storage to sequences Vectors in the spec are syntactically limited to a maximum size of 2^32. This is incompatible with memory64, so the storage has been changed to use sequences instead of vectors. The execution semantics are unaffected. * Update memory/table validation/execution/embedding to u64 Memory and table operations in the embedding section have been updated to use u64 instead of u32, reflecting the changes to `limits`. Various operations in the execution section were also updated to reflect `idxtype`'s inclusion in `memtype` and `tabletype`, as well as the supporting validation rules. --- document/core/appendix/embedding.rst | 18 +++++------ document/core/exec/modules.rst | 48 ++++++++++++---------------- document/core/exec/runtime.rst | 12 +++---- document/core/valid/types.rst | 18 +++++------ 4 files changed, 45 insertions(+), 51 deletions(-) diff --git a/document/core/appendix/embedding.rst b/document/core/appendix/embedding.rst index 737230ef8..3e564123b 100644 --- a/document/core/appendix/embedding.rst +++ b/document/core/appendix/embedding.rst @@ -383,7 +383,7 @@ Tables .. _embed-table-read: -:math:`\F{table\_read}(\store, \tableaddr, i:\u32) : \reff ~|~ \error` +:math:`\F{table\_read}(\store, \tableaddr, i:\u64) : \reff ~|~ \error` ...................................................................... 1. Let :math:`\X{ti}` be the :ref:`table instance ` :math:`\store.\STABLES[\tableaddr]`. @@ -401,7 +401,7 @@ Tables .. _embed-table-write: -:math:`\F{table\_write}(\store, \tableaddr, i:\u32, \reff) : \store ~|~ \error` +:math:`\F{table\_write}(\store, \tableaddr, i:\u64, \reff) : \store ~|~ \error` ............................................................................... 1. Let :math:`\X{ti}` be the :ref:`table instance ` :math:`\store.\STABLES[\tableaddr]`. @@ -421,7 +421,7 @@ Tables .. _embed-table-size: -:math:`\F{table\_size}(\store, \tableaddr) : \u32` +:math:`\F{table\_size}(\store, \tableaddr) : \u64` .................................................. 1. Return the length of :math:`\store.\STABLES[\tableaddr].\TIELEM`. @@ -437,7 +437,7 @@ Tables .. _embed-table-grow: -:math:`\F{table\_grow}(\store, \tableaddr, n:\u32, \reff) : \store ~|~ \error` +:math:`\F{table\_grow}(\store, \tableaddr, n:\u64, \reff) : \store ~|~ \error` .............................................................................. 1. Try :ref:`growing ` the :ref:`table instance ` :math:`\store.\STABLES[\tableaddr]` by :math:`n` elements with initialization value :math:`\reff`: @@ -495,7 +495,7 @@ Memories .. _embed-mem-read: -:math:`\F{mem\_read}(\store, \memaddr, i:\u32) : \byte ~|~ \error` +:math:`\F{mem\_read}(\store, \memaddr, i:\u64) : \byte ~|~ \error` .................................................................. 1. Let :math:`\X{mi}` be the :ref:`memory instance ` :math:`\store.\SMEMS[\memaddr]`. @@ -513,12 +513,12 @@ Memories .. _embed-mem-write: -:math:`\F{mem\_write}(\store, \memaddr, i:\u32, \byte) : \store ~|~ \error` +:math:`\F{mem\_write}(\store, \memaddr, i:\u64, \byte) : \store ~|~ \error` ........................................................................... 1. Let :math:`\X{mi}` be the :ref:`memory instance ` :math:`\store.\SMEMS[\memaddr]`. -2. If :math:`\u32` is larger than or equal to the length of :math:`\X{mi}.\MIDATA`, then return :math:`\ERROR`. +2. If :math:`i` is larger than or equal to the length of :math:`\X{mi}.\MIDATA`, then return :math:`\ERROR`. 3. Replace :math:`\X{mi}.\MIDATA[i]` with :math:`\byte`. @@ -533,7 +533,7 @@ Memories .. _embed-mem-size: -:math:`\F{mem\_size}(\store, \memaddr) : \u32` +:math:`\F{mem\_size}(\store, \memaddr) : \u64` .............................................. 1. Return the length of :math:`\store.\SMEMS[\memaddr].\MIDATA` divided by the :ref:`page size `. @@ -549,7 +549,7 @@ Memories .. _embed-mem-grow: -:math:`\F{mem\_grow}(\store, \memaddr, n:\u32) : \store ~|~ \error` +:math:`\F{mem\_grow}(\store, \memaddr, n:\u64) : \store ~|~ \error` ................................................................... 1. Try :ref:`growing ` the :ref:`memory instance ` :math:`\store.\SMEMS[\memaddr]` by :math:`n` :ref:`pages `: diff --git a/document/core/exec/modules.rst b/document/core/exec/modules.rst index eef15836d..85dbdb2b1 100644 --- a/document/core/exec/modules.rst +++ b/document/core/exec/modules.rst @@ -94,11 +94,11 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo 1. Let :math:`\tabletype` be the :ref:`table type ` of the table to allocate and :math:`\reff` the initialization value. -2. Let :math:`(\{\LMIN~n, \LMAX~m^?\}~\reftype)` be the structure of :ref:`table type ` :math:`\tabletype`. +2. Let :math:`(\idxtype~\{\LMIN~n, \LMAX~m^?\}~\reftype)` be the structure of :ref:`table type ` :math:`\tabletype`. 3. Let :math:`a` be the first free :ref:`table address ` in :math:`S`. -4. Let :math:`\tableinst` be the :ref:`table instance ` :math:`\{ \TITYPE~\tabletype', \TIELEM~\reff^n \}` with :math:`n` elements set to :math:`\reff`. +4. Let :math:`\tableinst` be the :ref:`table instance ` :math:`\{ \TITYPE~\tabletype, \TIELEM~\reff^n \}` with :math:`n` elements set to :math:`\reff`. 5. Append :math:`\tableinst` to the |STABLES| of :math:`S`. @@ -108,7 +108,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo \begin{array}{rlll} \alloctable(S, \tabletype, \reff) &=& S', \tableaddr \\[1ex] \mbox{where:} \hfill \\ - \tabletype &=& \{\LMIN~n, \LMAX~m^?\}~\reftype \\ + \tabletype &=& \idxtype~\{\LMIN~n, \LMAX~m^?\}~\reftype \\ \tableaddr &=& |S.\STABLES| \\ \tableinst &=& \{ \TITYPE~\tabletype, \TIELEM~\reff^n \} \\ S' &=& S \compose \{\STABLES~\tableinst\} \\ @@ -123,7 +123,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo 1. Let :math:`\memtype` be the :ref:`memory type ` of the memory to allocate. -2. Let :math:`\{\LMIN~n, \LMAX~m^?\}` be the structure of :ref:`memory type ` :math:`\memtype`. +2. Let :math:`(\idxtype~\{\LMIN~n, \LMAX~m^?\})` be the structure of :ref:`memory type ` :math:`\memtype`. 3. Let :math:`a` be the first free :ref:`memory address ` in :math:`S`. @@ -137,7 +137,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo \begin{array}{rlll} \allocmem(S, \memtype) &=& S', \memaddr \\[1ex] \mbox{where:} \hfill \\ - \memtype &=& \{\LMIN~n, \LMAX~m^?\} \\ + \memtype &=& \idxtype~\{\LMIN~n, \LMAX~m^?\} \\ \memaddr &=& |S.\SMEMS| \\ \meminst &=& \{ \MITYPE~\memtype, \MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \} \\ S' &=& S \compose \{\SMEMS~\meminst\} \\ @@ -284,28 +284,25 @@ Growing :ref:`tables ` 2. Let :math:`\X{len}` be :math:`n` added to the length of :math:`\tableinst.\TIELEM`. -3. If :math:`\X{len}` is larger than or equal to :math:`2^{32}`, then fail. +3. Let :math:`(\idxtype~\limits~\reftype)` be the structure of :ref:`table type ` :math:`\tableinst.\TITYPE`. -4. Let :math:`\limits~t` be the structure of :ref:`table type ` :math:`\tableinst.\TITYPE`. +4. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. -5. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. - -6. If :math:`\limits'` is not :ref:`valid `, then fail. +5. If the :ref:`table type ` :math:`(\idxtype~\limits'~\reftype)` is not :ref:`valid `, then fail. -7. Append :math:`\reff^n` to :math:`\tableinst.\TIELEM`. +6. Append :math:`\reff^n` to :math:`\tableinst.\TIELEM`. -8. Set :math:`\tableinst.\TITYPE` to the :ref:`table type ` :math:`\limits'~t`. +7. Set :math:`\tableinst.\TITYPE` to the :ref:`table type ` :math:`(\idxtype~\limits'~\reftype)`. .. math:: \begin{array}{rllll} - \growtable(\tableinst, n, \reff) &=& \tableinst \with \TITYPE = \limits'~t \with \TIELEM = \tableinst.\TIELEM~\reff^n \\ + \growtable(\tableinst, n, \reff) &=& \tableinst \with \TITYPE = \idxtype~\limits'~\reftype \with \TIELEM = \tableinst.\TIELEM~\reff^n \\ && ( \begin{array}[t]{@{}r@{~}l@{}} \iff & \X{len} = n + |\tableinst.\TIELEM| \\ - \wedge & \X{len} < 2^{32} \\ - \wedge & \limits~t = \tableinst.\TITYPE \\ + \wedge & \idxtype~\limits~\reftype = \tableinst.\TITYPE \\ \wedge & \limits' = \limits \with \LMIN = \X{len} \\ - \wedge & \vdashlimits \limits' \ok) \\ + \wedge & \vdashtabletype \idxtype~\limits'~\reftype \ok) \\ \end{array} \\ \end{array} @@ -322,28 +319,25 @@ Growing :ref:`memories ` 3. Let :math:`\X{len}` be :math:`n` added to the length of :math:`\meminst.\MIDATA` divided by the :ref:`page size ` :math:`64\,\F{Ki}`. -4. If :math:`\X{len}` is larger than :math:`2^{16}`, then fail. +4. Let :math:`(\idxtype~\limits)` be the structure of :ref:`memory type ` :math:`\meminst.\MITYPE`. -5. Let :math:`\limits` be the structure of :ref:`memory type ` :math:`\meminst.\MITYPE`. - -6. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. +5. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. -7. If :math:`\limits'` is not :ref:`valid `, then fail. +6. If the :ref:`memory type ` :math:`(\idxtype~\limits')` is not :ref:`valid `, then fail. -8. Append :math:`n` times :math:`64\,\F{Ki}` :ref:`bytes ` with value :math:`\hex{00}` to :math:`\meminst.\MIDATA`. +7. Append :math:`n` times :math:`64\,\F{Ki}` :ref:`bytes ` with value :math:`\hex{00}` to :math:`\meminst.\MIDATA`. -9. Set :math:`\meminst.\MITYPE` to the :ref:`memory type ` :math:`\limits'`. +8. Set :math:`\meminst.\MITYPE` to the :ref:`memory type ` :math:`(\idxtype~\limits')`. .. math:: \begin{array}{rllll} - \growmem(\meminst, n) &=& \meminst \with \MITYPE = \limits' \with \MIDATA = \meminst.\MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \\ + \growmem(\meminst, n) &=& \meminst \with \MITYPE = \idxtype~\limits' \with \MIDATA = \meminst.\MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \\ && ( \begin{array}[t]{@{}r@{~}l@{}} \iff & \X{len} = n + |\meminst.\MIDATA| / 64\,\F{Ki} \\ - \wedge & \X{len} \leq 2^{16} \\ - \wedge & \limits = \meminst.\MITYPE \\ + \wedge & \idxtype~\limits = \meminst.\MITYPE \\ \wedge & \limits' = \limits \with \LMIN = \X{len} \\ - \wedge & \vdashlimits \limits' \ok) \\ + \wedge & \vdashmemtype \idxtype~\limits' \ok) \\ \end{array} \\ \end{array} diff --git a/document/core/exec/runtime.rst b/document/core/exec/runtime.rst index 8a91a1f76..7e00f8948 100644 --- a/document/core/exec/runtime.rst +++ b/document/core/exec/runtime.rst @@ -356,18 +356,18 @@ Table Instances ~~~~~~~~~~~~~~~ A *table instance* is the runtime representation of a :ref:`table `. -It records its :ref:`type ` and holds a vector of :ref:`reference values `. +It records its :ref:`type ` and holds a sequence of :ref:`reference values `. .. math:: \begin{array}{llll} \production{table instance} & \tableinst &::=& - \{ \TITYPE~\tabletype, \TIELEM~\vec(\reff) \} \\ + \{ \TITYPE~\tabletype, \TIELEM~\reff^\ast \} \\ \end{array} Table elements can be mutated through :ref:`table instructions `, the execution of an active :ref:`element segment `, or by external means provided by the :ref:`embedder `. It is an invariant of the semantics that all table elements have a type :ref:`matching ` the element type of :math:`\tabletype`. -It also is an invariant that the length of the element vector never exceeds the maximum size of :math:`\tabletype`, if present. +It also is an invariant that the length of the element sequence never exceeds the maximum size of :math:`\tabletype`, if present. .. index:: ! memory instance, memory, byte, ! page size, memory type, embedder, data segment, instruction @@ -380,15 +380,15 @@ Memory Instances ~~~~~~~~~~~~~~~~ A *memory instance* is the runtime representation of a linear :ref:`memory `. -It records its :ref:`type ` and holds a vector of :ref:`bytes `. +It records its :ref:`type ` and holds a sequence of :ref:`bytes `. .. math:: \begin{array}{llll} \production{memory instance} & \meminst &::=& - \{ \MITYPE~\memtype, \MIDATA~\vec(\byte) \} \\ + \{ \MITYPE~\memtype, \MIDATA~\byte^\ast \} \\ \end{array} -The length of the vector always is a multiple of the WebAssembly *page size*, which is defined to be the constant :math:`65536` -- abbreviated :math:`64\,\F{Ki}`. +The length of the sequence always is a multiple of the WebAssembly *page size*, which is defined to be the constant :math:`65536` -- abbreviated :math:`64\,\F{Ki}`. The bytes can be mutated through :ref:`memory instructions `, the execution of an active :ref:`data segment `, or by external means provided by the :ref:`embedder `. diff --git a/document/core/valid/types.rst b/document/core/valid/types.rst index d4324f72b..1eab64635 100644 --- a/document/core/valid/types.rst +++ b/document/core/valid/types.rst @@ -501,10 +501,10 @@ Limits Table Types ~~~~~~~~~~~ -:math:`\limits~\reftype` -........................ +:math:`\idxtype~\limits~\reftype` +................................. -* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{32}-1`. +* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\idxtype|}-1`. * The reference type :math:`\reftype` must be :ref:`valid `. @@ -512,11 +512,11 @@ Table Types .. math:: \frac{ - C \vdashlimits \limits : 2^{32} - 1 + C \vdashlimits \limits : 2^{|\idxtype|}-1 \qquad C \vdashreftype \reftype \ok }{ - C \vdashtabletype \limits~\reftype \ok + C \vdashtabletype \idxtype~\limits~\reftype \ok } @@ -528,16 +528,16 @@ Table Types Memory Types ~~~~~~~~~~~~ -:math:`\limits` -............... +:math:`\idxtype~\limits` +........................ -* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{16}`. +* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\idxtype|-16}`. * Then the memory type is valid. .. math:: \frac{ - C \vdashlimits \limits : 2^{16} + C \vdashlimits \limits : 2^{|\idxtype|-16} }{ C \vdashmemtype \limits \ok } From 615bd1f119a39d84386768a1009394969a2c8673 Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Mon, 23 Sep 2024 22:24:30 +0200 Subject: [PATCH 163/230] wasm-module-builder: Fix left-over use of kWasmStmt (#83) This was renamed to kWasmVoid in https://github.com/WebAssembly/memory64/commit/2f5a7c524fdc4dec280c6a53bc3cc800b6ad1c11. --- test/js-api/wasm-module-builder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/js-api/wasm-module-builder.js b/test/js-api/wasm-module-builder.js index 4b5abcfbe..04f19b278 100644 --- a/test/js-api/wasm-module-builder.js +++ b/test/js-api/wasm-module-builder.js @@ -934,7 +934,7 @@ class WasmModuleBuilder { addTable(type, initial_size, max_size = undefined, init_expr = undefined) { if (type == kWasmI32 || type == kWasmI64 || type == kWasmF32 || - type == kWasmF64 || type == kWasmS128 || type == kWasmStmt) { + type == kWasmF64 || type == kWasmS128 || type == kWasmVoid) { throw new Error('Tables must be of a reference type'); } if (init_expr != undefined) checkExpr(init_expr); From 09cc6c67df9839fce619ccfe7ae2155c9d62c6b5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Sep 2024 07:59:15 +0200 Subject: [PATCH 164/230] Adapt changes --- document/core/appendix/changes.rst | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index f0f2a808e..009abb363 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -525,13 +525,28 @@ Relaxed Vector Instructions Added new *relaxed* vector instructions, which are vector instructions whose behaviour is non-deterministic and implementation-dependent. [#proposal-relaxed]_ -* New binary :ref:`vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}`, :math:`\K{i16x8.relaxed\_q15mulr\_s}`, :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` +* New binary :ref:`vector instruction `: -* New ternary :ref:`vector instruction `: :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_madd}`, :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_nmadd}`, :math:`\K{i}\!N\!\K{x}\!M\!\K{.relaxed\_laneselect}`, :math:`\K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}` + - :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_min}` + - :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_max}` + - :math:`\K{i16x8.relaxed\_q15mulr\_s}` + - :math:`\K{i16x8.relaxed\_dot\_i8x16\_i7x16\_s}` -* New conversion :ref:`vector instructions `::math:`\K{i32x4.relaxed\_trunc\_f32x4\_}\sx`, :math:`\K{i32x4.relaxed\_trunc\_f64x2\_}\sx\K{\_zero}` +* New ternary :ref:`vector instruction `: -* New byte reordering :ref:`vector instruction `: :math:`\K{i8x16.relaxed\_swizzle}` + - :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_madd}` + - :math:`\K{f}\!N\!\K{x}\!M\!\K{.relaxed\_nmadd}` + - :math:`\K{i}\!N\!\K{x}\!M\!\K{.relaxed\_laneselect}` + - :math:`\K{i32x4.relaxed\_dot\_i8x16\_i7x16\_add\_s}` + +* New conversion :ref:`vector instructions `: + + - :math:`\K{i32x4.relaxed\_trunc\_f32x4\_}\sx` + - :math:`\K{i32x4.relaxed\_trunc\_f64x2\_}\sx\K{\_zero}` + +* New byte reordering :ref:`vector instruction `: + + - :math:`\K{i8x16.relaxed\_swizzle}` .. index:: determinism, non-determinism, profiles From 8dadd74b8b8938813fc5212aec30e81b696c0ed8 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Sep 2024 08:07:54 +0200 Subject: [PATCH 165/230] Eps --- document/core/appendix/changes.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 009abb363..352bc504a 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -523,7 +523,8 @@ Added managed reference types. [#proposal-gc]_ Relaxed Vector Instructions ........................... -Added new *relaxed* vector instructions, which are vector instructions whose behaviour is non-deterministic and implementation-dependent. [#proposal-relaxed]_ +Added new *relaxed* vector instructions, +whose behaviour is non-deterministic and implementation-dependent. [#proposal-relaxed]_ * New binary :ref:`vector instruction `: @@ -554,7 +555,7 @@ Added new *relaxed* vector instructions, which are vector instructions whose beh Profiles ........ -Added the notion of :ref:`profile ` for specifying language subsets. +Introduced the concept of :ref:`profile ` for specifying language subsets. * A new profile defining a :ref:`deterministic ` mode of execution. From 60af1b02a63d97bf9f552bb106be8e154ee28e8f Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 26 Sep 2024 09:40:23 +0200 Subject: [PATCH 166/230] [versions] Update 3.0 draft --- .../versions/core/WebAssembly-3.0-draft.pdf | Bin 2201931 -> 2267616 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/document/versions/core/WebAssembly-3.0-draft.pdf b/document/versions/core/WebAssembly-3.0-draft.pdf index e984c99ba1769992a69a6b41eee33adce906dcd1..9f315315940f84433d550c17d5b2d0e69ec0a401 100644 GIT binary patch delta 1615268 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 -U6Vn{w7i#x#nM#67D{z&J{ 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%0AeKFagDUbNUGPUAraFSLW`7(3 z=lT;I1Q!{+iz_=Q)XBRhLarLuXxi-7gCJy?Io7NooduXp&FJ6hKoX<&9)IVHT1GO- zRKi?{xX_Jv)~Tsi?$foOWB=7ML#rmJh=5%+_>JUoup;F9YF4q9W=c#;YAD# znMlj$a)L^SrjU7xxXBL=rHcV8E@|RXlwxp1w20>^X2uu~lK4?SyDRvB37zhzXslp4 z%WDb7;eP)iV0l8HAOUhsg-lw8fCJ3d-E zf*PK+EmhH!!7Wwi;B{i}0KsqZFe&lpxg zYTp+H6*2K(zjo0&uI@T;r91828dUMhXN_`M8aznqbx&~;a?=^Ck9?#bNn@?KIBz?# z-((8t9H)RyQrz<}h);9QkXoz>%!ja0_=PB^!K{%|rst$=FJdim?<64!6$IlX&U|4P`o67>mu5To3OGcZqo-O5tjB-59Zg;LFG6ayB?s_*G6&SaxCgOO|YFAz#=}6Nk(4p|p+~(wnu?SGa z#4mX>BOx+B0&X&i6#D`jMqmBs49HzM#2O#46=Vt$n^}>Iwj6eSuFMnT8r0iz1CD{f zrO+iF{;FEeQkT=hs0VswR&!e$kRQHeDcs{Q(FR{D~%JA)Xv&Sugf-^R9^ z>rW31L*W&-rccV=qQVY8(lkvo$Os|;nhPVSV`y0K7~>a#=v~(~;`AR}D69tl`PYvo zixUhTjrr3MKg_5eyc@sBpNxXm*h z`3^N@#&m~ovF}Fj$c$NUb11;C7vgzYH|U7eEAx%v0=R!B}Op#t~)*sxo06 zPC5hFkhQCK>~se))`a%p2IbjGEGNb4Jco%R*@qzUg&EMF(B}+DEimAq<}U45zkasc zc(KR-9!xjwohk?%=IP3Q-q2yv&rzh{RAnhgC1s6Q1Mr8TL%GnY^}9)%Ci)M|b$P8& zb@q8Aky1J3@2WxvQ6>B{d>g+5i%%S+W>tZZMxl@f z@bUS-Hm}q^?ss#GxWs=Cd$cSI|4(b`hN*laF5Xtf|M&4nICLE`GW@}6A&mNqTBH&R zP)2=Q`#7!!?K}K=vI@eGeDEE-?_E3ge-Lt-k1-A+1P@OdxCJUEB>TtJovAWB1EA|f zz>OAoU$xvRD>9JK*CwKJBR5mPqKI_UgQB-$L?ec^lCn4Wc29IRv0&@OuhhztTEFi) z@_n0dbBGH0H#F$saqoHV8%|X-9AgcFhO;kG5E>L1gah(+1Z;_R&&o+W@35}-<%T0p zV6%?!I8NTg$%KP<3tx$W0rP!%CNQydxv;d&XK>d0080aUb5){xb>TN2Ub(`rnqCp= zM8WJ2S%s#x@7Z@!1_U3EZuW99A_@z^5$g$}NN10?uKGq+^zjY0Z;c`4nmK!helA3c z$ViDWymX@c&Uy(H`?jLm>#UX>v~z|s5W@7fyR~Dtg#Ob-xS_kN_h+-^Be3&V!i+Y} zz|1iQ9SDgFZ&-6WXTEo2W-$`2A#*lk5&}8iDX#baMTpX(cBqCI9#j-~WtF6?uAj)o z%Kk7_RU|M7Um9!k0A--;&?0AX^wJd>{vOIMW>*q&K~rhA%;!=4FcLyrE{!=CfR*aV zbaAYA{zfKdNg*6SLS5)s4rFZEgD34IXRA8)miyeey*m@65+5rn>5@y_&6DgS{xI8c z_jZ+qj6tV&U;Pt^Vs+>IwUDjOS({kS<*hpkMBi~!S1Kk~-X%?3fl!clVD&BkidhtMp zc+!K9uaIb{N7s~rM%XBj#SHj0AI5G}i;hq`DOcchL>Y*94{1pry;xC&?!!QpQGm|U z8w_dHuk+onyOS7d2?htf1Fe!R>+hA}ven`!8gi}6BB6QGXP~vH2Sq12cfb?u^)wID z(f`j6CIKch2*;hHVJ-$$E4i3#*-f4IDhB@4zin)0F*qWegO0-xdmH=Mf;2E^UGk3- z8jVOC63kH}8y?d9=+wszVizh7(z@`Ed1IDAYTsyV+(1;eWYxx45B%65M;#4w;6 zix)gD-(ioGrU3FCK6ass>{Oh;)%LizE{1mGCL$VDx+RvuBap$ILnKHv&A-2b|7=z( zWJ%*Ds5tIZ)L5CCYv)rUT>4wqqgtZOX^*f(YD+UrR#R_zbj}tdGm?1i(L@4Lt`Up>ODTm<;Aw47OF=}?~AoB_zAJ%+s{*Q9gt=7vz*nOsuYp9u9G7e zZG=*WH|JJB3pl3>q_K&H_tq2uPSZt+OiX0|Lt~C9)vw|`u+9JF@{HQ4L>gCr+=-U#O z-u=1?)pIwYW4hphC2C9FB;Opl7`A!>N_~_v2N)F$vdR_+T!LvLs78rivyY>>J#GgH z8oI*c#99E-GQJx$?5PlH9pZZnJ`ea&S`uOm-!4Z#VPW;v|3q_$>#P4_z3sVn@at^1 zy=3%H9$+Hb(yuUhF%PSl@W*n4VH`L_-HlJcm=Lze{KtZEr zW0oTIIfZ(3>l1CLTzBw+`vTjEkzZgduyNYhF+v>f<*}%9Xm{}!O2^BMj{KXY4funu zI*j@LNp328!YM7}LI%4^2hhqdhW9g7El^@Kh@=>)Y&YOB#bhuRl_w>^W(-ao2aK?R zOo50Ux!FFpbPfF6NTz-s2CR8ndQV0{@yly$Sys z5O;X~Bljh3CYX=IT`B7a!OLK1U@RHv+e9z{AvoB6`sk&nNRDyYkcbigo`U%>EI(l{ zo;R&xu1!Ys+9%UFWf*W8nu+>QZKx*>X6ktdv5mMw$J`024eDbPVa%jL>c4ga`D9i5 zA@Oh?(JXfXThfB7Kqy3w9*wl$q0RG|x{1rsb=p;!ffmGW&IQ>J|8`$wWe|HoF!*H5qtw=hIv8h47qC)v` zRU=CT0rPCSlv`~fBLf78vbm$3$j?8_xgo~LQYn?Q;Mk36*-bxp*_%P(*5wYb!HP}8 zVJJtW;mZp(zJtNSlqvt`a+8OP>)(zRvdmCOX?q5+jA@%Eb=4$k-MWZa zKnbYn$rtD32rxcsM5#$ocPgV{=O&M#nme2t zg-qnh6wT+Se?c)5B9z>nN+`*j7=66}q&8zq&*Y?M6b4b&@qO8DntU6L*tGE0Cx~v~ zgLLm-%&yb59T<$2qjQFWRF+eW6~)0WUbOT2s*d3eqb2XaquwLWZ8yO5P#Hv7k;peA zF*C3G!?N_A{IGDRvN^J7=gj$sn#)pFsfw)iIjy(mi;q51taGjxuWX%96IJ2}knEep zmPI0qUj9bB*S9nQ%z@xoAjf96_8n$stdAYoX!|mI3P2G&IQyUqUndmfCwuS*+d61s ztGj!Xc8IL4t|JOVon}I2QkOIx7YmsQxohd^7EL#cApANC@tDO33h`L#xhY&sf{o`O zMumyzpfx+X-)$mE4fESk-UE7ow}wLQ~30aUm^QGvN%H|D!?Nw&Z(x{2;FLy(GL{T+S(z%-p@c8vYn> zd1VW@o&b>F97Lo*+&@2)6;e@%EV*qXw^&a_eaFD58;|-DKo~lSWr}anET>f*Fzif( z_pP@#97JFhWGDsyP4kWp*Uk70f?biryp!mcMVWH#wgLC8LKU9dpAk-SJcb>-$|C~X zA3DrBh-{zsBZ|M!gTfx2wmu>us&!v#i@o!4#&rQ2az$4!@POFi14o<8L64^O6A3Hl zLA~0HvBn(HgN}fGJcgC)jO=Bdi2k?j9vGMY|dGX1y(QgX;#L_4W=%01$>WNC&5kg9bwLw^J6 zwg~|NG}UEA(obOw0=JZVn9W*yytdjokG7UbXm_|e#jU{;c_(XRpWH2$a_p;Vr$1Xn zB}$sq>Pkm!aO>}94_kYm_0>8FM_SGXPv92u4yItmI5=z3V(W7z^!`|ps+4gl@}Nzx ztT5?Ux8syG$8la+t+Prs}|DVu%CjxtF+F-%t;cA_HnZPLiSd&Q_?>~g+daKb(r{vgXh!kTGB?y{1+B6 zP+4q_FeI4M#gQtMRFK-$pF~iCJ2W`nx8R8G8K%02!u^!`-#RJ~!mf2j$`luY<{u7S z&TcjskBJObBv8b3VXfv(r z|ImSyozNLp5oKS!A!M($^oOj@GU!`=m#?y0c^Lh*mim)n$H%l!r*;W7xvs`RIQ;S8 zH9QuF=JX_qGbc0I^z5IM>mVRcL_d90oz}uuD_+vbWYkS=KTfyK7bO z*)GALUNm%Ydt=1Qpmf>9H?U;>>xLE5q4LUa6a@4t93#B;$Eon)fK;AmL1_P=Kg8+~ zFIo)nhZ+fQk#^X-RwkY^s~j*H3yoeg#qML~;tv$H0&~I)WCprENC$r@jYy<3!XM)V zORV{pz8rgeGpfqkO2CA|%3l6?-Zw>7XByI%?i7(L%Aa&8N%VY~V$nEB+kRn9GsPvBT8cKXXOOH@(ZJy{ zaIh*?u4$PDji*OMuk*?{(tCOnxxYB?USMD@%FI=ygwXtC6VyorAsFK4tV;L#%&y!FpDNkc6sAw7C3Jy@M>}Zuz5`=3k`c43jcY! z37s&nc)ja6xc5Sxlb`zZQlUqZDIg73AM!f6i#5Rz?bpptH^ji)Z1#obt8l3cRUl`< zMtg1ZlFLGYa14RU4nkqHU%X(@;r2k}vlojK+y2qTPUOMS#qr%zBAzd}uh=9tnis?(WxeH@jZX-j+bni@&DCG8;2KQymSgp@Ll= z4DDX47n01p3#gpb@4M_2=9@0h{4d7dGAgcM+ZGP)5Zo=eTjTET1b6qK!Rg?x3GVLN zI0OO&cXxMpx3AAR_uO;ud+*0L*612FYS&)XdyoC2)~Yq<#G{HPfDP$3Y4`_@KmgJU z`WpU!ffJBKkVN<)W7T>}O;qrRq>u{2$W5YI0nsAW|Al7QB>)a`#@mrC{BtA?^8dD0 z$s3$8J;1lAj(>G7L@VLyNd9{NZ*T*~;D0P{4qcb{|J4u-{>yL%|Azqw$(PadiOF?Q zrfkDC#Ty9n=RQ}3T60QN{2xONfWjhjCKMYR8F_JCf@w8WbJX3P!Y9iag3C*G-dVl& z6w&=Q2`T=hA3L>fzkVzbCwHpAc#^wTeyX8y4S-~|6f$>d!1}?)zh`Qe1L+hW0eOjU z&a49bgvzD*$#7_23}!QAtnQO9Yz7k64_vMR$V;Kl2*}#h3uAY>PcPm2W$q=APPO2> zgzWP_b=30W{P4I2&yQA^R_>B|)56MYbc}Kfc)mzb_ywFGbB(zER?Dji^l%xgduCAE zKPH|tx)N8mS zYD!@~G!sxXZnp&`FNO~FMaqEJTmk8yw^BqfB)@VP_$2(_y=bSmn1D>N`Cud+k? zexd`Rb5ek4TzR{_A2nTqZ!(uNENRbjE}7hf@)e?Pg{gfV?{dHK3W~WcqObCXp{^P~E2d!Qe(LRD&&iyN z>CFLQ3E_?yD%X$@Sc~H1EcM-f*^p}s{xYx!1=ZJ?eMm-P&^PbzYbVz#>$qTPh zk_Ap$dq0C@X*>?RCwo2}xr)M5{B*?T{L2`cs#q~WZmCWR zbW%OYpR~MbPF36@LuJdrey%Vx2uC2EH}PV7O&1@vOd3g1W!#TWifzF*BQgtLsvICP zZPJbW?fZD?^71bH@&3yZ%-Hw(ytjA1#v<&Smhi_XPBP{%OTW9P;3+#G( zx=&dl6&ij8-?UN!^pz#8vvrjek(>h}AJ|m2nvxZy`nn6y&a9xD zBoVz{+Im|;S!WDNwS6j>Jk?`nQhi4v{SbK>1-6)PleT9t!r2TbZRIsGXpI++ebrGp ztG%a+k1M&|y^_Kyy(H4ui*Dsv{UG_Z?ycItoNk2D#oCSoeiP|6pno#gl#s@weBKlYx|tWku&f(g?JY-NP+p~x0}n? z-lg92WSbu%{T==6`HMF3%~R#OWn$3fk=?Px@p%))2t1)`BXTpXna}9y91KE72^DKG z1(&NLz1}g-4YBq`8#eJknj#}f3fjxhf3Zml#Jahp@VRN3(qjc#{arBoT6CD$(ScZ!#l^Px7h|)`5|tcp_au~&RP80y>4LpxMHl&PzNgrp zM2!{EPLjvV;f$8kq-~=TVY%+Itmx{Zgs0OQtx3?tW~nu0TtKKVTuC;0qqcNROr>cv zn6I2NN05&5JHry|Rd}6qEC}Zzze07@?B+|M2z!ZcjQ*7y(BMq5iVeWh(b`I{Bei5X z8}+L)#!|H&by7fNXj=_qJ;b1p5tJ=I$f-7u2(s0IGbYKkr~*`^HvZffHJz6NmFmD* zljK@D0HQM8V;nSjqn2c8Fn=c$9)n&T35{)X)#~5lP{^{n;%iH>6^jYJc~JatE`z{x4BJ^!CN1N&S~CU`VO!5ouv#VS5WjDZU&ET+$d<0L zS}ky*bgNyk7AQHKe2UJjQn(!Am5|4462>|adfR_A%ArkQd|QDHoD0}=fN#QjW9&2stKFw0nu~sn7pvRp`ZSwLkD~Je8-}YM(IDV>)t*_=GHJA31{wmKw z$o~_#x(wn>l>8M>zNET*X_8~8W1UBS;gUd0KBdYrtN1Hk>Ft|7rJOw=iq`qZK16=7 zr|1${1}(YF+VT#8s%eOhWCRqe^Eu{v2unF50G6PxDP`YY6%qtT44O7xK<^B#&DkH_ z9TTkC5VYtnQ91jvqA&)!fq}{5PKDuwHu?m_5L$b1lMUo{g0UWW!#m(}~WsAAHm|MPo@Yh8O_#7oBZ|yKI=6YR1s}`dq8U0hjOTmEm3O2B}ny zw@{1^=9fmSOsB0WdArb*-z%ZZVHqee%SF9J{%Y+jzBqKrDE+Z2xK^Y@jk*QRXuKt3-kWb>pcB(QP8Vd-S;f-f5?z@U@cF z958?@PJ0STEVY)^bV6`;S9}~a-Npb?Rp&E1Z*w)4QgM#UUvXuTx~Zuy2t{cG$J<>rc5HkJ-Yc17ao{yXu1b!h)7q zRJ~LsgnrsyUJs=tFS*2Wz`zNjI<{3@-)!-CXS2qO)4hs@Vx~N4SrS)nfu1c;AT2gA zT>%M2PLXB?B8uDjx3=xcTBE2JN3#HYv0<@QD1Wd1$`3*b{S~~jlS_9IuWzTcnrat6 z%T$jwefO$M6@H&%u^(8eP;Mh5vAf7q{2=LX>h-6v(45d-3oQbMhDvE-FMjMBC6HZ^nL;EUK zM3G5`A<;}Gp(GJPj2lIhzu$6+mw@GtzAS^T{y8tE+-FE6wNyTUYXfUHHuUgHZ}3}h zKN)p%JO9trwM%VU3HOl7sxLSSJs#i%Y|4*86p|+&&z+Cfn;$Aunzg# zcH*_BW=g2xnu$WZWcsrGyDG$^)Ns&@bc+0cBnnRn|8CM%PJ6&JqSZBhf7tF@+j{wU zdk`Y-^!N1iZR78Fdfl0MeQicV`)K9&y?MMUd5QameyT z?mc3$8)96VC3f> z2IQa2&Bh)gvj&XASUw68cphW3hrG;*Hp(#73DNKi;%tgowQZkyL_{TfkL0;zuC3Ufl4$sevL`)h1YeC=P%EfA7YVFAA$wm$WraDPj{0tFizFB8^8!25@n9HH0Cu^kqhewD^_d^jFC zY){0gtLLz|Pgldmq%}Dvj|k6JCOZw51|WE%e^46De%6Ht3I?MGGKrz=68w*V77W-& z%Ov3ubn@Q3{c{vB165MP(_IVKi#|vZFHIIFLh@fh^X@+e{x^Q#LG)hD0$mC|3b95V z=by})&?tFeW=(i=M6iK_&;P@KsOAX&x9x`0Mupe^SHr@AL+WYrb*(W-4C@?sWn&NtkF`mO~fHpu>Q5y7`Vfb0-#L-U4WQN zD~#1`)8UAgzq%$cNpoMw6faa3n(XEaDHce%>CVJ7Kmcjx{mS9%FHKuFA)$JYqt}vRU@5Z72K%#N&5o|5K;!ql zKU;?N%by6x4tp`oqUaFEHRY>qwMbwtMLyQFW@JQNSq`)>@Oh;hQkDlZ8T`XW8zZ9qfERr`jugQO znuPQbTyyAT;I+R;MaKOYhmdiD%k>OVrQk`iJc_U)ds|>qv}u%9Jz-j?WPPrrSt~S|Us1jX_apSts^3%xN4`Zfn( zJpN7ivP!~r%sx6pngvN+)+o$A`rI2ui5K)R{p>z>x-@iJs&uC4KIBcfG3HHpj6E|T zPJ4;*CY)nY-`k~X&^Z5ly0nHl`3`vTK=3`;X0BUaf90&wq%%!2i3R(3V&GAJ<}cnn6uvUS06$gp z{IOYKYqXm{!Qnx0J7lD>WM+P}=cx`gXl=S$igr^(B*Z4PL6ukeT!G7fx9q@OkScoS zWXb`%U7XcxIiRi{9|fj7i3tZTRN3DPm8bwQPH>y9Tq6Y?n?OsPxP*K(*B-D5gW9T_ zx4fq_`zR#_bwv!E%}O+147M7r!u4y57+RBm>U6}Y`DBk3^?#y$E$7KfMtV}{8Hh6u zikYs?dira`Ce~cL-2Ww?+xr;9AZxqO{(YH@i(BqbVSa0pcR{sMr4_!}*>MAz;7Jvb zgrmkjx#=943-|EEH@o@shq!M&Smx$R7!d2$XW?eMrMp;bk_IZ-FQ?aZ8c za;C~WIs2SCIU-rOe@orHo87w(FaR9dCp?uBd9LQEIIaPirn9-8tQ`FNFBJ~2W#ljNTq_QsgR2;x zE8L5voQbO|Hn^$OD~{*JoL1Jn$Vq=wiopS)%aw7SQgc8hb zN{S(S@r(fH>I{t5M9@dyuy}-~Kl9v7EO52S-DfFa;T<4x2}LoTNd*MuqftG{NtNwn z))J=mkA$(Ko$p{idF8&4s(huTZ*w1i0G^c7fBbWc3dP35nPS2QgOx%Zhen?w(g|G* zSsL7Y*a__ghk&5@>kKHrOVInzsSsf9**V;QYPCYKgT=G{Nl&H>CI$zdXkDi6iqw^B zOJcC%EE@F6{(xqk7oueIz4V3)Na#~wC4tHS=4kyYhavqgoz+13=d!kFf9GVILWi_U zC|XU{509q&6h(Hmg4?#-etoiV{Y0VfFWx|j zko2UZ*fTe9m@e`BI+}QxCoOO4`Aao5(e2iH8^z5!@Wtn%otk3E*jFv!IF1+bP6O$b z75*{l^0fdL%N$x)9wCn$al{AVjyGlS!coaHX< z-=XyJZ&W&@yH)AB=+XgRgx$Za(`LB8ZHbnTA0*DYAxC!~ZcPN@c;BAu`?|bMO$G7} z5~2NV#~Rp4@U9Z7HnwfxCmEd~(b=O5_2f^EVB~KDt$5g0yG9p$r8^xjj|oxm6}u!TtgOwWk?MWk$;e>Q9lxr_ z)i0(oq=J6_0^|bkLGQm!zsI3{Bb|P?cwReT5%!llP)2)5a~->TILi3;{qf-gguZRB z4bd&Nc&);h6Jx#>kJ7AvGQ<_wh4Rytg6k{CDFjzy`-RPNeGLpe)xvtV8ATdb7G1@X zl<-pV-6-GuqNO-jO#Q{OKA*yt-LOk<>=?4&a1v*sM;+FQU2=Yyx3P15I+=Vx(lLIIq+0U`! zkW*~lfnVKSsG9kz$6%W-XPixDx=}k%5xE-n`WJX-v=?hP89f$GxSGm1dyRsC$qZhZ zkax&5VLN38PrLWsE7nN(`|NMwR)dVb?>`I)9XU^LOli2rEOHqXKzjgpd$(gle&Z7B zP0iV(*aJ|Dy$zm4<|mhJb}42TA?)?{Ormr_AWpYv)=*Hybba=Y{!ubNYj>j^i4F0f zQ$U*U@HhqNNfhCZ{mYhkrZEYrXFr);0RxNO-`G}LgBG_q)c%;3Kff{K&gwEZ&&Wmk zOc2_w9d&Dn39uOP7&8kDpwX!_Dr-ly^bLzWcobo!9?8$Z6kNcBDl zAXs?J+!X5M@abjtx2ey2r>?xF#PP)X;A+Xr+gwZy$$8E`s4MZfm5$HN3+B%;LP{_8 z1VhxtqO0bfCl!oVkF(Vkzt5_TKj(J4*W5PZte~iChguh3G^*{(LL3_D#;VEw^gDP* zZ}V|~o>FrAZU+VvUrw~Iz557suf5Fxt&}qrJB1E%NIM1mJ2G;Hwm@C$Z?{Li9%x;K zbeMhp-6*CKrHgB5o^M;|WMvOfU2CE?Ic)EvJ-k(E!TekR0-P9}7?K!gdzA=S$)E!C zL9G8WB5v2!QD=^Uv5r+D0FSlIWPC2Us5qp~|1j`=|I2?OfTlx>sge8?NtP(XrdvcI z9ACyq?Ms`0)s(FkXiVV$VCDJ`P1k=12GZt;bE>7WV(wVw1uDcL$Fv&Kd3^spMDgD- z!0seoNWV;Sjp^h+Is~Ww8upYGZ2%COuA{D zi!f1j$o~sm8miHZyk9e$B2}=I&})EVmEc3CTrXjNe51~JQ~Z=mMbemgEqfDwDwJ)& zx9H8kC6(rMT^OGk6`J&=kcDSaFa$ymIDr`hFboDH(+eTd@cH-b<5nOC2ie-_4sQ~B zdZp0eX43+g6DjqZu5BuRW#H&02H&w(oTc6nGMYJ?;sC+*^XpUbQs?9x{8r~d5Ny7` z0%n|ktHJNdK9C!cxq$NiMM|b}XwyXM(vP4%`KhX{TCoP_f_%Mr-uYF{_*RjzF#_au zWl8Q6o|c@NSi|B&9P|9+rod5{a>s7!VMnX_R+S|O6W7Z2Dr47xHsDInzP4w3j6=A? zd1okx$eRPvjD2{)D1rV?g%%Ssmq=xO?NMjpGXd8M&bkxp@DLAU=wjLWAkVu{fx?dF)!d}&?I)O0L}=MlZTVB3xT-GKymM2?k62uQ~~xLJF>QCdj`D#Pu*wCNYK zJoJ^^wP#;Z0%CFrX2yz2$!y{;5GJ6{pLPW!uwygRG;^AB`868We~e1k-F>x|#=7~- zsz}%x?SB?s5Ib73N2$GAIWaL4a-V9}uZm9LshSxHR;BHsU`lelwf)_bb4@xak*vHF zcjH{ZxY4tpy06#04{6gG`E?zR#YU(vxO=KiF`Z>l0+{{{CJm|ZDNwQSY24g35AZ)G zgR4%)JP21L(rcbq-rmLAzy#!|j|bnu4#oCU_xN*0sSK;&IP3#N8xH&6 zqATDA`gGq=OcvVi=+M??<=rvn-j$ls;^VjJSHJ3yh%q2UqP0-?zabtnFfb_pl*)o) zXX8#GkAbEK8pykDOMULVVfaO;5wheZ+(aK{{!?*IlX=OV3eLwasLoy;35>8l1?FTY zd?q0O>}_0I6~*QWh&#_d|Mq;s#?yk}bm?=D0vd0Ri-v>6m$h*EPE1QcTYx^p$kUEE z-VS^yJq%3|X2IFob$OjVQ7>vYvfOfV3&1BuO)h8$9>q3nF8{pJ6z5(C!R93my}EB)m~4n@=UL9i)Mk{ zHtp>a=*q|#AH~85@vST}nDbC|Eo)+J0Cd$^V6G7c>5bM2!%#KbTSrpuopD7x?vY#7@o|`_*Ha&W!fbS8Zj1Omay%{G@gHFq;JXmJwamKsHL*?F!N_DNXXe z!CzWY8TwRH;Ym)yn#fK*T|LlozpE+bK$)u+MmVa@kIcA4)u)T;G~oY|Y_V6J2T~8` zmxR_IlAyPt$5SZ}2oMkR4V&<}=y=?8$H>odI%Hv3+F%H)^zoS6?8v-2Q3WW#j^z2h zHsM1oavHB?eoE(Yf&B6{a<(^mrjgsNE4nyg@_+RT!hybpBr*O+1@Pzl{+7EWN>CoFY1_=pl_&0|1+?twgVHvo*D1jW z$Y#E!9lfCa5Bio2NW-_9K{vEvTN=ZG+=ai^TE0CMa!n;9Jdxy-k<*o4P!v9S^ffGt z8p4UEF8s!~A>$Y+DMzcVMkuHN#W~FN(u1*BM9gQiWjK=y<7QMhz$x|oE6~y{YlyFU zuOywJ9{MM()bkRI#idWdJGn62HWXlzNj_vO^;E5Fvy^Bo6_XHTS|mVB$iM^D?!eZ+ zSE+6tZkX?NGK*cMj-^ww{z2)BF)w?fQ!=VuviLo?o-HEEmk?TuiEd21^abBU6XnyW z0==~6$W2hAjDlv?8_2HN23QzEyK3LD-qKHWprlFJFQ@K}^Yzj#HxY(SqMe0Ba1Ma*T-4*}*5Cya^xP;=ng z{!FD(a6}u6X_!P{vYCL<=s$AQC&v=es};1D`yCydE6KLBMGWtgnx6RFyh`J#p`Q31 z{xRBY!bvElfRh)=e8 zc05;!? z7hjXDL2Q;}jXBOD#G9WDDYv_*1fEpmv*{&%SR}kQa;PbmH1NO-m>TjYDWbT_UWE@Q ze=W0j=YuTOi?2IsrMx)Y;xGXMe)0#6d~%H zMz+v*dexA44D0)7Bu}oTe2)#+>M#z8Xz1n&a+TCIt-q33@=f)B`l%l{Q-eh_FS+}m z4$zreu%>zvbT*icFq!mH&7%S2FYH67?yN&hEdqW{PXfL`I)jc<~TB9zg#t z!h@P*MNq%#aAjcBJRJ&ATTGTqEHK9Svy{xXk|H#-i8()T0F{f*pO=pnpAb|012q%? z+;SQMv&|}SV}?~<2bjmiMb0vX4nF=-tU4BSey2a{+tjF7{)+M9K(&z%y& z{qP2R?l*B0@s-&n5;_5 z8Sw?k{KUMD6DvOZexkHUhdk2Hxc8~Dim`7w@%Oijc~gfW>NU{ad(Cd)?~j%I%%5fs zJH<=iP(N*mT9mP%4!%)CYtxZCOUdvo97IZ7wlN;|o*B=B;HZ3D^!#o_Ygk&3(BJ2F zrk4KrNsE046Ao_G8M*!I;FgUig)Ik`_McSz|9~+tr5Ja>Ai@p>h|lB7rqq#OV*=X) z8Xz;lS*^@!!zbf2ii*Kw;-UwQXsP&9rmlV@yi!4PH5v zW2M!RR}Bm__ivT5moZyGC;^*K67oF`x`Gj!58V_IWiRoGg}4XNBEzW)S8>VXj?QZ7 z{*sB;w+!hTBR|mC{(3$qB{!gaNRd?st%XIKTS&pHa)0SU<0j0YV4#}WRtD12a5$SM znLGF!&6x)=_?DVHF8ekWNx2KHsGGTKKIRTxS`ijmo=$Kfd!D>Y{G5e-!hC%GoeHu| z=1Y14CG$n~z{z|+!n7!K+@<|pxL#}|;_ge>{5dl}cKVI<(P2E}^TNIfnZSA`u9I`NOEf2D_Jq`b?=?uue%@IYFczAi+SEOQe==_c)F>VQc$m<0|?VQUMwAK zjo_wEqcs5G8(zc{UPs-NcKihOxe(s&Ohi~5?2|8s7Po?DF94f+3#eGg6R1q58jeWa z5uu2hs__{+CBtgM5w+&yVPnPZ@&5e$eQW>n_$ChR=9!fA+`pCA*W=@=WF_t!qGssz z{bh6S2HHkf+0FL;W$)Qb*ez@<`xlCyrIe6mJ?da_4cCO&l}^Qp?4sTZx5tyWlNUG7 z?DyNFo4B0I)3BFz1z;NJofiydKzX+pfn6u;!L|>VbJXt5HU(ik%O|%H6Mq?oji_=X zu*x~Mf-dOvKV{3VboeyP6ZspnMvgpMnIv3N&<6YUyn5y)Y(M`^vFrPV##GwqK^ zxE>$#6n-nsRbXyJI$>-^7>niBBcz5zxSud~@L*%F&uu2or5%AJSCAC*{jemfx7d-6 zNP!;9urwbU(2+S(idm@LbPcC&OI)OAgZ${gfYMEcaiitsi;uPBJ$0kTJ?M5gFy}*` z=0E{;LHuM)4(x@&B!-z0GLMx%*B(-l&IPB`GOGVTfp@p&$dAf!`(l#N9;CQV-NRvL z&}i8Oq06{MV~rruiq>3PNd%#j@?&`vL{<9`7qhl|`|0$?=lYc^;o_fpmA0LiNsMR9 zAcS%3qF1@%g8SZLH&S-uomh>}<}KD-G#>2u>n^qhz~{aus1?HSfrBQku2h4-r$S!~ zn3v)FMce8;bTL2m3HTUC9es##8cwm`HJ2~|+uQ*Vd`!<0p0!%-l8Y zfhfZD_=0Hm*h-cl2mAiP{5Z3}bIq!LG+gI?$Uf#liRz8ny_O?oF?0eQEszWfr8+Lp zTc2Nwfq5&9C0y4Ho}ICafDx;hpN`qIWd-n3ft97iwK+k*U?2#zvQ_4wwhz#jU2b~G z#rLd&gCpJ|8`VQ2xXgo0Mdf_VcV^m8c$)Xu9SS4g&P4W(`XtR-uiu-Rk`1Vl z@HfQAurJ-%n=Jh15?U-QIO1emvW6{pb{HNUfkLd^u&py_U&f6=dzOUjRl>2qwEo(5 zsN2(;ZhzxCEgp=EuJ)hQ9;+w)Rb$_#T;`9O!G!k3c3^oVuA5wH`WkkI zx%&zVp7||7aiFvMqObTl0-Kyma+BDuE-)*=;H$!&_g!Ak{(MS%2#SdhFQE^A9d8p? zG0;~qjHL=ihR~%cOP8>lT9*)9F7IS#Rs?F`8iyZ;(IuQ~yZp^-(v$uqjJ@AW8w&ZRf6#{o+Fs9zH3H5XszQgnM6So}u3ZMoe-f zV$ViwxRgBS_+CT(BVdtFEXzqx|dz)Pw6BJOTNuO=7TG@9zo^uG1SF=ao3JdD zxgPfzB4N0~e7kX-y}7k~{9XVS6WucUcvrUNybGLGqg(TPzguVq`cgb0nJyVIcwbB1 z{e;3gS6)9HtI||zooXNI^9SxkfvJn0&Ws*cyniq3P_UGeDXi`c6W%U<5Z63+Ot)Oe z0@OZS4mxZ{lDg=4$a;6Mft@i}5f$ft4h&$00#p{^^)8@$)RtUW%7js2@5#yr$@Izw z!{%Ol&bM!<8$mZ`YrQl;X9xD%fOof#r=6FTCl3Di)0}2uKhKA?w{JGK;&91sz!6l2 zi%>GlLpl6bmF`5TQiYyLhY2&-zzwiJu zcm$y#Q$2?!&@TT;hyJJL|G!hJSSeZC(D<1DkFxxf#%*xnc~~~xtwNp^qM-U=nm89x z{Z^a*Uz7iK&Zxv|-b+r1y5uw%D$eyE8H4{w7yPI9FS&w$v_xtL@qA&kyoKZB?xSJc z1N`|l9guc%PA0{Y@;~NxDLeV9dBwEUcYnMi5%8nTO>flA*OkmQcA2d`)VsXp*)Gb( zC863rSElaxOzF4;>G1AfQrYPisBbiMi7e|cG1}aK7ah!?rv3U_YCV)u?7wXNvO7kG z>2-t5p0Tf}VDamaAp;m7JFkp726J8f!KGi@-9*W4egy{4WOBc0QEG907ogan;j&w& z4@N?c=&A?r9A|8?Z%Efl#Y}!nBE?2shBQmDVzQhtzPNd7ms4zfn>nj8ha;7?r3(3DuOYFQ~Y{uA1TsZQ#i&7R(E7raFq~^Wy`oYM^^cOKi=?V>B|xT2+2} zjQ2GVs5_=;4E$Q*xv?C+K}L731sb`X=`o#7%ayLNDc z%IKLh5hZyZIZ5er2Rn5bs9j+q=L zfAG0ji!Wyxxk(FlY~&A>8o`BeWL`9^i6!7v*0|wHE{Tv)=`VtnN~BE5v=_D|HX@e{ z6iN|(p{U|7O>#vqd1P{wm%xc|2O8E9RGYaLuNHM=YI<$N$j#(>wF7`m&@lXvqJ^(E zc-n`g&8nt0qTEhr{dfovV9!{$DM#R+f_T@_;q&0~bPoJ@i)S_hzCJ!5?OmUJ6ZTE- z`Zzg=`|xUgy}L^R7kFKF{t^6j!Sd1adUM_Uzzzgoc*#x-Phc5&R`gllO>8KevI$#QAq2ZP(*F=!IFsel88aR~8Z3!$%G5W2!zPG0?+Vj~Y%bo; z0ibIvC}!HSL#C#E^uU7cG#tSLk3uEX zD;jQ1p}8ePI!KorgTui^wiZg>3o%Y~`5{rBRg``75)WA*vLrIAi~8It4EeNbYb&(0 z#3R?7Rm@@1{9>b|6cH5gEXARF-jGHG2rV_QIs+`OOwOUFa<~#g7j1KcM2o`XTW#}H zGA(}rE4c~$pX);cXT2=zr=X+T81>4mb6dO!2r0BI^W?2?@DvOH{!vsu$0_~nh#4kQ!s#qziJMhstUg21ScE?H_ zaY~gN@~+njI7R%pmIbN;%=Oh!04vMC@#oHZbgn}vqINNk5(#ly)IHf=fyXH0u;l@q zjn}6jX^7z5PaDR8g!Hk02Fqk=Y3;R8e4Rnyg&!j)qS2d(0+DVPg}Y z?IQvBCyiW^FsoAMAP55pl}gT6(D(jALALym+xq6|61ZF3BhKx2uVy2fx`qEIDU_{& zq=478sLibCSgE%SHEkXOPY{^r`F-phm}?gF;4CO_YZPi@)&I@pt;!*2O04hkH){!v z?zgqJr7e-t)i!q=+L17({z!o5-U`Qkk?A2?(3W$fx z&!TwZh8y}*)8;~Zdu2MeT_yMr9Ix_nrl1{_ADX3j8~^MaI#k&dm5}ilVAc0e|Uq{dz>8sXw zlakACfCFmo`1kwtv84W7LL-=<(*Tyvb5>e?OB_$(v9u-V@2WQ3AhutrIRAJFP491kNq-fmAaPG;gm4A(@}> z`=km66Di!#W7rj@qiX=8OHb}qP=GTChCcW{ma9?3OoozhcMJc`mHI_Xf3(yjR*ozwbwm<+n2m6=K|5a&#!6rood+jS3y(6U>QYx+Jc{9~uTD@~TXSqMkweRxGc z?VTGC$-l1n{#A*^2^I?Pj)B2W0SBz(kQzPBTIbL`un1xR_ZKus$fL)9ZcP3q|7~;! zjRL`$0&xu9nABn;qXGN1{C{XK8j!CT2WcM}>mBCKp-OqCu}#Czf2_0AGn7-+O0TKR zz)UM>D1YCr7)-%uVXp{HEldnerB?gii{TM6MN5}Km|4liP1(r4IyoD&`e$RnULP|- zqgnTh;~T7|N6L9ejD+QReu{*9OPo?fTieg^2r1lVO18QeC`jP`@jKt8^^s%D-(rf! zNK39^MJW1eH8m*BY6rfG2*NF?=&PkvBcjYt{U3akTeiCC4H_42c;}$UnAmg;EY?OD zwX+>qoaL|8@A%7JakZ0|eOfrS4~x~k`tA>`FnAN9=Ob7{*H9^pe~kGf zjGe7owP}Bq+6_pxym`qrEi>c$ge$KlZ7AB$Zut<7j6U{Gcqk)49waEi#};%cfya9r z>L32u*cb5&205xD-wMQnVhO(@doDIxh0iBzH`XwVT%;ymW+;Onv+FntTY z2;RM=@xQi!B$q*~?<91SiGL41E8J2`&9Hd?v;{Z4qmV>U{P3&P+*`N}SlnY)`Jlzm zrafdQV<0Q;u!WDO2M0c1AXxvx2~5KAbP(qCmV)N-(Z>7g^l_E)&s0?yI8{~Bn}a6Y zndjx~`gnBzChkp9==CUQGX{CTCG6kZbvL>OoIHQIJ=NjskP8C`f}P4>0Jukv(8nu+ z(Yq5cg;&05qvWEqy}Ju#GWTKJTdW{GtCK%(Dp~Jp(JfcbltOEgq;fcSyZMhyapg)t zw{Cpa(k>KqoAcHwfU=0u8;4*C6(xvk{}cr<&EfUVL#nv;S+Qs}Ds%ES*=G8X5ugOj zs3T7g2zZd~%uP@OmCPYc#ybverxWG`Qq0#siFuu?3?&1SmuVug$3);P`O&4>B5G%= zt>gP#=Q`Ext*x1ri0W4n#LA2vq?SXlMyifJq(EXzpTldIWGrdO@EVSvFWAV8*tNMO zIYhJtLtu1i#nCgtbsUfd561{RldM3~ow{W>l<;9UNV8CtB`V{l(G*SBDNKjLBmtyw zKk!qpcjhW`2S+}L&GRS6e0dR8VGz0A z>5raSJ1_$Jy?hYnhyM8Wqvg$#pOsEsus08W9tnQ0hM=>h%O~~W7Lp3lF$WlH!9O~VTdg4nIN5rh=UcU5 zy(FkUJf~Yu!M*6HLBa&DQ=4(HK)1aK_z4PuxIWNAP868a9FH>^M+%Lilf?cC!-FlK zP11~y%fEeWdzltjA!whz`o$4v7LghISz&kCwr@e~V(qK&Q>WHQ;39zWwP-4728c?S zNaiBO;8%`Q9W7S|5o5{q+XZDrW@ywUQZZ$<%@8AlY0B+y?hV42NOY+|pyf!UZXUd^ zd@aSUjFx>c`GC)NO_?FYMj{wE6B2mznW7)w2LxDZZX zg+F?QrW#+Mx}1;D?X=v-+@>JpRJ8;jXtNxAfaoKF%W2c(S~991lrQqy@sHF zI$c@OP+=9D(_r-fe&#D;%y`=!8FI{MIWZunw_lvz9;>mW68s3EFvN^d(JRZ9vIH!DV9!YonB%ly0?Qsxc+q)D=h}U`i4F zRfjopEIA#P)Ac6v2SJ-Dg!z>szp$H`HBp;saqw(~QragqCc^S;=>P$Pa_9g9;~Hyk z-s-`Ff+d%-w3oIL(QCy^2xoV$bO#V7#)Ci#3gA?lrvsPZHkQvGhJxazR{qam{{Yl3 zWwMtXIV`rm-)5WLja>~uCJK0pPiH!FygJ!I#?{ms%NmXQ6wzRU9@@kve42lPn>?@^ z!zbvW>)K4tKIU1nN^G1w`x`SgG%z-Wo(l?NL9Ci`g;nTi{6juZZ|J97chBR4x zmE}EiB|Y+{PgS8s;e*)HxWx_ zO)H}T49h5dM@VOyp#(xhM=lrse}w&Wj4f}}wT-rI+qUi9ws+gM-M!kjZJWDo+xBkl zwym#!&-`CCE0t6&q^jncV_ZX^zu;cyxj?5+XI8bgCq+Gu62jVoX9RxS zpe*1{*Kr?xnvd4bn3CK>%PNxJ0Fk*P|QO2H^F3>00ZFR8o|BdV3M@D?hVC|JAe-9!ED!C zk$ERv5){=rHBBE?utih%oB>bO1oSk?#51v6_#L=x`JJywQ{^4F+}K^W*|SnA?4g?N zBiUpE-I;tLUwtsuF7O1&c*&zpJSy?HsQ}Ve9pgCY7|A%{@af!KLt*}WF70=wNHM(+NTZQZ&! zQ;^e{q(Nxrr z{7#9>GeKziLu}6TX{bBbxjwMH`ACLHd4%o&WO@sW8*~~5imuc)uNP-|_sjnSEbFA* z4jk`k``%ub^6zDot(8Gx@6A7j>b6SD{5jL)SH{rsAC%hv*hzojYL1s+X#Zt{{}*Tp z$dYkB;DGbL{zAW)&W)%C+r4;Lu*;gcsOijoiZ{`soae}NBxuPQy{cm*n`kUvlWvYY zXj>-#gN_3v3`8g?ll?i(_3nDJ=y7wUNORneYq<8p+7zgHEyOcEa&lquGAjAc(C6*I zhd@79zBii0aQkLa&LhSFhK&11DrEoCLhd@Ynb90<-{dI4HcDjGas=GfZ z*2d7Li2R(u#0DZkd4L$CKN19hkPLMU?MDLN&~|g<=Hl7E$gTw#;1#=H2;jPoCyOJk z%)L{;v%T2%-A6bIWgqi(&x3{^5_@_I)~G;xYQ&8xpe2k6+#|OOD;=0DNaSSQKk%~8fvAA6*%u@+M8fN2V_Xk%*l`p7358=XbhNbGs!+cWW=;%W zdp2p}%Sn>IDqsF)>0b0%E*}0}t%E&J`z_6+SLQSOdF7p z-@W6_)mjDiXEGPP8+4!?uz~yE1e0!!Dvd2IPgj^O>eabQJ+B8qHnPyFP%kj zr5)Cp&k)(j@k2jY6VSIwxhxfg{ff&4r&Q)E_)W8JIZMl?QIpY#foF8DR8MBuaZAO8 zX{N)`o(4iYN}sQG4Oe65Yq?f`>DmY0L!teiTv?(@Te&prfo>WMsP3b2M6|eT)Z}Ld ziPQaSbC7)UJic1D_!0trC{&&+^x1!@&DEBY+#D#i@#@G@3vCokaoKRY$ANiFmwx1n ztsSg^n(3xP!+``%eX9mQ>fEJX0k%ri7NU9W4B4Q|l_&Un-=&jmUx|`CMay(=j-`a0 z%#g9mfS&@S5V1uF=y_`IwB{@1MC(k2;p}$W4wmSbN*@?$TGYYf+{614y!p3+iLb}V zQ(N(m>IT7k<|*5k!#n~%FtOo|^%y~GAZpV%mSg7_x~{@3k;ce{r#&+1K5QjdbQaD- zCJLEl+>4^$php3oz$bA(ly3eMW7Vu;Gj~6Xl;r7=uFr!7kmJV3TUZmNeVw7k75Uah z?T55XV+lP|NvYhyXB){=6P58%&%nfO!B&N* zBOsy$U$P(eH!;s|EElzMGu(IH{DS~K4IL8EHT zr)X%cm+)RwbytbQlYSa2eeh=Hr*H2t7PgX?vq-bagVyTdVt3i(FAZemS64q{6d|1i z$pG`z)0@5(y}%%X*i=jG{bY}ZeH7Lkr)psPlx(oQ1pvl7CZ+v9h9>qjM_>r*G`}BN zDhL~UT7m=`EucSAw;g%=`L{)e&4VgU1z7-gI`)5&k{P!o5w`;emVx7Q_!k_qUjirP z_S>sX4$m@oZ_seH-g&iW<*JoD16V+qCQ63}?05y+@mA!Kx=i0gYKv z{>WRkj=5~W&PTp*D5%K&qSh^y%WI59oKEUqs#9cb@l}*h)|fnNrW*>R&Yf+#od&|O zDNYN)d6-)HTi0QIf0;3oKJb_WC+*nIfb2a906uNM0Rw+>JmB@{ zp-Tg3@`Zl~eJ;H3^QLA+6nwjJEsNf5O%ly-d^7pH-q!zcksVF zUKaP?TUiKycG3Z~!P9{8L+6#ii0qRm-F4P*yNzD9iv|sJ+F6@jMqIoNYG=jYmnFU)5rl=ERs}uc z)wEz8m+$10q*r^Ou%QnA1U2}*EiH;a7hfhmR$tpbIGd;oG*~GBNQA<%uY2e@ggU`( zzn5DaKP-eg{T`Sw&eh(X5cgi!%hl^|M_<<$0@Ajg_IFunjTe6Ym-|aVngU_%NvF^E z72~QPz~_7Wvd)ml7au)hVoZKd!{K=KTCf21Cc(S;_w)HN>w|)yltz-Cort@kO&|qk zSBw|#BggP2nj`VgO%DyT61KM6V|LiP_Dkh4@9Zmymi@O??UGJKyRvi1vGlYz$Mt%b z`F(CyujN;1XYEx-$N3qcw(5UZwN>7;+uj5__ct7ao6$A!&<7OZue`u>}}R0%lE zRBhV`*tvspn<>RVIbAQ_#Fzo4a1CK7{pJ4Pzu#IY_vvN0Szi#~Ur$*fH{&=&sthLpZ(COtkD6xWYZ5}~?? zBQw}mn8$&RZmw<9lO^3;3Q`>$jpO>X5AMjw4s#aL^@{GoBGa(Y1wAv@?4z}^0UOpU z*x-kRkfy<)E6fVOUUp-Pk&a4C%@F6Q93p_z3BBMn55^;NIw;N1W#T@<;0-^CEn)#X zmT=@NdN!gjsNC!~5R3Yg)SvBc7zY94+6-s)2u0E~!V;N}2;vL|DnI{kN~RADCEarX zd9nVz26;v~Ab??-8@-`;5_HlKsyy63ejq3-B@g#kWqGaYLH7V zvogZ!-(Wtz!OHm?({vnvI+Yx=z|z)i7=JqdmaI7-z0B=& zI0kR}law=thO54oMNXcbBNsajhd1(q?wPnu{VJ;!mcmvxQc3_sxElA4E7rWaN#bz+ z8lkj6prQ;A#BHB#2=A|RXn+KKu$SB-`*g7!UA)~T+cJ{sxsMI>w4#nBrU^@u*nhHwU~ zyh=O}FoLMH&t=E({YCe{Sl7)F7aVo=>L3B=U9@-IUWP=G#os@Yy!ca|t$Gc`o+=I! zL3eVSG>hdNidbs{T69~UVrruYo*peaAGPr$km#NUIQ~{bEhB72f%@<}w!zdcxqi1g zMQBlgipff(Y_G#%F~ojy%H(}xCF0hib(nTBi$9k$Bp?tvPnR=+G!PMn^L}NUBhS2; z>kwKYt{Q9?*~|=XJ2HU)f*MQ(X#P8|F*}@U*9NuHb>%>HFdP%G z!AOWBl>_?99xBqCe;gSX*up0bt@IO6yqWZ*bRtcrU^%8q7uW%<+@{fD*!{K#*oFzV zeSYopk{DCHAY*|8y>~jXtv(~*tbuoIEZ0J8DeqEVaAT|sPMIZy^HgdJ^ zHA6zXvVV`evr+kWKB!r6F!XOCWyZOa(YD7Vy_3*11g)13;V|JQ8Eh{NyHN!AqegwY zhh2RGXO)=-{hy~duC#qV6f{s~cGk3lc~m;U|79fFIrUVaQLE_UNU72JTS5crO`9N$ ztI|&=?6LZOz33GPHUF9GZJ|y83K6!gOsP=h^$RN$SVl23!LG!ptNK{5|Wra>p@hR>23GQ9km=NQHpewKa6axJ5N5*FVLp;=*|2mnp-);aD$wQV*V-2FONQ3z;|9Ca)Ke+^y6m( zHmgXW?xtR3x=#zt1o{E7Oxl7IR6PYJko4aP0u}#(`4C{rA!G*JZ86JQ4FC@!Wcgc_ zY4!%+v2+HDz8Wp(n1wJ3s?$# z7QDxAK^BhB5}^nmfNpQ46KbMfVZOVJ<~wqGP4-$steCgV3~hMOrO_lc2_DQW6T+6d zx=u4lv5V($OqJ0*e+AQ}hYMrI!>E~FK1mU_8ODd2Mof{)e4yIdxUA39L{}Mp57TKlnkr7P=Rk%RkG;99V)e{r)su+~e#k6}nv!+V#Q(c3_6DT;Nh&GIDpHrM$ z#w@14%f2`bbfA=64K5zVnZx%74zC8x%mxO}6%`GImvfjj$$&`pyI~#0BG`42QKMJ8 z2C8YT>tag~K$cIXbjqPd-}P+XWRMY<#|zkjYtRCxVdvFXgdxYooT@t7!b^SuVx_q-(PT$Aa>+?7LC!V_a@ z0S%c`tXH|t0EwP4P-E|f z&zysK&;ZC|me|U3N7Y3~)#-}PB1(8u&Z;fxgV2D8JkV>(iV7w<)3v+U;uW!kYK+L} za*`|Z3OObc%t9RUZYFR(9;K+^w+lphwp|^7N$sZY)-*T0gQfC}r(UwkweD2dYuGUL z?5|V1$-jYlG&x_2u{Au&gQ(`v5(z^lM+JBl!rDr%RFtS@730VkrwB(&w20m~(V(Ii zxyydH+cC^w-8g>kAd^E4XG?xJbh=Io?;g27k5>6& zKH+Z*Rl?oVkc+{ig-y56rVLybzdfyBbBJ@~mQinIu`nBAbhB!;i=Q4W#olsHNlzGB zdzA_3NS&MOm^@3jwK{nI=GM_JZp0)scE6`p&}~K zh-yw0?Vz5kSXZdc7&fdR-;yGoi)A>(^joNzE5KvNI{;L1O)nTjPSy% z0_#t-u_wgrcq|y!p$EJeAn2fi)Y|WJJ{|fb3QTb=4`tX%2^=A*@cLVau{rC^E5NRW`?o&*2@`NO`G=E|69_SG|CD)4hrNoP!yYjL7hgh;q8*#;>~37 z1r|AWX=Q)63W}q@FA(JD87P!$&h%~cEgQ_EbH%<|?#)Zmj&$iz@d4{rQZY>2#hID$ z?V`{<8NE&e{8ciEnOV?@r5sxT2y1|G^^Q=Zi9-Yc5>XnPA;zTA4?Not0bW^dW&IJE z95;3;e82S!YOhM32cY(1DO*ueyTt^V|7aEqQ+x4w3)AN1&o;Pc-B!~UOl?Wx+Qf>- z1c!zv9V>(ZAv|!{J$0RL5WX804Mx7r7p z;kksyP&aZ@@efTITK~Ih6u_km_f!d%l0NOT4yUg><3fj*G2tJ59&Fc>onG3w4_n#Z zcm=BE8ov!G+o|~s-2LvqF9WD)TZT^_LgDQ2e7ZQkdF%admkYDMy1F9#ac&5F-!KV& zKMrp9{%DqW03Wwc2U&rAiaP{fK0hqHPEJ?9Hf|rl`xkL{L4l?tsVFJy)c7(>cKqJD zEdF4R)c=|_7XR0*adUc)nCEc$pIPI_tHJF1`3V2D2>_B!;`6!FYHAAj0fQJtkTs22 zvL#ybvbjcI(A5b67Xqn`8>Dg{6Blgx8rDttWR2bdr$OS!g--UV@bh=QI^3^QlxD=CIPgN*~_aJKhc}hViTt8Usnn_g{%lPZ*_&ROP>A3`A z5tc@Hz1!OXZo9C5bdPy@^Y(NS_VAP@>+^c0{~tfz0rH0*pV!r#y^-yZclFbn19*FB z<90tUpGFa{d%C~5;|?gN1r5J6%Xq3aOBn_VBDG3XL0?*)MtGAIFRB z!GdT>sJuY)S5v4N{4`FcwgtehfZM`Y7#DU!V{RmnLr;-GWXg`YbNB+IN&82^gxB1V z9|LYn_kZnz@!v}|&DaH=beZ1N#6z6IH3Um%|9?uv%sD4B=BN&yv*Xk-^D4^5j$P6- zQZB4C04RR!{C7J2Z=?ZMq!?>VnRK80C>S~mk4A}B-@g1`6FUS(;6+SAqf1nr)gq|l zAqu}KsRB5`f+Ds06Vc%k$+fOo`)za$U<-hQ^c6Qb9MaK<=1@r^bLZo2by^d&?Bw@o z+DQgc&f3mWNt($9Yqts1MIzGT;hOdsk(=Y%0ZAz#b!%}-Axay_VX2y0f*}V^F7uII zxv>V(O~0+*{ZIF5uTAL<+6p!49%Y$u>#Xb%e7}FjzZ!UrNm*;$fth%wxNk?HJMoPq zbp=GfNQYMKMsZRZrIVN0w(Aqm)=Sr2)EK!NEq`>ZPGptm)f-Ra2>~TWj_9g^@BS6x zfRD@Yl2^S^dluPkB-pOv=D>nLlENFi(1vI~;C19_#zyw+LwVF@SFt+$J2*=mwSOQZ ztt#WIk17TP2|g*bx1mBl`$Q`YLRjMoiUyY^=&H&VZOXqu4A36*hAe<_0#7bBybX)- z;cg|EQ+cInL99PtWrJcwA2-<1S(+#20Y9qt()5{@A8SYB1KlGm8=OKx3*V*+E@m(3 zyF9`~M|5g5kFjF_M~lgERgy=3W&*N7+km~^79aRAiOl9C6+jwO2&_S4R9?M8gOAFj zc~VEF#n{oGG4e*ms#_0TZ$46T6&*^BC0dU_?lb5yi}Z2 ztrnuJxro-eui$q)e$vC`2ph`k+4?M{k+Y4Is`BxG>`?7U6>$irR3%nHJRdk z)ibzV5~B@h)=TVu#-DW__L!e&TTQy+b@z*>{pp2LDy_hVt3ylB;+^MHWelpF;(VZO z$Vdf&zRkXchV(Z(4KwZhr6xf@VnmM+ICRv8ysvP6#K@i$8>THBh?EP&`x-fiANp`q zUQc9%306H450bp37xsGf_?}{>)!hb$?(-i7a-}+XKhppxI?_ zih2lsWsOi7v5%u1x+XSiqi`qNYTZbpF!#iqj$|QJ+leF#hKC)jPsYB7)X)8I0Xq<}avlKk z(}`4ZDy=k5Lt;o>PBIvPzn3r-dJ(D!33DfmO~#vqs_usI4HbC=WcQR>+Mr^I#WR^3 z*lhS-4WnB~?Z`x!C$du7YPMxU-g{nIG3LAjonEc$d)JcIiyhvIUl6Dv$+F&$hE)X4 z&S{P>P~ZbTE+C!4Z5niy3jK`>#F8J;3uhF3kxY6Q+XIsc6zng+3uQV)9ToGM;vFWe zyXryi)H$Zpu{_k5ZW-8 zmua1n7%UZLraWiJY2Rnh6vJBk9=PdMDzoYYGEmE|i${k9{`JQ;U^41>x-b$0;D{5n zjxNNpn*f)w=67?!*wN4Pru|j7Wa)(?$;Zn*ehwQW#PPdT{gtts0PpcQN<;#{Bmjaw3)Pku$;{JT)wgL^) z=QAljKM)h~w%ob^9)x@HI_$5^d26aHB?Yjj0Lob9KTM3_@Lr9!7j7J>1qs5OT@Hha(6wkzD9_gk0B&6_LI3hsttV9jRP;2wn#HFj2W(tsvA znsYz2EY7ZO?fHQW{l(wvBF@qsRQ-}@x*WQiNmRVV$q||Bamm^536QpfON~WUR1VQL zh;}3RY?tFy2&vyQML;sW*pzk8N|H~ZK~aYXg9c71U4Sf~?kN7*tL)VvX;5(9WtXlF zLA3(G1Rt}=<>AN!6BbWs?gREf&jt66#!EIrScqsA70un03bEYMjmXivNYKrHtoPF) za^iS&7ziTZ(zx>S90HAg{sP*09u7}KXoA?)vGr9=Q+F-zkh;7U2#W?X3r70LE#s0@dZnG-*b|*eC9_~_ zYZDRT#az(?57J|n5zj=lAw}&-EhZ@t7$_fuYCs0Zcl<9aU-=YOF?MV^y#DIiv*i39 z(SlaSF;oMJDUrp`*{5P0-Kb#lgKyr{;4M-LvH}=ryC>X&ixPDlcOye3s(j-a;Ur$N|M28TlFWPbic`JDQd$Kx0-2JyzAv9{ zjcWQ6fYa@n)5k>>U)B~^Aj3n(yFnKW--QHc(SI`3Zix06qPuSXma`k-^(p*5Kp#M` zVv;kJF=rd-YBzV#oD4YT`>KR{cx{6~H4N8>P4z-Zbzv{B7q z+^J%?6Odu{H@0beK(1|o#iSC=uPJ9hzwhge?i`!o$;f_QnIQdsMcmU$z_^CrA64|v z`pVW%2rEK$0Y1O5>c5$${=*K=uQC9);F8O_o0Gl@a61v2Rw#{1Ps3^du!VY8Lk3I| zhECt{g915E0yPqNRu;tAxta6*4JT(26>QihYkONx^(vL&ma_@sAEm}N1l8>CmKuQ8K;POGfUn_jf2t*6RS>ri20+ zT?@J1sfgg_NI2vrw z2TrVxz3tF@PM!j;`Fq1-mljnUJLv9R*He~{qSNW`Mvm?GTfNz6@G}AN@T;tiwEUxH zr$L@8$6tt`TF&bK zr_twP`+uV*;nRFzk?8>2QF!ghfZbk^I4J@)Wwi=v5N8MX5h)^I=civN2atL8&=jL~ zH;_7C?;p~e%LlO8=J;mf^>oYI%FA^!j}s?rjzOr5NXr71Xzes3jdIU;^rSzn-)R2o3Rfbas`%gEHGoGZyI*{J12 z&ps;26Im*9%f}BnQ7r4?1Nw!|vnwcYHnIzcTGCar)4{NK^O+IzCfioW@*2t1a}>1y z3M4dA5TH_PC$iv}02L$6Vv|B=%_7M!5G_zjg3civMPN{Zf#r6Figp(7P(>(#2K1L^ zb{IJ@LL3WBORNBtZ`5m4S7R&|c$C7)OPDKi`<8bR8H=ZVbZDh&cpBA{o{qY>v0$Z)% zupvzUiNb(C3M3dQz5lqFnA>Ks?X;J4v_=hbS@X%LwvPaAvWu^FDla~*v4EoX#9nrKj8r?$4+kOs_J@9%5`{6Vq3H| zQ(HU9BDQ#%#SQf0c4~OOO4pl1SW8tK7H3Ez34txpa9>Rb?ua8-lt8KNdIyFl$i=8_QIMzkcsPPu00&3|F0*% z`@`|+{UgAaZ`Mz*zr79U;_iBRI2ip=!2ihMJN|<;e3flJ*TInd^7Q?g*3X7r>o5PO zfZu<*9DRrsYkXJOhig47#hwY9%;j~Be&gT=cqSq+F6_rWGhQ$5TfS|FDG2)YExA9t zV>>r~2>cJLVaC5C=0bj=#3V$wFNJkbqg`3uvTP3Nrun|0Arlr&!O9bYViH{gDt+qA zk}mPoM}x?x&j18=iV`z@o|=g_SI~sJ$Sj;1G04h*ww4{b245J9>=_M-@)Zo>*bv;`Uvav2y zv{FGMf~X-Dvukms+ohzjWc+7&1~InU8qTzhtLP4!Q41I7k}LOG7>s+t@LI95-|`78~}Oj$Om`9x5-3;6)EhT zhOH?Bzp=@PnEDEQhJ-C%U{8z}XBIj~y?~h!V~CSeF%ncx zq9H7?tI${2(D71|^~T9%DF&c=82%u7fvARP}`s3Mk1;ho{uC<94G=70tJJNMnWa( z;BdS*)t?c>3TciogO_beDI%&d31y9KNKaaA+Ke9aft|s~rsoQ4iSF5j)-2KmBb*_X^d-i_xh;xf{mv*bXOukwQT3R)?Re_H|dQU3~6IfnEfY(|qgGiMw zuQUuQ1N7;5bZ+`Ijc)8zWacCO6^l7TFtb)&^*=QYWC|6JN3G{-vS+8xpwVyFBQ=>c zlUVjB)0m`LRvbqkpHkeD@?4v8r9&T1zC-6sgC3?m%fOcivR_Yg)Tw2(!4Jv9>vvgl zk5MRWPc|;ner8{vYwITRU-M{mUu5W6bT>Fm*cGFN61$E ziywb)rB|tBaWRQfK8l4n0wqOb5HU_x@~}F%kl-zsd1_+c5Kr~Gl!ZROiDN6scvY&Q z11!p_ebXhOndZJRgEU4n2(5E=*JV)S4n2{=nMeyhK9b{MPA3N|5x^dIRX`8mdNtrj6CKZKfQhrgzNtLYOwP)^HhR8@3EMbbf~2>YUFW$k zyKs$Z6lc=Q{R!|GC4G~kzf$ce&4Z&$0l+>OQ}*k$<=Ln={#$D@IX~PbugxXjpE42x zRgLsR0T;c!+`r=Ka5G}*%JM1Av|D$F#jF^a{Y|AxO7H$}2=Q2QScHAIxs|q*A|N#) zRw$ofH}RV!e)5Q-%}s0wp3To~DJ~~Z#F^OrZn5CAO)`4!9X*r#zLg)5tw-KB7f@hy z`vkqF_yFJTwF-utT%?Eg6MQ7engH)p^8t1Li^D=vwR^JArrxlEiqm^O$$-J6$D(O} zGOzzObIaBu!fsA|HmHynM{rm1=RPi$XH;`(@ll-Umt%MKde8CpV{hQU^z2;PO2;^| zz2*Pi!tV$>wP~fD+~&R=&GBro3iwyLk#5>veyF5^FPZjryMp9asdK9u`@H@I{|XGL zHmUK4@t{p-;|X8<_~%o;faixkRu*%hUGMz|fum8^ZeODmlgC@Z-{+9f?%oRlS43MO zaS*aU6SH3jq%zz22;+`GhaanYcF>UB+9ATr3#bc|7XMiFT?h11`7QmfmH$#HVg4{z z$(Ka1i4;4d*;HnFTBPNt;+QB^i zMLK{FzW`cL{R+d@Y5k4)Z9Z}HUo(#m{3ChKfk8{d@y4PBTB7E0z3#v{5DENF)USBmVG$J1eVt-a0zO zxnB7D`Vot+uf!SkSqZRA$Wr>Ze+h9*BrgbI$E2I}Z~NZZeVhkJI=+8NYK6Co42$ zC_^j6kB4;zd zH?6?Vl8=;%$@q*-x9tz2QXIA-n2Hm_s@rxM^0d|$K%mWj^1v+2tfnuhlv(fXpNL1@ zn1piyvkJb%3#8#FCgE;$%4y2w+?~D8P{bgHa?Zp8)WJm6PRt4H3(QQ7c{ech-7Ms) zqyu71C3w~37gg8P{WF_Pm^xlEWvSyM?b>7oj5i+b5fq})2fjF0VV)q!>-Hq?_bMPX zP0M#XJAQg2u-@o^?U0Nj$lFIUVh>YEV2{Aik`#6JOx`%M9g;_2x8cA zgpgq+SDlnP?J=&@5E?5I-on{;;dnU!eoBe^O&xC*IqYma2r2@~3}}vtJNz{iPK3Rf zCWSH{?GQhC+7vmud7R{6_Y(tH^l0a!H+DuvSTd$Lz6^<_^~BqS9~S|nwUsuU-PN5qyNu7iwgf#|9DoK6!Fy`_?u1Bc;`ND?8MmNs>@?iAG>)-ez zda?K;TU$@1(r18bM2`-R;t3Zo5I8u1=6-5D48l)7KK|@DKwlT^;|=dXT`pQ%c&YD8 zi6w~3vU*)n7mJXXX0EjhsP7-Bj zOut=7HC+75$`trZ*%qRx4!js%(qOm+s=9*&@R-K0vQ}1OUB+PM@@v#WzRCWof8J0vg z%W$%yxnoo4VSjJCq?9$2I@*T^wq+Wo^nPil5hz0T_acCN9k(fFu z4dg1M0ynU*MxClIlq|?*q0GJ9>Me zB{9Li!w^t>gfF*3+07sS9eg@Fj*-`p6>1DR25z6y#B zrxWy>_*b$UEd~o#@LW;H=Nhog>}Qi2Bk8{Z<%JRh+{FOr zZqFMk`@ZnPqPrPI7(=M^#wQ7o*3B@bwg}b^6vlz+s)=m;>`a>Ci~v;xD}shI{?bCJ z*@wz0dR}m{sr!0Bq(T!0Wtoa-NJqK}!e4biGf6Ro+Vh}c=&FfP2T7jvv1 z%h^X6%6b^iUc&LOm6I+h*aJ<}D*2gnR>Ksj`sU)$94Dm`Kc&iOHtiUs@T=m#o1->a zd_%Q=+EL)JXJ%fz?OLfCkDsS{sT$?b)QVjxVaNMs+GNB5v+=y@Ylpb0Rvo1AHW5O1 zh3b)u8E^y`bk1%Y#A&|0kpm-iM%F@~N@LkDB%W|22M`I|5D7NbiWb6*8Xc;3TS*{6 zX&7hxwK7#Jon(WdwOefMmIG2`^l6H+c_@+CKZZJ5aJ(}OS)A6KuTwcXhQbE%h}F%XE=t_NrD5& zk%Hq$$97P^VF}R2jWAlPf3oMHhvGTk$ixF5EIks+mV&z=Ge+I@uB>X2sH30zodbbp zrhr5@_gGddb~*8gi$7EaflX>tLE60_cJ%tHW{1nHK=g9sOUt4=|MFeIK)TPKF8(c_ zN8XDEM1iby7^T4aF%eJC+U(-Lmb-Ztoe7Y(WfrsYj$N@jVxi?u?90xqUdPLk)?lYnGZt zrBsgAe|SjlqHSIrKlL(;qJAoNY1yDy{I;=ITHP#CzBNj%=-3WM)khs?n0h+>^HHxm zGx+BuSJc3PZ25GH_5E}V)!+86(EhptK&j;P2a#CPVm^)|0|ag*a|C3DnM6z-y)?1| z0HURI)b&5}ivP{kL1bd*hGCR7wKI3IAYx(VN=ujmq5U8E3ZUIVgU}?w-=ObLKA8{* z)E@*XFnkkFWGH4gP+y>#-dS3C_ZFWUEA;44|C*Xp(`RoLI`wW6?@=Tv@)+Vw$@Q4b zwklkDYEG;TW!r6d8TCqBeperV=7oPRfThIn;H^SY8z<1HTgf{KH7V69!77kacz{Mt zLpKy`FBmf0L+k#VLZ=>J|bwau~-#`sd^B3krRK_gs1F4D@XSBu|=-5i0m?n z+TZ10GuQG$&V9UU#`f=DD(Ls#5^^nx?^bO;QzK7}N&rVT?3QZS50X`xmILJ_IT6P> zgQA2YW}8f>MyxcVO6~;c?^1Ohq@-2Q5 zo1Y734?%C}xF^hC!Nm8L=^`Rza;lUPQ-ABBL`2`$!!%$;A1_3o30s;lPa^A?DF;@; z;4@hFt3U+u_;R>e<#KyiG|qftn~d;JPWD>2k^y+DfXU714o+-=EDmw$3TM8;yx_?p zS3ty+y)KhJS@^6aC}x6lPb_74&L9-3EX#~zuqAnjxm_+_J9qcXHNbB1bhESb9g(w) zQ1I))(C_PfvlFnJ-SY#-zrXBE1Gg;h;`w}iNLzenwEU5{d^)@z|MD6iSpS`snhP)3 z0El!R7ExkY_b}LMJsnSSd1KD`f%yFu$jL1g?D~FL^xpb-`eJZS)%i~Ec|C^s*7cXG z!6tU9Z%Cyz@F%QM2+y0>s9cOn3=%6dhZI*$309XddC7k#Zi& z73y&jcT`4|U-gdA!sp_uv3&f(8h0@ziq zf9om6UP-%925o@~cZN?fkOk9sw(W+175j$Hbalk{S%spZse*?18|fSB$8+%OK*pB1 z&Brt1(u0+WVm5ec2&*1jPj4O!0L)r>@+fP5G>2dMbm&020R>S?eRaBsbEIvB8~nz( zfxp|$XdwyOY5328i_{CO^tuUD$#{9!m3nH8Vk$r`MYaoT~o&bqu#c*Ilc2bM>yHcBIKu{0UiMg`2r_1 z!4@kUwHkEYm)AZ>!paG-ABbpyJV1A$HPhL4VIGZd2MDyi~mR%MB?E;p|FrG z_!~!?+HFolheS;I)(ntcYpT}RmM*SFAv1m7b>W~PP$tnWldP+p8gjh_eTt}dq^o?I zs3Y3zC>|A2;<;PyNyw3H0B+X4MUs9kp*LRmGqHOU#}NdAmY2@M$HPS#$wwo4;Df`LRfLn^ps zN~r5dwMq(#aYIwk8y=yhbrd2ZESuOmvXZI?zPXI$-|2+gJxcj zGW|8(`TjD=SVw?0KE84DnJ|lJ^UFK|FeK?y6uSQXF%}8FjmvLTOj7tU96uX}CP_+m zD-nID6n}QaOgbs_7w~%7Xa4L?cr40~`WRn$k3XC5-8|;@&H99@Q9XI-e*aQwlUKZl znt0C9_%hZLm;Jo_>3*N_#}|bAF^%8@bu2r#w-a!GKrcd@lPl<(D$i&K_>9;43+ZQ>uF@B_EPQX{eHQczI-jrVf?y$I%%!z)$aUepO&mG2Z@KNAT{Yc zzdEVg-DkFRS-yX1$Jz<%e+5S}ck}x;Zne^&r-Q8uV|SC8usbzW(!f*CxBS1h<-YO& zCD0-WarkH)EOsUAdkOl*5%t7AJ8Ol(bT+qP}nJo)}_o%NrK(-(VH@6~;^dv{lLRXs1U zUyyBhkeI{o?eOTP#9lTZeA${IwjsL?3#+MS%_-u%ZYDq?F<82VmVL+vA=0B6{aTh1 z*mMPAhZeOKr%EcS{G-eWigU!Qv1LQ?6Z+~+fPPm*JXGL(Uw?OS##C=B4c>L=C^YBU zKg!}lOttzt!&z^ICvBVH2czLG&*{#5iJMipX$Xk#L|5@a=_0?ra<&VPSKf|*+Ouhb z`uO9|N!tMVuz8Qkl|j-lOzXEq7ML?Y%vvF)?HZ1~-t3d-kC=5T5xO_aFYqA4b(ttX zVHD#ODvl4*#i{*yvoyS7{F7R?J<$fSn=dTqjU#H>xk7#pKek8XyF&haTq0IR*w@~h z6kTW=L`y6&~2Uz7lXpU^#=%)I(!VeiMNjN+ua3f2Ji|Ihr*@|u-Y08g-#bjJqV!x-r<`|W?TIPmtxQU_CJnR@;^;TtmF*t zud0wV$**n^4ByMQ@Cn3H;nqi!Qiq`f23bPSA`%1 zOl1o;xn_IYz2`ZWkXmTAfJbMf$M+&_;)rrXxF~+I@z@3^$KL59w2b>t0;XkTN&&{? z?s4M>CTy19FGQFA7H)D)DbaaXE+2WVuOvVU+Ymo$Q_w$ z7Aj?MAJSicEGIi=kIh%_xz|bw149T!4phH_d2^3ho>t-`w2Mv&2uG`_#r%0hw0Ofp zOs}k*nD$Ojavk-LFzT`h{X)05{9JQTfwJ{Cg;0Mb>jLAybmXDI7T@8cA=!sz9*F>` z3`7c&cK`|uq6TI#L4&4B;BeI3ULb0}`EJmBjYAs^UC$B}2vV#td8Vx6<$`?2lKO5w zL{7K*r5U zY;1Ung%Zc8Ba3b*_Ivej2slyNpS@S2>eO1?2Pf*Y*8@{IqHftB$iD(}@{Xmi%18-R2CSEXyK z5q5tPmFXQ@ZWoO?p4fnJ@*NN+Nf{}GV~u6lGk~KTEV8>;==cfJPqBTMT=4paW`sh; z7-gr|d$jV{8$YfzT#XsDu6IT!SJ(z=7w`HYlF_MX7hDdTgJ07|=+>jn)2w9?%K52; z%JUbDpk(ozKbrpQaaVz$Wvo+e$Ws`UV6e2j6+iut9Fke$e#obc5;DM4N{~zWpfBC7 zk};}|QBWA_pIp6b?7RO4#_+dSi%TJd44;cdc2{pVh8zy?MD{;S1O z)Mb8Xv`pMhEvhZivd6 zwKAnBwv+{_yxNnYS{6&T2VsjIzCk3G~viW-KnPU*J!i# zv_{)4%pf3))UCEWA2)a$`0ZK8352}tP< zFU}$eG{1t$;0fCcD|A#0KN()aw4%Z#mI1DJ*pn|P!9Bq@ zd9ybO>b9@>YsCEaTJR(GKCGc7PgjA(-%TKglsnNgTqr?-;F@2}lZ1&{gXtGf{YJh2 zdX(K-M}HsRSs>{S_3deKLT%)nCgjkbPSuMnngv(Lz36}2mE?ra3+auNRiuM!P;X=h zN(e*oZ>JuTuYLc19p0+md0W)rCuS)C_T3RW2z zPipCggJ1cjz9oHcA~J^SA-x=X2gxu{;$>vgtHs+<)Bkx}xX)o_a(2kmuCDc5Sf!sb zgE6IyHiY^O3tbiE`u@oV50Lz8?PMe?@ROz{8dzazzOkGXdL3@e}t(+}~f) z7W9eA*UP^WgK)zD_)RTOrp_lF|w(kv^ypbHzy^Dxn2lM?Kk0>Z)`TJE z$u&hF6wzi;Ky{?>uA$<|$?kMORdmYbG?hpf9fREVA-U`G)wgFL@-3=B!x~VnS>lnx z>z@Q@v1YPO@}@jgqy}>COVee9PgN-X+W-6|3oNYMKuNP({scc!W$g%hm^)D)iof|`%R@1+i!&tw6VTF&gnT?UVNS9*sd9}?;!bF(Q{9sH-Pk760rlzvT>jF>>+bXkO#@`kvFQ8>veYs8QonJkxroi{p^jB|(}y>2RM7S&hy+Vk+Yj=#%>(5T0iL$wLw z#(**wF3jI=x)MWZ2g02G4O8IV5Q$n%Q~*gdO)odcWafIh?)%|pQI|rZwU;8IrPzbH zH$-X+32q^8tW_N*wzXT-2%P)^k`Ou1E0e`!|EV}QjWmP;q)3Dhx{!3=D09%4V4EKq#2(XO(8^aYuTfHw@k3gec%qIA33P+4u0dr671_LV(<{T(^z@OrNeM(W5+uZSJtwtvN?jZ28u0Y3K?MTFbB&o+iME;e zWLZUO%)Jp(=^JrjB_~|xrcdrqcxD3+;95#HGDjzzL3OyE2RLh@iAYJ7|8UlfD7#n( zcyEqzd`wcc-QxLB-l9YoS&?BBOvn6GWu-j2+w)*uy*SYTCViY#c*MP%B+n^c|LPG8 z5qn=|ro+sf@3i%OWgdBk+)Io`KEWbe6^%1!yRBC)?c?yxw9HufeIgoB2ebWh#2evp zBN>lkD#dE;p(tgZJ22aWF{t~$*wA6YD621!NRf)XNFzV^v9a-uA$N7I&3ChTcP~nP zcDyHkM1K4N-rOEyd3(*x!ijvc*43o?nVgj~QTNt3u>|s_Et|DGWte_13BsU7ZT70a zi_@UVuL>mPzjW(&ZlRb{&s?KUlZ#{jJB5_3rSsw1iZzc9-qst4q_mxU-xw59S&czl zQ-YJnVUv>$(aUDutca7)I)N7Gcx2DcCz?IB1wJJJ{~c6f=DAJpkNsp0{`oqMx!IJG8Ga7-%ccu=7Z?YRCBuw(ek4 zvk}O^D8_o6*jVkGGF=*T>GntDj=>;#6c)$ks^mp4SiHx(VVE`w{osb3}gn&FgzZNu#o~ z1qn5h^^*6JQHdueO3q3NdGgWxTmyU92}V;uK4mGhVpN!=jIvSU_P1nJDa!v`t;6|} zud3{$Vo`9CZ?5!9JOiJV%iLjVFMC)B9aC1BRdHHW?90I6<#Kbl+S?lLP7tA_`CDw9 z8y_b1Ww02J#8QiV50OL4z~|<2+IFiwmU9)+>szm^y5HA`oqjGYw^?F5=O1u5;p?Fac)zUPECo8Ww7)~{C8ZYG^DYkca#fSYzU)=*O0;N z>sIZ^>=bh^feHb*@xow3V*|N`Y_iVw@P$?|XKq+XH-Z#V5<&fR0 z;t|naZ5E?5H;7bOL`WTFW4uyk(s)T5s9t6T-1DZ|Z42c0S-8Lm+iKp(-Qkf0qNC>m zkK11`f2gOPMD3pc7N4DWp0=CiZ=tF^Ft!;B6A(cTjyRrVB=)i1{fA!WEy3k2gengq98 zhcW4I5oRk$cTtu*Kg^z_@u|?a&rv2f`^IAEtMwgMko^=(VmpH{fmm=D*^d6vasp)p z@`{FWO<%0ZqLu(lzb^F-XuAqXFs*qx=y`w4F-`brq1pxiumf#)Lcar8OTVYKIp+ni zl5n?NiT+stlxs9g_kY5EupjKnalJ@i*hH3OgXu5L*)(a}U3QfJViTcgf`9B?DQ1Us zC^=0_yCUAjLYNb-l!1O<9#}DT1-vEV=|gJDMOAmK(R2)@bAtEA?4HI$Rd=+hu3xtf zuk~&9@KBAb%)h|%f=1+|aNpYIbR(|+a$li7?Ncx1vJBQnTU5;M49Ib1yCs zCD)$4%vw~8X{>d(L*5qLJQw_UTXfTEDBIji@_e;kD_Bna8S6HYlWwdU89rFm7}Jb;VNhr?yQU9#tk+yxGoTdk`fcuDi?O#7V+ zYR<)K!l;9o_P16IoVvr$zlm9&`<@5aPAqx^90_M4*4-4k4N4+TJyAuE(!W-*l1=EpgJ;==URS7#$zGA2Agc!F-#`G`GX72-(YkvDn79U2Iw5eSGg4WjJKROUaJ6RNLh!+p zZ}hS<6?cgUzm)yR$Fu0J3v`lOO39J_SwuLKg_nOyIOF;AlH@&(q#etoeWARu5J{_a z*-%=CDBtGycl8G)X##1fF2*#Qp5p7Pp231R7J4QLi{3=B4dBb)dx-7@-M9-W?z|_=% z^^t11E#D(VKqi7wt7&>AuS%u^-uh9YNoJp5o44?kEq$;}U6caBvl*(7U8Gd+K>E{8 z2s=MFdp?wf3jArnVMiOlMutqne{mQMvvMgyOz#r4SXo5p5r>?T`F_zH6hz=BwdM58 zEV%#nVj1Y;HjAi=QlR!#5AV+!?V*0GxAw@^-9h=(X5}wyIog85<}jtxY5Ieaa3)MB z-b*iHO@p3g^I;lB4#XWZNZfxhDXoRlKMTG$yP#i9H8OJecK{clfYwru1T{x4M*ZrD zWN}AMGVYvufrJ(bVvTW&4UL3^nQ~lb#Qf(rBB@>hCjJE-`aLXwzxAj#;-jzIg%MhB z8mse|Jiuata4A_Pi|_1;JRnKG3}jNrax;Z5JGq;K$Rq`RcL*d~Pwl}jZG^oKe1ZVX z$0#IR4J^sM+$4!HZ`^hmAC6^gw%kXw`DIoC%P3Y2iUEM(k}89x70|{QVCoAQX{4JQ zd=Mz9+d%y9OO%EEe}n4(NDq)8(j;#UKtLqNc%#EW?}@1?B`Q-Sk4s?S0#c3693+vR z@g3_`ZvSl6q>D~lOWC***F@mB68*n~L%1;L(Wm;5ctq2NLexuRAnEaG?pJ(T>W?=H@jg0yYvGlJDx!cLU8Eo`*V8z;R9&n z72n@ax(&E@$DG@2INVok+w3?!H|=A|B?u)ecm~zibPqvhoPgXck9KcX`9Plg)WED& zr~CEJ!QDgFXA@$P?d2C}!B)<;A5?*NkD zzwYQg9~`_w5+|JJtt$F?l`!LYX4i<8BVgx^r`rZo#Ib$X`r7!oeaG^4aGOjdusbdP z=o)7jecreYq}keBeMQ-jxnbjmeK_z=Sdy7Rg*G9Db}@Frf-|{-l~VwQI!wvV=X+<~ zUj;W2VobaqC(2lcYArV}xFIn*ikm_y8ial0?BnXL!)>a#`2OF~?SI&$RutIdjf9E) z&H8OR;z-;@4NB4K=QG3-tfH}KQHl(WvZwLqMZtLh8w*?8kptNwMwm@Sx)U_=n4e+# z_-S4`tiH85xemMPag5(sValgVql~7qjYEen&}HaRg*+%yqVA0^qWS`9q_z~O%E*OS zu5Q495uR7{@LU)R;-zlC*l?*LD%IScRkrmMLuX-y%bU=!&}AE~HH72(_!*stv-28|(Z z?ZnT-=&{RVC1?Zd`k_q%*S2>zT%sZsSVZSWg>XPK(9crL#D`$mnji9%dce#iVWGRZ z4gHD#t>4G65}e!3SdW~@R^1E;Qmx2ks-IzQ znsVtHBd5x?gCWCaI$&!xzWYE455u*;vBsWK$n>on_u`n39^fssFA0Kz7B@avgZqR5 zc5zbm!#l{^cZZ#CY+K{3uxAua>l&8fhl` znCXE%bN&;HT<}^G@5t$u7ng)O#g+O#=IOU?dx=V0fr300;d=G^gf8dw8I@Gq;UhhN zBY%CHFjezzK2)pG-lj*7Q2{x)d)fW~cGJG7b)4-!&ot>9U!51&8=tKP?H^Z-t7)_U z(|PfSLEueHrmo9V1!6@&3$-2f;frsSlf{lM~HBvWm&)vd1l$ z|1gz=Z`N`JTw(#^C(Ndfn&Hab+?Yrtd2yxxA%FoV_#sMXkl^Yfj;cp~0& zqRnnNbCi|`*VSbURRvj(XtHX(DjS3yX^Ds|+wRs{g5$dJj$ALCX6i9aMOVq;A4PG` ztR!$&Ufx%?_QcKB?Yg9sxA4k{2erHD~CF)U)&V`*Tdz2qF4;hUpC|K_q8B) z6v4()!p0NO`y-_oKpJ9+ctu@l!-YUF*Wn19z=O|qI_j>prfycp312~WD?5Zs?@KoULXvcX33_wrmeDc>_Io&-b7IN+i_et9k} z>6hM2ds+1*6(upxKL_xbC=ry1)yjFplPNm5+&E?H%o;pJR}Z zNe|Z}E$y~8iJH{OZJqvg2kH%Q0Zg-?sJgYO?&XWp* zoKTYDg`U8a3WGh=mMZ&tilz@8Mx1cGD|k&>D`t@Xt2mSma61qg_Vzq?*WVpUpdXo)+@{)5*fArI_AL1t{|{x_dF>T}4mNor?Dw6(RkA+Of1W{ZQ2z!E>Qb;6*)svu5Q zsA0zjTk#4Y7axT*3RI|WpSirSVk;HA5)t;=I|bkn#q5|ffAYIOdUGO5{9|(O22kWa zn!3S0+wc*@04M0nEuZu@dFFi)>tN*`7?vlu`-;a=mCH>+zo2bja`^3^*qD)K?WZxE zDP6CZV38@)-QPGYvFwCURM0*$p@=+y2Rln_afq|-P$|>OSaS6q0rm|qTM4DIbLsx= z?~5!r8a}t)Cv;a4mvo?vB~s~_K#WaM4%_~`mL|T00c8pm&YcKLS6V13g)_T;n;X8u zI^e*+ydHbQ2dk87?C2w#o;mTCi~1cgA}5G8M49Z0_U(YF@h4?d4ut17k&Ue$F}pC< z<@E|eYb=rT%_D_Qk2;A9(h;YStD$4TfSy`Ef^hD_ zg)|g~8OqPpwcwaxkOSmwQsk4fTT8(}X`idn-zQm;=C0Gc>Ew)g?k5dnz-~V;612=+ z=RmP>6cGy;AsxC+ts>rYe<_%>8Ku}n1d{09wlN#Rd-kGO2;8fV=JHXEuyl;G4HU-lw&h6X* z@3OY!QO6!fx24x9x^cH|O}i8LxAzD%5aG(^VaRrhUI!3u zDG8%@$7&SaIX4mq@`tP9k6Y+}tPe4+7TsE#6OWZWhKSXXY&YlElYEoaFRo5X zsTba{OS`B+?#o9$2!XA+H^_W^zPXBI1e{s>*{lNf)t$DjwLZ;`0QFHu!*j7RzH0SR$e9bK zDT?aL5c4Uy&qzk!Bp-Pp{WMzFNuStb+fim(%Xe2R z8K+6M6t(SAARSmjE)Ly9n?GwUJ5B)9dWx-o z*j&!XMNyU2(xwNPG)4)0@%l*qm>~BB0~oW3<)`r4i#^sOCo;(pj8H;PK1@6qCy#M3 zpTEoO4~Qt53Oei7O*r$YuBJ~3PAzpO^!Gd9ID7NppW9#JbxT{?wj~25@X-99w_F#Y zm@^qaP2aB!S&x5y1M$eGn-20$b509%#~SNdHs?ag2R4(E*s3rMv##Po^l58ZU#wL1 zoDl!el;5FBj+DV3a!3o85Wz=LxtQ z-!(JQTW(~!%Cb1iCXEL4wG=(LP>Kxz@G_^Shc`<>bZu23iQJBQ5C6P1@}7e|6;^Vg%lHL8fY`%YgltPF4w6>2_NTJBvJ4x6g5$jtikAfTVw8Sl^qpw9 zZ5H`|zQW+_%xuZmaZnh^*X!SCfb(=|+g0(eKiMysXR=_W;}d7Cf=J#4=DrYL&O7v~ zxk-dQ#?iJ^`0m>)QWmL2II65vjgc;0nC`@XjUJEr~q$%6;~gWEz$V1NL|6jRaw7<1mh>F3r*e)*7U3oS$X%LL&Nx+Kr9kV)WI5Z7|+BV!1 z?zqMTs}z%!wZm*>0LhV$NGJG26DtmUIlL6vWVz3P?1`!w1r6zsl|9NzVqxZUMDcbBJ3m1XhE1dLMn6Vs_% zE_laOYIk}`W1uj>XbCP2eb>fKp}SD?J^`dZxu?c#!vS3$9Z~kMh0nu(#8v~J8WNR_ zetbh~)tkUy8~y>7j*TZ1qe9>9h5&vmEE@lU3|tSIDjEd^ly9rijFzsE{de&m7s#7O z3!&}3zm}CSSt}c8c=ySx;u(VFm~q9AaH-_*N@de>xXXrg*+&PnaWEbJGRGc5;Vf6; zhUZQdtOCecFW147>8}Z78X<~Lkh`k=C@^P8i%2r- z@V60%zL}&Qn(FoD72LB6vUMD@AqmaL^%=&HcWS&V8|woa52}RLpp&k$~Q|lazYfLUDBQAlsIY>gLMNHP~W(SOr zist=1qR*yxMWC<_II8-=(C8#Hi{X;wNC3q%+RsbukQlRa;KxC6$ZNrd8x-@9U1V*~ zb9Gf`PF~N!On(xM#iMyT2Br9c!LpR21^ zRSGw7y`_ET?OzHyzradMWtZ@+LB_g8EigU#~+O1 zaoAx9#1$Qo3D!(=Gxwj`WgJ-liV@&$6TefaoUTI4Xks|O61m10jQlrV{7Sm|;UUu? z{P^FVHjd;RJR;g;rcy}wua>qULzQY67^pW;3Q#n`D(9c1NBW}?f}z!TN8olJ-n!MT zR&?LvJoYzm^s9f(_L{a+5=E%2S6W%j{F21XN}`#q6DKultRtt)!1}Hz9l&Kl|5TT+ zG>am|4U?7XvCC>Fe(CXJYNK@ghZT!6@*2;_Vu6v9a9=-n8u7ILbRxlGu_?S)!sLH#=wNmdeL=&|eoAk*T&OAsjMWoj50R z$QF~-M28Lay~6t9H_U+X7zti#%BtZ*-;7yjFWMvbD*;(`m>wm!6z_or0=W{NY(l)k zp+y6^wsR`Bb)3&`A)voDm?FUzc0D5^&tlEYjGBn`jf`6MD3V&~b9g-b?+(ALOwx)& z9YsAX!D0~g8GpPs#XWZpPrMwwQ>5ABsLQNUGCNQ2u+FRD!d&vQskSQ7s8b^p+?b*n zQ?Ge^L>jr(!kX5sv9RfQ~F4fzAzMf{>2Ve4h)Y*5jKAQU#w0atGQrbCQK?i0}yQpD| zuvlw&689o3AGjI6;)g-#ssE?7b!-ezJ>cF1%yhWjZt^s9+$TyJZ5M3+#2YPsLIXwq zh8Nnzkhk-$AAf%^oRBtq3w)lkXLPi+wgRq>FBk8~mj{mmogJ@-@BFP2;r}*u=GrfL{s=6t^U8acZQNY@mvoOOEOwjN-axl8(~xwsIq61dEbEOP*iy~1vFvY1+cJNZ_Kc>QC&x$$R zDwo3TG)#0!?#}R7nE+>KTl{E`+Po2<+;o2?mh4tD+eMK3l%@#`Eh^K^wrA;R7u*M- z6vQ`cD;GS7@oAR?xwcT|BcEeh`n+DY09FUk3`f>P~?vKlHhRCak$N_#*YSOCrasO6(ESR;cv8fSO2#)WW^V}Mf-k;D~`cN-)Qf5NhY z?hlP;Q^)gifmbKJN56gP{qC%Dj238STR=#SfKTCjJpxf%i4*2se=OfM&9`*Ud4D0U zK1B|yfd<4Y@rDUTO+htKTJP?lOF+)A6+9N!PbBhhtzF8;lu=PD4gd@#MWhIoHIArtrCYv&A5mK zplxd8ssMKCUlEuS2=r#R@!z-nO&AKU{CQ$qMu6R4Xq`5vQtyjdP^jkSnsc$+pC%M| zU|H#-QV&|o4&^ltBDH@Kd8&EkG={0ZzYkxks**BKh*hYlLZ#N1wV{0t2&`5b?gXq_ z8pDruE*?eaU=b@i-@y`suf6VL&J3= z0?IR|efyUxDuSR|8*)?)tBRWJ1l{?S^lhlrDwK!pNjSfKlQ#&}_6d2f(QAvNLnKOkqGpM&4+`e+-`jziHQl7&3rS zfVKE$SdC4AIEDn$(V1M07O@^4O8>sd7U1(`txVOfzhx$l`Q~f!6t%Tb6$r<#V`voN zUp7*JGpl&mTB?>*wl=HB9E&YCQepBNn!)N!rbFIFpN3SY#DkudrG^dg?`}>NP>th7 z0SkNYI4g+IVoE6;I~?jaX$nX(2WKF`)%7snYS%z!{g^7kXhut=hPaoIU5d~?1J1iE zNRQW|pd6jus&zt4j8zq_f8D3YFzRd={xH;2q@o)~mq%#djHC*m^f?}f)%_=39QV=k zHlYH`AU|ljk*ecmTk2j~%E2TOD?Hb3PHAzZjs(vrR9G`H=QuL^*u&)__WWBFI5rRg zN8|Xmq6ZlTt?#^1ET{ORdXM_x5(w6LkGFtmV%enB@T+tGoaIN_yQUnbnEt>p5((hV zy%=<;`oRCS=cKae*hsO7&(Bg^%ufcNNn@=W)RDE21uWf=z1-??K!|UxPRGJ3>bS7p z%{fdF#xl^juHVdy?)wOoGrc2+acR1!Em$8uBTo0Eh3w1zRWW;Cwsg`V2gZm>r=6#{ zFIDnhVc$FVj;u+J>tpXUe|pf9w__<8!c$iV{aF%b=bc!fBu6Nf4p4~hqUGAdPB#UbYYVe}ElDy;6#O8- z%ufX0NdlFO5+EJgP0_c7W@rb?+!TndEsVhMf2YNILxPbJiAWxk+^z+8`oH9MkjZs< zWB+>s`yqKH?+>88C2VCue3CzX?-r=OV(uA)Au_tn>E=dUu&9y?aK_da&gVQufdKUFMB7`0yV2QB7FGwj{#bEV1x zG8G+&gWLM3ltd7~?r@rP#gpx=uAVbA(GlDwL&E8h;zRRkULopKD>tzI{N8q}2W@V| z>uXFFPi^LZDtWjQ4lUC1!M!EJiRTq1Aq!UGn=^gqgWq=Ac6_DGG~v6qjqo46DUy`g zs7r^Y5?y=`#L=)voc<#sc(!6vQs&+pBbzkf1Qs6BQD-D)(0;fKy= zufD)dH4oDzaBJD2$wA#_`d`S(vKb%9>sg?V(a$WV`uSzY#CPPx_cNfn)yOda$D9#~o{NdK~;fy;26M>h~@905Ro8o}> z6seE`>5z)DN#~G!kgP8b$>@Y4w%b$d0(8qG2$LvFRGF;mBO~6zZ1JPjHmV>ucA=|aUb&7{s0T*%NEV|3%1YzsFzqgcmI<^mk1v8r_<)XR0JwVD}=qqBji z8e}Gsb;Z@Yfma-vUPL$$-tt1%!~K8=ew70Cy6G#I&GvfIOAD>jhI*f=1x8 zFmu8HKVjK~mZU3c)*KJKZE&6+{AsHS7=|&CF)KY!b5<-t>wBMTo>LS0Ivc=)1fBsr zJR$UTer%h1QQvGFm`8Q`{glh0fyhnR22FL8mp}bkf?eyB{41{`NhZR(=*-k=ATR@c zkTv%4{C)LC93i{{!1DJAf$liiV$al_92lx;GzEIlc{GJ{=8Ru_ zg|~IERNLgU5NBzq3gSP&1G|9YE!b)Su<+gqj6WXca3eNH>Ks=J1@Gp+3E?yePo}RF zUU@+%F8z=yki_x5B=9Bm@yh{2YRlE#CaTkwAY$9cylR#{@y(urkT`@?VSVcyra%Kh z_X0lQTe_Gj-Z${4VD}zrd*l_dxtBwz>9VlcbV1Al+@4Xn6m(=9&q#pMPz!mxyDPN5 zI`HbJo7OW1TI@sG>*U0xkUn=}l-<4`kr2BtXmdznNQnYomWY(bF_PkkAL)@r3R-bS zbx*pFT-PgqPm6%5kfjQO0I_NF-@#wrzk{_hh7ZA5F z>mZsS>6hwW3VVc!`9VM$J7W>fw=`s@1&wLAST}{H>(7J+?%4Q zxnNo7z3_&RqaUL`_wCU##Qy|Ze>uQ1$CH~Vsh~e&NRCogkprC~ja2V+eee~QlvL!1 zA_oOrXHTt;TY!6GrIj6`0cx8^01Ccp8_vYW*wM+s#NhXrmCT?F2@S^1oV-njMV(xk z34@T_zYG5bOwVo!GXWiEZ1q zZQIF-ZA>(=ZDV5Fwr%6)eLvn?x1Oq9tGc@XIOkM%^;yr}zhy^fX%(c49ih!`8M|Pb zU^bT@??q|(u%{&J%$9o7g4`id##W_Hz6Vl$kYg0T)e!}lp>W2620+MSh?gs4I2NmE zv)27t$asNlDjpgXFQsjo;sX}5XDYU=fc-e=!RE_4BVmzKIVXM+sd_h%MV@u(ltpp9 zb6l4oJvU~aE#+f}m2~!uw%TLruq*(_p^ZZ#BX{Ls0D3-a=y9jn3rZlxH^mY}k#`%U zfoedFv$q4*I&&gBEN4WC*1`CajBxiQc0?QGHQTe z>ej`wM7A2yT$hfIA#fn6^)$w0fFlstG_n-F8Uz966x_SueT>lwF!Z>0bLgZ3!NWkN zvlh@D3rC|~Z#I($-_0bIJEq}EkJI?lI_!vWWPM!EDCjbIOIcGlU-7~?Kpl-~0E<;b zNA0H3huS_$QS?PUp1Yn#NvQWdQdeO{cB-o_@hUv3aHF738?X>}w5njCS)mQ(HAS?# zi*^8LID%X{~abn{1 zeBUp)$5$2@v_W;%3+?LeN+Wa=s>`#%sEYY@z}G%kR(DrhTh~9XuGhQ$F8%M@`N{1X zx$VuZPZ!_kYQnqZ=aTK5FNe1;-N&CR5CF>r*Yh1ztS!)~Kk-DCrbobW9N@C& zw8jWy$s05xkp~gFRi+12+&v0c=AZ>++HUcj^@ng1Xt9MM%(pN08WhVD<^xKk+5kvV z((%c9%wB~R4W?ZgTMTT@Yo>%~2o{YR;&zOfDrMW_AmN+Mh!d(Hr`~E&(CKn#{=W@x z43CM_b85K(DAdIBj22oAc&s!yW~}6b$yiV_D)l1(0TexFIfSK1(LD%4hUu9nj`*5M zrRi{R!)eWdNboY&@%fp*^QMqU;D89W8JGH<4uVO|eSB97QDRg@5yRYsgqYqQKF1Zz3{O*M&PCgRbWQtB$LE`cVcFpf1w zQcHV4V0f?`&3~sI=W1l__J(t26)V#SNj76ldbT9pa>sA~0zn`L?Gx@vi_-{zD|vib z#?+j{#pdih1A9edi}s(j;Q%PWabNnt4&PTPppcG06d-=p1i1xqGUo_Vl$l|TX@On^ z_CQF@PKI&g^_z1gHoIo1@y!d)D~jrJN%x7HoX&ElS=E8Ro)WT9=NR6k8QIRIOy8(n zFz|&>Gn}E@7gza&)=iILLfodqO%9p=i~})24uM-OCF)^;_M5042?AgP6BwEt7$C1! zEW7X)N)3}CZI>(-7@X}eejjQVkk3@cWMo-nS19&_Vrt}9DK_9tHLzF#Pp*}6g3DTG zcml^9URvStMU6(J4h@ibicGss^$3oD?I6d2cn(cTJigJ+XcTQ8`LURrA(xVOSkhCd zeaL2*+uPv{julm;NCMI$yZVi-#|yQzuTXL;b$RKtb6Y)sJP~VFdu%$75E-beh%U^i>Dhl~ z!T(e~=C;T$fE&dOy#FQ+l)f*rjA^^LFvOwCNJRk`Un$Nft_5H`gbMvGT7qI4-2gkdE(9_^{J39KfT$qg-27jbK5JjCQX)^Ow<68K}bw z!GdOJ=I0hz3;>WhS0Gq`##(C{(r4T=DF8u_Cs7I)HQ$ao;q|?H2D`6zToFGc?4n#ccM%{S)G+C8`My_GwcJfSC+BF}H?A zWj!gulc8w98{lVW!TII^pOg~7adT#N*MzdD2(NkHdIj)+0NI9g{aJ&w0QvWemp|O! zu6Y&mM6g-2!^c&F<7)Ph*=S7y;p`49qiMVaWzyO8^{hv44_~)?(;>TP9K&LXZky2p zTdAiFPjs|cNT8}%Lh_>I|gLH!Qv9-kBwK^ceIQFKnxm5TxOS6QC`*QE^Y(!C2!jk#{ zM)7|i)!ld zZ@->B9c|e@M)qtCmyVOvU>lkwK3ct~ZdVUf9|7FJ)YFufsK0?A&W2r+jof1|)Sz3o03C)`$bLf+8gv-P$&{d}BbisVa{>Gg}|*U$B@=HF|&P9MYm>FQ^74+mG< zU-7>a`3~Fb-M>DKZw{Xy3hVKG%s}URfd}pc%TM;Qr;3^?VvRP)GIrRXNgdoD;;qh>}I9wb~c4m6>f`tEj zfY;?=W>#1n0q=hc>;jAEe8$KjivJ3P0#GHmLX!B{8AhRDNIVjk=>JOy55wXyyG+b5 zvg18@1FB@PiEQ^RX^9r&wIooLqSd`6kd;nK^GJ9U`%zf`Q!aHEsT4QF9SH_~Q8g%P z6%6uvknt;a>#%={HFkIL|0xwUUHsOp)lWkc^~+i@+7ouEHFsQ0?Vkf?!pv2#9++uG zxa!;-X8h*blT6yQe(|PX008zQy`J*3_y5=><6up7 zyafFjO=L_B*h8iQXiGa|izEJ|Rk5*`jy0EfZTMvSl(AF)P2q68gIQNI=7 z!esTFe}1%0J2!c7m3qp8wFP%nl~!r(*DBxsi9@8?!h9YF5a$nVQ6D8dl}WlG6b#P9 z$s4p!Qmf3&iu({_G2i`ZW&H72u}gg>d7O|kzEHJL2aq%xY#c}w z;K0*$pVW&N$dEZQVLs4J4#Bl_JRuvOL}{SH#j%o%(!Cf_g%n@XK*TG34+OAs+~>dk ziut3bGm@tdw`dAWRM- zXT8Xfu%p#IgVtvR&~f7R&Nx1pZ1bl2a;ltLYL)0Ek7p@PLx#U7bj;h(I`(I2EG0KT z*n$$dM2Cqg;->Cnz~~PRv#FoA2tpVk`29|c8+>oaS#-YTZ}XT>=!d?W_}@F@8UM-u zyo;>@ZuJy-|<1X$$;Q zq=W3^=2)(~(Olcbx zb;4HEHRe!P_n&r5?Mg#*jzhIcrKkR28L^G=XJt>URNNOvgSl=C=Bq|f=yjGS#i$fJY;8c@=a5VV7@Z`#+r?kP33F}IUj+FQVUo~U_)^j4GYr3b zO_dr`;{0$q|8eYPHHQ7(8#~qjH1v0d?=%(1r_z`Wa2}0Fq((5`BBK)8OpRy z%=(N&a$_L`c75T>nkV@?&x5dXa1?@4kGm+-$MVHcHTa7w@yMH!>Egk}{+57I0;&ps z@+=8K{=ynNf>iWEHa}*x-^Y-6ApAJ2S6U(SBEMl@1Eo_87R+1l1Xg~fs_Z^uU`dHR zv;P7Cj@s3NOi5N;_UcoBj~*g>6P;S)P&#=IGzJ z)yh%pX3D>IqiIbmQn?Wp8eRk^p)+9FFJze{k|IP6s3trchvrR4HU*PiAXQWFzhcwL zM80vZ%>8R&kvmAejGbyJEkhe`Ek6MRzBmw*>P%Y)IM|c0VZEA^+MC_q@|U+FS~jyI zi5QPgx-sJHlq%5Z)k@qF4tXS1+hdbWibf|iY*Q24$c$MC2RWc9s~a*cC|)XWYZhDy zL#N&WM4FMQVJ5C2>I+5{>s5wWl%ZILlensdRX34pbcbpvBg_jI25ZNl)yivhY_y(u zSB*o_QmR7L{XS&KQInWf`8*v_zAO0r}Mcp-AG9M1@~SP7tw(Mv@W!(Q7+gl@rN z6AJORqC~D}t3ZFrAFt!1KQXQ_2_PUphxtOUL5|E=U)zH>N`iRp+kGzRuvUwUMIL&t zEhnokKHAgx;~#<~P!|u-;N(&A9WM*cEbAa#G>zl_Lj*6b3?Yu3U5rn)5JkO6hac_; z04ev|7$V;1*#8n5veLouZrf+3r`v-Mzl_KfQBkpjkqZV>0H0d1WP?-o+L6k0y5Ad| zJe~aa?V2g4zrDH1zw!5HGOJ&>^ZS0d1F-eCyY2g7|FWb7Y_z14`}6jpWWL4Ty0eYb z*ZqB$sO!*b6$Pk|3d6z(YxR*BmnmTv&{;Ddg>m}e%k{bYHR;RMCG+q7<1lQx^=1E4 zx0q(tFQ@zM3>=^?FfUcT@)A+(o?8ZyCwOC0Xct^#f}m0UH!Q5-Y2&>nS2NGy4>j;^ z_Hd~=VU@YZX8}j{G*!Xz8Ge1BAk_$m8zMIP7-Rx7b{e_UU6BPx3w8b}neu%MVD6$U zHRWd8R(MtGla}T0IqPOu%+60JKXA4mK4@>RhbQJmL&5s|kiZ^JYw>GbGAD%hd(j z0!0C*m27?hVe(bLSCc1{`6}lsB64l+WTwT$IxZ(PT<4IdRMaQ%GG*f6UlT-Z=*gU_+D~n; zhr>pdiK87Y@+G{8z*G|VZ8S&@Ww)(2iuhw=Xo)^Co>`AI93=#yen{KhdvZnu2PrRT z>~?Z{#@b^2TtUhcn$&_e0F%AomJwG$1bkqeP>@lK2rP>Qp!c#c85a%MG~SKwPlEc` zDwB|1LIF*K69teq(sy+gut-oIqQ=Jau|ny>=9I;PdX zC4&?`&g2t;B92I5D2?kAb9gcdu9d+cj)hROeFca-O^#&3w)iYgKr-ZB);lAv6xANC z@77Qr&uQ*ESGce&3w0P5*eFZw;YIAy|> z2W*m+6Lk(hPCr-ig?@Q_RwuQI!Y+0S{zCCE2w~VCi$PX19QWN{Qq+4MQ8qN5fEz|e<$L@eSCWJMPNMxS;aqr|@*XY#XtvDI-wqTu;0(6RAmWO)V} zY|{@R7Ik~e4;&2_jlwU1&X(j4}Z_^pjKCne7$!kTzY4xm;`d1xn ziRS73T7W^zh%UsZ?B?fb#|s9+z75Vm`}BjZO=d;td`1vdZlMc-{1{u$>95F4+~i=W z4cejFB~qE_EuWbyNe+n?`ST1L72&@dL8ZJ(!7FQV-Z(w8BQ z$VE2TwLYI@%cV$#D)X~u)nG2z+W`pGV7Li2BmkX=^Uohbi((%EB$H(bRmoq|5OAMS zK3LpppvmNq;s(@+HSv4G4RJu8V%>pKJIWI{*ytte7(s1z^0DX*A(n`|rAvHPs{)7R zc`~EEs1|Hyq5Gu#>yfso!Lyy@$-5fNl$Jp zAO=Lk$X&pF6{XUw&L}r5z)T(3F)qKZn=6US9)Hh%oqb&q**r!XiZ`_D+>Jpj!qmWY z=6fu+{18PSSGH!E?z=mUbNs^+AKUlL*W8NxfPXSN5V>)>zh>s;0H?Yf(B%tO0>}i)T2=O=)Ii}Y*iLd!Hz{XcBxSj<3i8suZ)73T-dI7Cae+WG_6jik(&14jpKWb#yg zdOg?O&$amJj{h3)Qux;$u=@50Gpp03|N8({&+laJHmA^o9egMZ-Ele$&t}Hj9M^31 ze4s!e`}R~LPNyaBw#0Z(`7JfS&5lO!{YIb0#=_@7{D6Yxg8zuan=zW-OOV+a6}vV} zZ<7trF@R@2pwHdT!`pA-J_J5$z#dbwA&*`M@N`E?@P#1s(x;JHclkeZn}MXDQGpm! z31dL1e_~1E*2GZ#w)JhX zygeY^4L|q>lb`EOm7z!^uJ<3;EA(q>x^<8=FrOqk5o3cDw;Y^Y?~%OSZ@#nio`z5!lBzV7!>7cUums>O`-E!>F{*{ zaQ*4lEPHc35VJey5Z-ja?**sz;=u%T`3)YpYxmN8nnQ8=mk|g<1syMkEs8IQ{5Ue+ zu`rn0+WZ}6w^lTvo$lbO z4Jnhi`%HQJP_Vv0e5@Q-yYzbnPEz~UlDi;?RI7?s`O#kp}c4e0vGd3&W(?pJ8z1X1u`o+#afC z$8Z(^I_NTQJ5COikZ7~_+X-k7HJ6b2EFgt~8S?IJgO#9n-z&-8=i`PtIQMLF#U0|0 z*M19)aBrg$^}`zz&;;^f_j*DNrf4OFtyuF~^GgK&Ww?NIf8vS>MAUOv0I0<=2550u z?i?RfY%?r}A9)%Ws(;xQDHsY7k#@dmY<*iX1t@rRPMax1mo@wEQ|cJh311DRIf?z9 zXcSxR5(F~K!2?FMNsk3vhu{g*cv9K%)xzD&mi2-dTQp??9PAeKlJK?gRt zAbgZBz%F{%`oK2oZ8ZC07Kt4HUD57_7pc^$N z1%?Novwz^HskISdm}m`ba|j3;HdLGZwFVnv&ms80f$w`%;F|3-<@in%+!8_1X>G6I zVUjAi(C_qGu9(0jhiSVQ)P6&=7I$F&?AcEd+o(0FcoUPH<}=^5avj-| zWY)Zm^b2ON=D$QJ0A+#9kcRm{VtDhU*9%84cZW+~7^;W>G|X9K8ePbh^fPuv+@pox zR6l{#z-@PXea~HmEd&aT{gSH5s z519>O8|NTkuEHa?k-cK`s$Gej;Z|pS2GGgM(gQFmrZM*70C%cp#8`iGA3#aMmFlA~ z8_=Ng+>wnnhz8St|Kj5+g5r{kMzdZDJHuKb%kyCUr%|&7ySuB`mEun)w>#0qbeWP= zP)OrEt;*{e1x*1dvwnzZsg0ZO^XICo8_~j*=%OeOwDA3J)RKmXodE+sTtwQz%e*FL zQw3Tam3p3GIG}R=S6`|nWf#owwL&aR8|<-kQzTk(XX1y6oYL ztcqW-TLyPrr)f5N*Auy>#?<`VvoS{TbEQv@IIIE{S%n*Z*|GJQ0W!AV6}Nid0Wa(w z&#Cpo`@q3eTP|3Si>4yjzmXSSo$EiR#r9vqhe_jxopWqN?K{{)1{d)p_lF#(c|=;hR5>JXEj1V~}zd){CL6 zr{u)8N@z!Ypl|nyKqwD&-x8D)up@OpvEc}y$ao}&U6@Yy>ZCjI;>6}T#YEiPJzxqw z<;3Qe=JW#GbPTzVJ7_6tzeAVkIe6;D#HYpD*D~+X6focKZbq$RKLO=!tb(UabhZxd z`?QtTaF`V4r%yL8#AM`xaD%DuNU_=Xj>HuQZ`nS}ooQFf5{~V+E6biwOg*e)<9-EL zxgwQiH#aTjdI>`rc+Ir4pw1}D50nw(s2;CY)^#gP9GZ`9T-B`|a&MWeF1Fbd>pa80 z*6}HMySZo?CVPfVRlI(#&Z*9WjwoI0u7ZoR05U*y{2gMjY1gk!J?^WGO;N|={H|N@ zr>VbTNY#9~eSAm35*da~aXXjwM9muD{Jm+fz*CFI+^|YT2D~(hEI5oqa5>$kARwR} z69?K~9^(`fSAAP&91}N0n1}tDQvAU9t)62OWmHA5L;Wc#D2GH8aVKrrvd3tLSWF$= z>4)jB4?zma&-M2N1Jv7hH0IkqZkTmn_ND*o8zT1TcIN-5r{c$;?;S&@O8t^YhD&8c zgr-dOABO`2wEd^2Vuo>4kTx-&6nF^u-9PCUltHDhgwe~+BRnukRC*7B!Tt5U;^N>F z{@m3sR@ELmgbLlFYwAc;0wv|sAZ5wme~G1c$yP=m*NMerTt$BxA1NOfqS{PI;IgJO z$e00cs5(g}sFX<0ZpXx5Rf&`KKm}SQ;nQa0T`#zRx#Dp7bKgi_#@VzziHRziS!8vB zPFSi4*F=1gi1pG~G1#x9CqhY^r03j>VDj5u#5THoa-_^4N9lZ~bVvEQx59ps2!#E7 zvbvD=WR<8%ca*?blSEWG)i+#qQdQk8OyQ;CC`jMf5U)YVW`&yM#%QPj`sCE%a?+H; z7;9NTc?ez=)zR)p8rh|Dwh#J($5utMmL|TkY>e(B*aVLHKeSG4gyoorg0nKb$p7D1w@mAO*e#37w%HS*KY zVK3S*wO<6ro|UO4A-^3;Ocu}+lImp1+$F&QwDNW2LD0peqg<1m!=35#&UO8C({ZoA zBRDty65}V`epK>|%7QCgCzntsTY?<7rSHpxtmnHelguvc`UeTv_{GWoE}dVRFvkJE z=3>o((deAGzLhlgifrSXVza-3l5wV+oK1Iq#m}K>j)p>AI;A_J*f?6p+6XXsz1MUC zTnD+~V!#V3*|b5l)~{6bl1UWG!&h@FYMDgS*lM*SIT+3-HFV?~;1@?vLxZ(lgs0#k zG4WMUZ1Z}%xqCh40JeWjBm{)GoGZB>Fwujh-uK~W|Gz7_ZC<~Z*RTHbz{QeI&d<|_ zT^c^_T8R>yH=19gv<|=#%v47T_dWrV*w| z*J35tao`S`Ihcu*85qNr?**+$P^M>`7n^ag86ob|)6qVgwE#3^H)lcvq%@|RmN#Gx zvssxX1ZlC(-?rFvtl4Oed(EOZ-X?8)^26ExQUcTT9ZQK*nGa+cyO6{tK)t3>k&TcAQt4t^2E=n z3{)z;F}|vXBoMO3eUuY7Pw{%F`?(_i6f~PD!0RHT&C*ACUxQYmdXxK$`u1uY z7LwtgcLw|gx2@t4y_3bz4S6?uBrQR{`M{W-aZ{~XSsOO_8c-6yJlxqo*7F6){o&wt zY=M90xuuj82YVeF2_2U3l(9<(aYO|NP1$3kpJ~a(=wPkxtqN>y<_U*p z-sUXFq(Y&o^2n0Gxo_2-fF!fr4Yg~sL7|nbAf?E@2QcyDY?V5QVpWkrlAQ9(UIQqy=vyZy)dexA;Ua&mae!N8~I>})inlP96vO-78@ zEzz2{S5+}MSExb(ge}phY)6yD+Z(SRx4ZKTXU+$Ud+X}=3CAPV)&Zh4>O3`TZ}tLB zYE$Y;4rHBMryUtgOBF}zzP@&PtDV3ffYZUSVR!m##{1KUy|ClchqJF``O``JnA5>^ zz}9wFH^lgRm^{HT_?{0ndq!Mb4u5Bdes|&F4?g*aLU!pM_pjK}!YUGN*c~2984ASf z2cH}&se=7@7+_gRAZWN6=VCSPc0jdC#R^vzf-2wWkw1vi6)ZyJ__KWtN6FxoI%5To z2A~eTW~)XH86c9BU?qh+Ws*X$3~pq4%of<)8V??Jjx;3 zY3fN0Hq%@Un5}gCg96zK?YVX8*I7pkm#@~&@2;7Rb;A~uN;W*t+`CxLT8u;uK#m%I zAgW^Rm+tyaZd%BChs&(mMmBB9dPcaBI{$($(LTEW?C z&udjS3@RMt-pKO+hVUK%9!qWs0PTVHpaA{f4g$aV>;x>fKt}h~%xJ}>UP16(1`?p| zpT@KT*|@7{9W94jU3Pv!FXnVv46f_Uh-qoTL5^oAM3{JEHkD=J^{sKc8qL~;)6!K0 zg@%Uu0I%lPy!0-ds!b;8XseN^Sr8@z?kSjz9g|5GX5P-~TAAXWzLKt-dz z&-TpN*11}HQl;=PxJs=*Eq<&$`MR6MJ#I8qHs!KIt#v`R{Sx=a{u~AN*ErJ;2NzRy z6swfx<6=@Hmq%kyY9!jyn@g^Q5@(y-=Pi1h_^>CYSR-RUg?ca?08!Sln_YULZ4g^( zC5ADQiUP9*em69@Th z=8G*9X=)=dd?f;_Y3A#YG@V4aBECPfcNIFLB_c5x|Dfav(9{*AGavhPJCox2Kswy4 zuTCGEPwO-Oj}Y`%)&DC5{nhlw?QS_aQqtqLh6382{tv=Dma5m?5uMIPXMZ&P(e0$y z;{-3j7mu#r6Se&(1pRpr5B()|(uJJ-p4ubucb&H!;~}$+nMxltlP}2%o6qH57ls`$Grjl-faqE;SP|S z^_Ls9)H@_;+A3Z6F~&H zDL#EQH~zy18d`ve7^5vc5ocm<3#=sZhU}K%#2l|TlNb?spr+w?rYfp^=&a;VJ~AAj zB#CtvtD3GO($<>!RG%XNT`mm?+N?AP>%-7VnuBZwFUdE2w=axkk7@qo{=9adOpw2{ zM~w(W*#V27WK>&Wyw=5{{o;u)137^M{XH)`%(pq)uDi3XlFJCcZL;9ecKWjBN*(5$ z#=07~T3r;JQO-u$*Jz|*y6LmG-;c-oA<^_n#7~;X3Asbe05+`1% z6p|9TD7`98(hw5yO`8 z6hmc-eq^XnUt(FpDN)E<+?rMf@AXOwUJdiJf=2Q+j5%Gi?a-LIE~qblaw`Lb6523b zd35uq^3!_BM8fX&kT8H}zwJUd!xZj5?By>qT+16E{q~kb<15S8nqP^rosFz0A6az#yukM+8X^>Z{N?@198Jvwi6l`L4WOsi2^Y#}E2Z5e))}QKpBMOB z-43a&4#?^bKk_vmHtLELwq6J5?`P~Zdehgk6&1PHAdg<@c~k_;l|Glb{M#5<=KSm` z-3p%lWU|A!7HEw=2MOU`9h%QH%*H>UW%9aa+r>N3-8J=Eb=9Bp9L)+wO!y5n{t9+c z@q3raYR(fHI)=H(oyZVL`0uaC4B2Q$u-7~+1EcROCLSQMLc!5_ZTWlv;;#@~8;@L! zVjGWXo{pdiUPo;@x-E?QT8a-AvKtB=+P*xXAfgm?r4XY$a;<|Rf17A@Xu})1!E@gr zn-+tQvdy=nAOGn5r>NOrbXtO6$hUyhd7%RJeFG-O_^YjG&G{{@QD58da>Jq;Kl-xYtxs;AK^ z!BJw#;b|5Fo~Q~rt4YdhZd=@?VyBWpPT`VjjI@xYJb4~=UO`4|MzO9&>)~Fqj5$ji zP$>nmqe@;!`}ZFS3Y>}R52s4VfRj!*gT92B`1d#FA8Bn={PRyhn+sOxzCaVFnZ6fc z5Uy}XJ85qRm!e#tt)qrYL{b#b)kMR_I7x62!fZe=M;Otzy~PP5W&G%xr{s7Q?6O5^ zCmBNShXAtGet}bCC$3QbQhWq73T^INY|_s zLA816!dM9JdV4OQ*MuQ18W~Mfx_T(hw&GZ!EeDPjSL!~9gNGBDR3o1h?2dtCqF-Px2CTIf>yD4O+dSBuohK21FmEFJH;D& z<}{KJiHx!%?b~EVtrM$=)2*NDmX{`c8f#jHm_S@+emrjp#oxdQeiaH%5cxsXRa|{o z7V&6@ZZcc|&LxyFsXfPKQ$LkysMNekdFOJooBz$hwW$TfyqaMs)0Ka`rhGmY@FJ>V z+a>#);HTKdGtRKorh6yas;j!Ziyg_X_u3^ZxV ziUmmkkSj>Nc`#9xvM98zQXMm``h0+qLXN}hO2R*11V6xm{F|g?`lI~2xazee3X4Z0 z_V>E6{&j^N*}hj|kqe0`Y(sKUy@L8No)Rzu&4YC6hc+zIZvzIVj=sxBB7cvFjR3yQ?{QJ@3gUL}sXe)!3{mBvP&b zN90DSVOZkV8^vPdE>O=*L1wtT=%BfS?eMqkv!eiobXgJzuPO0?F;Y-$iclM{sllX> zG5GWy4~6vVu(6eJjWI?c(}Kw`ui%toKJm*d45JW^B@G~Q)>9Pvx2Q2x-cN2BPveN7 z1j0M+$#WhFWuYzjK^Qb1O9mFfj7VaDm?lao+=G@Ox3TeO6y1yfSJMsW;yzE!xRsx9iOos~ zdN)2T4;YX^wt1xS{T86VKoHl5~EEED@ktV(H+?}Ci zSnxyfCmOVmdge+f0vcc;v2vv?i)qbwa@L%nHd5_aC9G`2X(8`Xy%8yeX(%P+lnV(( z!}j_Ft#C#nK^dLXO9hn`=hY^}ESqTsMa|c-RkZPpV6;4XD0wZaK;&cvxnq_GV*cKF z2pz^-cH_vzi-z7-gjNDvEh@0~1^PeGgq7}ngy7m911g&p<}Q}JDT38Rpg`1uizR?+ z*hJyUp4mj8ipEe`lb7aVBCw3RT&VMuvf+Au4fV^~qM;}G`WY6z~rTz}9sU;FYc1ly!9 z*$+=Y7NEY|c2}OGqx0L>)2FZp2#i>7JcV=PE^1Nuau2{YhLCK{7bTk)rbK=Bq2zt} zhl$Vgu{(cEz@K*?_TE8}kpIQ#^Z5w(_4#eVprN>8#w&^miSh#!C?`ca+6FGZfC#mY zi#+Z2NBT2j%8UvA7q8dCs?N}g)?nwCaUc%&2ospWPA5+CGxYZKEIQ&T=byKAjSVX9 zda!vawh2HbT9^qBe)bD)EWK@hg2yycpG+Wisv5B&mekNnBjXVq2fciO;T7!TvAE=3jyI7NR4SUYzQnogy2uRoJNu1VHJ05_h4T%kNR!iJMwVxPjY!UyRSiOk0 zKYPKdd+0hMnTRlai5ky06i2FqPX;PA3a2?DhRC85qB-UoZ7JI5tPnu#B!2SQB1Xo% zinwFXV4|=(j)Or)Y?GORj-x`G<{?B@D^BxW(7+4Wz9I+-6pqQL>o*3PiDW)UU785=A zPuD9Otg)3jEre}DDy>0)?jJ@!6jZ@TJ4Qcd$6R$5{v=U8_;pG<0+K7MzQ-q#RzRh& z3;M`mSU7f~zpFpZR^?iC_o?DOMI9O*b+hfC1X0AM0piZV-UHs$KwNQ6h*{LHIM5;u z-drXRm&+ItoOsZua#P6wJ zg-L2vtmaWE2qbL@1 zd%lbn^Wpz~>xj|Bc3gQJi79YWpsl`{2g5W?Js8z9$$kr`MK>|cG65#Pn;4NBu-~?!-W%?_0 zR_<{y}W( zP_Yy6vb5fpBV+krHD{}bPiyL^<7)4ksOC#M$4`2exXd4Xf4{!^`GtyR;#U_YcCYTI z`Tz0GCko>o#=*fwHK*-<<=B;x^)ola(M|?vWIe0X>ThiG!oqYiyfp*F8pfkSUAE+$ zY1LtwQW|w6`%-8S0KKDH&5u?O)aR;0Db>@B*yUMAT3>3Frn=RY(DQ>$asM8hin8G6 zRJpAw{@|^m>Fqt-?SHbX15FE{&39Qo{i zvBmnde}CM5UUq68P5uLHem(4Nwmkm}?yZPU^H1nA2J6`gV4~ml9WWju>g3{vwetfG z_S~4to$Pn3SkO7EARQ%hiqJ()T`0OpJV#t6sutD>YlnBmJL6h#Ej?FQ&Z{o)=-9iA zY@v?3#FciW8LU$oR>G5ZrCD@USyt2)cg6dk!WnPUl?AXot0Vqj^}mG6@@$vxvzxE2 zIAxm%U7hq^VtcYK6`g8ohIDn14n!Ng6W#&Wh->`0Lw4eQ^52pJ9_XC<`k0`_1#G5o_MU}PB%I=apoLRI#t})zF7UmeMet=> z5f?T$Ub%!_w$Q$RcVzC`m+IYIuX)76~IXeGNPzfa@~XcOArY%r%+WE;ygjVH=Y8bBZVi*Zpww+2N>9a|ZoPJzL#J%-V{ zS}~dxYTRAWtV*pa6?)qImDi}cZ~4neP==Z}zm6VrOpU>t9vZ4Q$nCw8am_py-Guc$ z14&wSRcOzbI;TziJ=u*FPTgU(xh%VOvIrf_nf1x>1RCN?zUAKR8VyC*q+~{&MadS& z4VpXRpF`g_ST*5&Dv<#k3K%0J6B|=%!Yw3fYQPW@4M5X=zZurWGB1oO}@W63;9;sbG!BxCS33S zSUE%Ms{p6lqK-GZ^xwDSj=y0I-EV+kK0diJ!Wp`Qs5v&;&ry~6dd-B$8VP5I&vUB% zTD#xQBYS!r1U3XXkj22}!z!K$935bm0niLaVi4bjRrtVkkoi)5w>&SGXUo)oWnoEx z@Bf3$zy3ky_Y*wPbvMxdxO6IxFFDqyT5lNJ0MkC;HkA;von)%tG>F3wTXKUaR7Hde zC(})DIo67&l7zi7TZGxu)?ADdH&4EmNgXQ1mteO)RQ;my3blL zV=HQ<1;cr{YO#m=1N&4xBVU4uko-SXy<>1DVYh}Gdor<;iEZ1qZBOipJGO0eV%xTD zPpk!_^?YX#wdgO|hhr?Cog2$ND43))e&|3-wW z%?52riXbds44>+1p{9;e68CFG1v@;|eL^C9M9Sk{hUPj{d3{ENKR8_nCk#PH)%jRM zmVZp4Fol4~qX^=H@)cph@<8?Xseu;O4gkW;vk9vpjflY;@4zeteh9ug*H@*Je1&`_ z%GAecPlSebEN}_ss?uP_gdz!t$3aXL9w?^WIJ|}{S7oBk*meq#Lp13O;u*K_Hh(8$ zV6eUuvRM3b!CU3j;neto_m3ScD$_$N7V^AXG*1zlcZOjh3OqD~>eU?eSpc%%NC7_W zZI6SlNKReXLZ33^)*%?rTGX$13%V9HMCfqiOp^>U+LFVK&yb)BLeIk(M7KU@C@7wZ zU=}?4rcRqr;>6`WcL)U`I;`y_G{VImmPC*sELCu+JC4i1iIjzv>DSkg?&;%5PA1gj zCgA#x+?#w@BqQbe9H))b4F6{)9#BPW&{-R{lXIrD`~mwC_O?kZgc<%A4UwE~CMC{R z2w`HJ1}%)0mToyoi7vsMz1f$Pz|*V`6URzah|NPzAxRBim*kuqh!EJc33zEElhW60Y%^%< zzko|Dx`-0&iTWKp7f^Huz@B;f6PCR-a;UI$F1%cMtP$PTq}VPoPBltuh3Z|3OHf~s z$nZ>9@n%)1=`3eVy|)K}y#=5HJ}Q+%R%sXq5fWQL`#FxnYC%?E+AfFJV4vNVMdH@t zWiUUx7PIkNkI6fdrPXpL&G=E8Ko7WO4fyzoDuSV?INBsn$|X<+kRu&j1u{Jev`tq= zz%W)oXgIG?YjY}@{hY&=v!3B@-5!YkQB*!uf7tAn@b|*ebzGjxxU9|g+~k^lBxXfe zS_+lu!pu4o3$8Vw=C$EGU8E5;h-8CHNiry0*@MPJ)80d|h{uxth-x_Vy~xW7jZMAh z-C`egWRHg*6dNW3#^F;rxrg-3Y&gXhNByK?NNvq+Xgw18mj|NcmeWB9ecimLeDkcK zypq4YX&roYg=m#gn0i}rruF$(FIr>@N=P8MD9Bv>rKpW55sq5R6Bj?Q!!qV&2u4MLEP z&dKy5TE%I{R)qMwTwfAH9{h}&TJbEwftepaOVZ!>=~xQnEO32Xe5o_9cq9Ke zVZ1V8$|Pr1r9@aSv%!5lgs{TGp*3){mG`@2#8kr2_RTh7a+xFcXhn*a+4~^87VL_M zk*VlO(@0hMT>S$vUfp}} z>`DX|pk#a4+E@L!b-C7W^z75I;o=-$(Cw&9arSQ5HTGZ-ICnQ= zXb5w(I?n}%kDE5!4Zb?h0cpv;pu-maMocK#k2M*^zNA}(J6v)*0G~t%vjNf1F>-Rd z6&x>3FO94DaJziMTR6nxgC-RSQ^9^bmF0pcnpNbBqc}^#d^%cQ!;R^ zaC0wdX+&Qmj@dm>q=<4jENDJZK!K$ZUXCkZiK3H**p^ePB^gq#DFR@ZcQ1*JdP(|c z8UPr6W3>P%zO--Ahv)@Aoyup!dgjkSLc!B`>SWbjNA=18HsUDtNHr++a!#hpu8R@m;75C>33?Ie2F2WqCah~hodJ#aX3q#Szy@zrzd-`D&PhtKa^X%oq}SYJ>+CZ;bf zLe_VxR0l8wgj7;gFuG(0L^z-;^kUN8)Z9;V6}tW#dss4}H9UUfdLIk}i#Sf-%g$?L zS@p%7k%d)W3GN`}?+WUJicxp(_+&NfpDEJ6n_S+|;mXO+Fi^a+7b!;|!AV-W!xVX`L&JJXa0*DNmxX~v(ZR@76vyvf zg%tBR5hId|+OD<(DA6c^T2iJcfkJ$*-{@loMIAG>jITbznvw=_u&m0%bqvdbQJ&nl zBZ$^kg_B6#lV~u}*@+_zbWrRjVEDo@U>!++qPS6|6vblYr;rZkw=Ngi8KzQFEh!?9 zjvG0(lt!dm4{+I{v?u{G>k^ydeC2b*F^kghL+<_J@KE&Sj;r~?7KwAhMTe68jsl<*|nm9{L ztxw;GDV@O)`i-7v4YA00O>0BQeJyiI_JX>sqDj>ohk{ z8qnM@%g@@+jh$PVd}D;X%ZMYFG7Snbp4!d)9O6SsaBpSlvMkfzyWdbuLL?l+9ouu! z!%yL(+jn6b9)=*>t$)B1K&TYg@7_8TwC@VBs=C{5Mmm&{M*e8Umy$4a_$-k(I^4VE zASV57eW<*TGYA1>2@0ngL6ji3BUorrx?oS&(|_zHPWyOZl}FNe z)WS45KI{)I?M;1tcx5B*Y;A6C>*4DI|BmQmK0j`c1vEmh?FHVyI!CrbA5_l? z&A#;@;q^wx#9B6^nQAu zYQTT69oxc@-f$=l$nW@i1p_>JOk?;nt^LTINf zg^5*DMRn58;V^?DH3inQ;4B@eS?3XF{I!XS_0c|awCbq+HLEe*5fSIVa_Za2k_Wu< zj0nTG4!$tME8;(2jZV?iF<23rk!npvhJVNpc>?A<4J~;f4ENynu)_I#x*GADp9*;QkusOcsl^J*OD7Je~~Yy=wA?!-8nh zRfeN`e_||=#I{lK=N!bAAv=5nem?$9kLZOOLOX0D9J|?tqK>AAkxFk~HCJFYRNCH? zk^q`rl?m!%0w^r z-}7wMA8Z4Dd2<+4LRV3`pW!1X7WXE4{sRa|ckdpfr1k1&LOW~k-`TYGjGKa+{&O5x%rI!zYRURe)8UAF$__C2 zLT$|Y$;EUeFxK+>Zl z)tweDWnCaQN+ma=m#5nuEZSj*kUDEwl5jiv)YSxtZTSk}ez$dy3}iS68OC2_y=j6S z{ITG7KHtZun;=&|AqTlYYuOc8>ZceJ?(c#ms5J0yJWAP zV`UR`49NG&y&JI-Q?VEBK}6oU5+^gR@O7 ztlAY;u6>X9i$m9&X3CFG$M^G*r=6XToc{DhMQSe@@T#X9$PA5Z0VAxPHI-K<5za#k zLCweWFCAycH1%zgsWf*ndvUk4ZI11|4No?{O1;{dnKY_UF3gMQEJXmn>)-N11$+~I zj$_xaoBWC#t%-3R5I#hXk*R58T=)MLB?r{;RmYS5)1(|uI>vY1Ryt3zl;$N%Pmuq4 zR`%brq>u`<96qb-?Bf3(M)AasDVZhWxgsW&Ok;>kmB^LTCC!MJ%1u0Jsa|x zVhCRCG&~o4EaI=53$7-Ph1`W4h zynHNISw4~h^Scxo>t$^m23ji3WmGllIys27Z(FxTekT&@{Gsl zS_+^IrSO?%w_86Y7u&TtmV8_hxnY z)@&4b!)Mzww!~*6vb%&h+yKtk_Eg~ci{v=Q(@+^b$Wtt;!B-n_UZLM#;e+ELO;tk8 z2ylt<{uzz9EHGx_%xYd7?Z(JnKeNh-$|J7j z9&|g6;x(POSn83#=~3W(x)|r7?}VA3jEX-WbJxKz*8vf3*t8~uIXVe*^?(yB^SFcI zA+Bn8gZ-57R`pYFoVeGGiKTi8$78AbzLyWu^6`%2E|Nd#k@BK6lHzUjR=ewJ%ke~U zS#r-X>1Y3~WYyr4_lhTxRa1dh`I0!R!P@cX2FEM>{|tb^SiYR+(s1bisix8au^X-E zzPSeZ-BN;6cl1vF1*`h(e+n3;5NAV4E!o&9*ws@kY~>c-UI`-Fb(W`c!V|GTnd@bL z#GiPdJkGH`@_Vj&IX|7eb_l!;wwA`HsCqud5**9X+8i1mAdpzGd zFm8lCJJ;sr-vJ)X6H{K3&&<*QN5|pQ)s+rv<{!gN_>kHT_gKh}bAC-20nZ?wRfR2| z2r2`^t~?a+xZQ#GnO{Ih&+BDO??tUd=d64XNxq1ETbI`ps25G^XG19R!uV@a^tz`m zlBfvmO5M}MmcX@xiEC>!H;qEC3{HFSR*l@FVicviy4C0&P+imljVu9h>~w?r=OsxK z!p4W-u7-QTl-)h48=tqqISNNAeY%0;IB|wiK^M)5WX;eRNXg(8OEM`V?2v}~!3bKr&fP^qV=Fb4Cqcf>SnK9U8*SuKF$Afw}LQhr$!leY>-xil~s;r}tLLjK3 zAEwj&m!|}kCd{(}LM?<%q>z%Hz z2)5{~Q8;)#8S8)!3(yP!(uVklLLZ2ab{Aj4x6v&=n`VVuyx7{A4N~%T%*5wbXSa=_ zbK41nhPjIDOyo3=)Eawx--%Aw297WBb-+egN)@OMC8p))nv~h6A+ZEW_p5n8PW_kCvzt)@TX+$rodk%wSI4sOG14XMb72B0xT%9N zwy2Sqkjw#*@#jr6vh7B|>Op(QvRW6SGZZJPw@;XH5`ND>YGNTntJ9G8H45{tm1iF3O9M1jJSG{RRlav9b9{J;47ntzbgBoqptA&udXIutO%dX z5Sw&=hoImbqmY!2pQ4(u?<0ODJ55fju_zi(GZ8t-->0Dp(Hq$37RHb^XG6{Zz$9H1 zu`2@5th-DQa9kS&V0fC(Um;+W&cDKURJU;wII05u`Y9{ny87@joamBmc%yM<afxXw4jv$2f?ol7_x8x|M^>pzTbMAyg3)(S#ULw2 zKyb7?wnOv{X;~N}3I(a3`HT>PPY*wKo=)_za-kxD z$ruM4d?=!TmBM5&I_e+y7?#_VsVqC$D;FJag00%O6>qRTW6aCpId62l=peDUdrlx@ zw}?%fB^B+0fnhOk!Y(NRzOWG+u`*L4_+H|lTt|x@Zi9?$aj@?LO|-D)r^n<)01Ed) z_->#_#fOa(mx!-ueg}~){2U29T`z_GGTLL38VbH!*X+ zmsOE&94aY>QtxkLEwsGY<GUbM_6}=Cm-suC1Vk{?(qu{BwTelNR;(v zP-G__kg}FwIN__$9ImQ~3y4+u*OmJ&oVU>Lo%asv)U;I_@g7?&N@(f#@b7>GJz~-p zX%AHrFgBlWzQFjzsV6Fll4T35RiU`DJB5-c(N<`{W;21E&i55juArJ`>~%jmimfX2 z1XTm{4L*L7Zk!GL7{djO%we*q3%hfrG$eG)B+d{)%8^2c8=4Q$!XEgj-)tsgBj`F^r6VBxgOR^E_|bboQj<1EFRstwLv6Xu{j?FtAbzp8L}LLEWIT4PR%I8D z_eNmldfi57^KBL3SZ47cum3^(64K){o3+6dgU*~?bgOKp1X*;~1BC$-1erMHAS zy4#%9?7PILvt6!w1kZq~XlzDCwCS{+i`U=_9)`p*s&v`?i=ZV)#0%E&eoucNC$4%E zu5Vsu!EpIjgcM3?NF9ofy2&OqUaeV2Fg8E*CIf8G5REd5WWW{csA)%K7O5 z-HQ{7RW_tEjk1P}opwO-5?9-tcF-+JKEFEDW-444aJAQ_G}u$#xzhGRe#l8s+za=Vb-CeTJ@wmjZq7=@OBEUrRzADoa}sN z!;F5rrPsBu0^?ZCTnJku$-AOX*W`2I!P|0!QuT=9i&E9W^Mif{;w^_o$#Zl((f95`zQQ^Xr*stf~9~=?m085HS5!dbMVuCrr{TXQRU~OXO$6K z^w6o&8rl1gi^dwtToc$s6iZ)`m&h4vqruvFf+wW)?`8;XT^>=1I zSES9x*!F61QV9#9&7&^hl8#QO`z+p_O zS3qzd>+F{*>o={fO-@XXVK?ODQqUI4p4|~7!vB z&f*AI^I-Dld~OwHsy@MDfG8IIVMvu=#FXw|?-EK|43>n~31lGY^8Nuahc3fvX7fm( zczfEDnj$oP)^rm!8N;kR3NJbTZ7bSv&r1aHitq`K6NMFwg@_dWJ0PN$HfH%->)1^< zJf5QLkJjquzBL|B*iOh|=of)WO}kq2x9GJ}VrZ|u)p`p1Xmo4XuN}hYX+@ntwvkfT z!dIxPKRjDHbAaieps_)9*4JsYN%eHyM{MK2^qMAw*?IbejS}Z2eG^Q{TC;uuFFD?} zVht=qSVWT~rOx7a1iy67%fn;qYsUQ|*w^8De9{P6R4IFhw`n@)h`ms@+ z&C_JWf+d?V818=9MqpDh?8c_X{6IZ>L&0e~b*ivRg~Hbpkmj{C zSK-Vp>=S+D-JlX96=)%JMcHH-HZW1iqJi_^*V)wlLmQ6}iyFq`Fkb6`64bA@9WpLD zI{gg3OYl6tl5!AeU&#Hu(^!$Y-(5Cr;K&8OBK3EYUlBCBJutEgJ88&@r^vb83%#gc zZne_ID6zXA^9Ebnye{85mBj6^S1iIUXP1_gFQ)@O)FCS{YU%mHijGTW5 zfR1kNcfXUiZjUbu0oypJCG=BE?lr%DEW^R`ox+L$@N)BhSyR0sZ*^lu)&XZyuG{t> zqIKFfQ8eP##}%m2#Rt;*>YJ91YxDa0_|InZSYEHgHIf+uvPtzUx^%j1IvpKXUyYd^ zxi;7FDiynIr}LzZl1=ubW~vrBY+GR5QbjzIc|B>aB&vCQw|jd1cLN&`eZPWbA!9CM zF=0+KrJhs8tfL~H#cVnrMI!aE;OocHjxrdb)8I&H#-^Q00CNbGJBEE%T9KrD4Ap-2 z#l2lF=Q?U+j@HsGj8S~2o+5_woBY#V`o@M>q@(cd5?Y2HA!n}QZ{t1-=!FA9W<}q% zE-X#7&W6%|3XeAEXXWEhN!&-K#dR7oStzOm>cmue=2VW>k|w&<4#6n@2J_OJ3riqK z`by2J;SK){1C{h6vriL60WAZ*ET~=0;WZoGuAl@i>6V--FkPuafr>|{uEx&$A1on%*Xu#bZ%*IM0_#b56y9LQm9-cSfv?kELb5~Fb=I< z3SX~Su+&|w9PoT3m|hX2Q`;yKW2-6prbKhvwR;KYfB>s~bHQ50N59`D_a~D-O1W{ID zakYka(R~FbM@o8qtV4z84Szokk%zP7-TC3P(7t0+@VauZFG=2l{_KY^Iri9nCN@;p zpZv(I-ka4F9S=-byxW@G4v@;IR$ZJbXbN zTSPGS{13EfSa%e^zR$FN%|F$B>}Vpb@CRkfRtj~~EKdpJ-UWI!PUoo>hrjdsFc`nS zeNE&Kz@@-qFEIwCX)uX3;e>}UoiTiuCcrQWH4BTxe-(P~SWuPEWjH0kCoihAT1(k} z4QN~&2(}=LBfKR->>2*JhZ5sm1q4rMlVjyPUQwK_Hz#(~Uqd|?q(?1HJ^fOjN|KW> z%avh+&nVBRzumpM|1<1v%AV~Ss7kKR1MoU=7zkCVvrcLW|JIrN(`{K|SLE5f&*2JQ zLZIB8WQW13!m%-XQH5(tamZe2DYhqc9i*H3M^ofwXTu0}mV=Pw)f_Ik#*^63!Va~6 z25nhT0Z4NS5_o5-s+xzx<&u2;OH8HT@erGxYx1|DP&jPmKWiHLzx7PbJa< zLrdKs$D~O`nuPmOxN)L*rH zd!N{_cHy4X=w7f(+`(Sdg&BLmJM0Gtf5_>qa`X?yH9P zaiV=pa*ingU`&E_KTo3EB>&FRT47pBj4m!7R*UBJw>U2J9fNjffhA3&g05WXMH{T% zZp<;^-!RYDB29>D&M{-ssoq>}JUMw1m_Kt7?fu>XT^#`}eeEA|>eO4J$;uQjD&F^< z>nSLz1j2FP-iVYjRu~OKAKS%+es4<58BC^+>ZAVC zofiGBm&&8AzpXumhOfZ_U{Y3ey?Z2%7cJlso$lYnzzT(Wm z^;Fh2V62CJ;muy%$+26$fz;gij!lHk=`EVYtqsae*FUR{0QYHz6n+-QscMmm{?d}x z0tsEp)Nq6KjUk*;J(!7Rcy62%PmXL~7XO4pQ|jByf`blEN~&!0<^{RY9L28#@-_a- z2>c0x>%?|J4{;RMP#=$~RotT&1jjNKQ{x%p&dWb$ynriB_RpMk zX&doVs-IQC+jb|})IBOg?XWkYWp;V;I=kv$pE5lNI!uFm%}SVV-Ie!EhFFC-Fk2D> zevFDTM0{A7EUsC39Lza*erF6rp?~u0F6To^UOiqV2*YfFwpadciOKgzY;21*b7R9k zb9vgxY&9xx0MGxtDvGPFFCn0YfaLA2?6$wA&|C*>mrmz5<8itZHT(xN~_G_56<0c5c! zGfl>z0wGMwcELWJpDNN+#1Y#6pz74^zyIjqz5f0f3pXvnIxiXvdDJgiZH^LD+4n0~ zFrvulRdtAv&QETY?_!0#0ZtdmDX4dnT(E1@=G}{O3WgPqi8wl~u|zoviN8~c`nBfD zk4Pi!u7nMYE8s60r-2@)u^|{uA)wD*I99tPMcOy6ek_AaA|yI#odnSXC&3t$79}cd zWC~+XJ;W3kNv)wD;e5orvyH1s6yzq1QhRQ}Uf-2nY7x^FL2#u!cQ9({q&PQ_P3^gj zm;CjM>fF8gn#SM$HBXRb&4y#oY_yUp!^ne&c29!eN2>YmlW^S}E1|rP01PBP4wJ0H z2wwAK>4s=hvj2_?%yx{C&$C#^jrChSAeUJ(2{pdBuMwcC1-DJQHb8#a9&(()QiqQ5 z4G)|{2kgiflDLIC^ovOkp;Ij9B>D*QiJ(|CUcv~fDuiU;-?ZnVM?)}G-6ECotqKWM zljP`)m(19S-o;B3v^rn|u%HLUG+B;}10|PK{^%4Y*PU-M%f{%0FCDmxB_Yo>FQ0-H zh|wu7H!IOWH+$do7xF9`TmhXIkc~37jVVm1znMfoPuAot(7Z!09d55pBCuy%b8Ix| zj$C~NUp?gAAI6P!zF9-`Le3YkPRDk3Fbz7>E^M7H+D?IPt zmQI>*HPa`2QA7BGs* zxw=Q%xs?hNhU=dITqAiAW)mkpHk@tEU4Ygd(P6e6y1Hvk*a|-VV82(-D$3I3e$Viq z77g9Z8IH^m#+~arw8YbQPcxIP5gyE@h_UxeCjuL}-x5@ChRSs706k&n%nu&byfuOw zt1Coxn?%}ABAw7(UP`R3wL%(M)mnUT=k6aQlKgwAc#XY)vs;=`3f;m^gliGsBka}0 z?K7X@$fZ*@fgh60=w)SIO%a#G`(ysUhanMdX$0L){T<$6>0W(#E)&AFBU`gya<{H^ zT07|X7z=t7DR`OzmtUMvN!)Z4L(e@2=WT7Y#_Ih1!z+HTr~%4VpL!isX&67$Bd<`W z`IyUJQ3P8+U1EOg*8DXb(off3HV=12=Uk>Sg==^B8DA=_?kY1QYOP{j#>YRb9l{dvH9d#fgW01>7_(!J?&294WM&2V=*5+oYP!e}+Bw zteQ^EtedgB5+>Z$H#=ADU-9z|qYmRvfniZ_c^gazQcf(H=w&ZyziF?VjBzQ7iT|0v z1aXxHdG5WJXz%?sg(Kuk!; zKt}b>iywa-@az(>8Z6TqQkurItMt=Jw$gx`lS(-}qf4FMA12j)oD7|D!c_v1WRQR# zGkY@t@Ey+(#S54Md5M!aGVH$R~*wk|mOwS;I%WAXMrmuGebdIblrds+w#cBW>#yh z&z;ej{8Yr55@9ZCu(Ro?fzc(eKK(3wcW>M+B$_~F&67eX%*Qs(nyI?6yQ`8`as=iA zI4Ti2Y?Z%>inhO&uSG`0uPse`$3yM5bw`c69H2lqDg>CgrF~}ied)`69ti#c>;(<~;8&6Y zGM=F8IXVX@8e5`r!6BLQ+(6)TYCj&1UL$iE7(TiTIeE^Q6hcvvMYS)ZOE5K77CVMc zuKA=}*|t;5mKISHkZ0ip6gp!u0o~c9GfJaYN@>B{n{Pv%Tpz|Kd!e;tim1LzV4s-c zLjc{vcY#XE5SKMY+N{FCnmiNZ=#WII)&w*oYzlRmERDrKHLbx5@ubR?fB>T1h%?X_ zC8_L%yPOGL9hNeT>(|?Dw%JEvxafhMD%qmX zEK1oyaCyg%1{PjPur2%M-gb3J%QWT*02klW&bsvIS}0kRAxx7L^H=o559pQeADIJfv4a%t|L*(iIA_6};8Qd)6~W))TPErc-~#y2 zH1$=d92t-@Ju_z4=LtpX2lbQGV7i{*CE-V%U=zOgsYlp(&DezD@_*Q{6-FlTfft^` zCDGL&&Url7;w+?u+Q@8CpMm7xtXcx_z%FE$LjwWGmq0DI=NV zhvKkeKp9wcrfnG9quy1T2>Qvk06wTf-fH;B8uUbJydW%UE9qpBKaH7lqW*kE z^W85TDV4C)NdQZb{xl$#u3A=(CVWn+GsDPS7sohN8B@J985JbFWXH-5AU;4U#=s(L za1E28irrx9Sc>rsTs07l)`a3knv*g(+c0 z&Z9(T7DiN=<-&@w4)mNRvfUaMs)V_x{O+@vaBxff@y{Ub5|QE{+2@T}fBV`U>kC$- z(h*JFOc%DaB!?QY-aJ$TFojx(M#EpFWqG2|XC&T$E4FaKDop+AtsKVIdh;`J_K~M@ zP&Iz8HpdBzpyB}Yi;$z5Z%FZWDncNIf90|FMldRNIjni9rKWC~ZAuHU9BwGk z9sO3Qz!XX;#zYa{0Ku*XArJ*;uR>&`3QUfFBQ+Avwh+WZSFNxD3L6S)o2g_V%}Vm! zMcL4k`rr}A7m0LJbj&THkfoDLXYnm31x@S$lqf1*r+cILEThygQRj z)-9c={ws?0m-T@prqHu6(g;vnd3#4pL<=C&o$gt*PXhz;Qy@4=1MF52Ya#hUjoeM% z{=8gntOtYXGq&v75* z;?isSy%AU7mGXXyq0HMn&sy#Ehk3@fVqA84WU$EvLdcY~AZI}V!Nhd|r^dnTCXg0p z4KrGK@q|zkXwt|fHuRQ7rj0v9(5(AOShZz{5m-ck0fgnD>gdmMI1d=yx-GbW1T@8r zN=hC~l4)bL0gA{B#>*4_*dA1Z0p_exvgm{I`ihfEF)#(3$i!p_m;~Fo{v_)0{9OOcf>U6*uN(b?2lzp{sAe2IY$(Rnp*qw&vCPBX<5LCe=7#PQ0Vy|5=4!cK}sO z;frO%d|sAAy(v?l`J1_y3g)C8ua^p89c+2@U#Bw+ z(XRU#$NtvwK-IcnWCBawY`)h1l>k+lMSgtdWNZNfkaK zM%O0TVpf@%O8{4`$K(HY-u?%E%qRg356YQ(yM;-OGNq#ziQk6o^R@jpLi)X3*+(jM zHWnTYxPi9$@R2XKUwPo{TWC0K<1n02Rgn3;pqzY`)ZVV1k|F*3S*~2zEgaP~CxMhG zJAu53olK@GimGYR^>l9GkB_u(=&|ik?c!N-BivG)Pv)d09 zglO$d>LxN~t-+i!y5BCOIFZye;S&YpR>r?kfi5NEW!N1~&~>~%(mkislJJei;o0Fp z%LqEDI)*d#QhFj3ze~y^|^{oxg)*?{o~@`v9@7w#&lDHwz9SJOVM&raoV@MGR%D{ zr!%!ws08j*W-&QE)1QWnncZQvdE#g5RtjA+6e-;Elx9|i3F1p!U`s(uB~;2dnh2QK z-xyU?M8SE7(dP2biJfpv{IB@nj(eAwfReV^Iuc(DuE)Wd0(funnt6=3kHO*z)oXYS z@!Xfvk;OJk=Ii-8go#3V0p#11-*!2~+w;SnJR0@)7d(2#wC;GEd(%m`iI#l_0#f7q z_*c5^mbYvH>uXT#2IUL$P``d+b?9sQ9GyDHF_AC)rTB%m8uRPn#KIiVzMkGZ1`hI| z8LDa6kHQx>w|7~;M0ADH2DKfxKg%!A#u6(ACV=;QZv6k)qunl5- zM**SZ&PRR9kwE?XPRF2HrW8w!`4GdOY$uih-w2kh)N@!tul>BFj{0@s8_3 zd`r&Aw6|7o@Sv{c12r)eDcAh5XKwk8gU%0YLPm>$S0#bg=?=b-H zxB+|xt`pyYj(>meXKH%pQKG=Nb%lhl>|q1akZ-T-Vdj&0h$pgBX6)?wr=h(p9E#(0e3B&4Q z7Q?(#+9WyVd*|%FT0tBqDXf%8eVlM;Fd{rYoy%XWwvkaj@hc{$*m$p~O_M_cl2|Mc zh!8>y(YKoJ;RHv2q(kKu4FaGw+-dY$EgTrn0CvR3LKTsHY zL@%bpyB)xV;Y4yE+!gHg_X7uo27|>%;U;yF{1Z1zlrJJ2no~53u}o!@jq-mtr^e}( z*NYmM-eQRP2Pm?2@kR#rPYU0z!$YKJrf6pYBxi!KNZh##K8~3FM7tn*n>kHNuw2xc5+PmF ziOmbCTo_)&>My5S-_0rpd%+qPZg?ALIEw=JN}E4Z#a!|6aTxirIc~;C1}+if^}-^h zckpmqX-U+D1+4_*;0>wGByQhDR;21m1c(u-7IH|r6+KKGl&bdGfX9_QyjmXcai9F# zf$2O|yPPCL^S7<#qdYE;F5GE)OolaRMqe9I$QdIk^1~#oaupV$uFBr*ajAS7u7HvX zsr2x}q<^2r_{@?ztEvRS3kd5gfePCM_#4}-i^Bbduw`$JQ$=a=ok>Ng-`dkx8l00| z+bTyA*@l2cB+J$$co3>S{Yei5i5rq#nhqG=c&xs&ze(!UH72|lEB2ly)!ph@I+aOQ zOU|pl*8fv81v!?{@Rs2}NyqjFnSc%Z(Lqe{N*y=C!y3pyQY>%fn=lf7vKQM!)+pfbbGi`m6}>5~qq^9Gm5R z;ryi>`lrlOSj0Fo(q5$D*G0(VvOg62xqZo)C&t55D?WkQmpx^NMbL;7U+_RGJ2wFi z#Q+q?Um|-gKg=@cdt`6$B#SJPGLjM#0Q>9M)!03uPg|W4K_Q_Vf3kamH0{s6(EQ8^ zD3nLkkD7?)$&G27M_mda?*?B%vmwDpD;~ulumzlfRah z{thzq^RGEL0>qZvfWUyXt+ykl{RPgaIST9>BbN*A9DoO}@V>@RiB4V1xnyvy~l$x z83Zly;{FFh+c7_Vgyc5VFWXRWiJP`Xhn21zkBa4B@YrR+lE(K<^R=E^`Tt?;or61x zyKv9gwr$(CHL)?t#Kwfb*tTukwrwX9+s5X7@4dUXw)R$S)v43n-~OwsRdvpJJ`YQW z4zVeA_aoJ2U9px5? zDMpAyosBkZHS{P>N-UQEq8n-mo*rb# z4>U>2REa)0Udxg1P8N=C9*uSmZ2t6MSL1X?Lzf!kkULZ0 zQ44?{{pV1ra-W)$OK0BuRg?GDnMD)rzG;jw(RBj zaMu7MX@_3*JD=@Sf%$C<<-X(a_)EeFkJby|($_ZkGUM-5@YI8uDU0UwpNP2I!Z_@p zA9vG1g9WruVc05@Z03u#iig?5{@1%3+4KnIe+%vZGQsC#75KHK_zTgKB$!+O|Afl_ z`p^dE(s-s{iL;g`G!9Z(HH%ng+1032L@!Cl-N*IIAE6l7WYyx z4#5xsNmAkYK%_$JAU1y4>6?-I^KVFKwGo5d4;#;lmVbs*cp8FSA!~OQbS|WN@~Gm! zvCGs?*^^XnGgQ!{F(_H0lF5i8)Mcw?t}V`z@|P0W!;*`bkI+E{xfz(fvMM{>8}jYK zBj5xxhPi@sx*E;%aT5sSy_l@Uexa%jH#MOHWW=%xp!v#B&Aw2h2AWNIL@^%=Eh|yV??Ab=|@)N zF4=Ice%lnFZ>Qt;u$dk$ui(-r9B(%CT63+Oa%n#ZU@m0XSM#a(Aj+Q?`;?6kqF!LC zgncdb=$A}^+5f-PKkwyMwTg!RfewRbmj`^dPa!4YQu$gWF7PR_lZvcTX$U+~tyXIb-PF;6-9fNO7BklO~BL$_B0SW=#TssJpL^ zRslXik0;W_S)8lJ$qhTAsmYY2b3He#wrTb7kJwMXfUq)+rs!s)!_BVc`UfM3c=~iX z5|bm)v(^3n<1>5vYykLpscG4`7W{meK@{v_3>7-OZV}x1a(o|n#{qP1eLd|F<}7%w z(!a}GsIiEI#>An+wkI61@N@&7Z9JYCwz_3o1ijzBezkuxe;)mKD!gE0e!rZW6i>D- z?-bj0yASk$b9I>wIBwdPs&I&vO4|R$M?n5Ftb4)5QZMP7z~wvEKFgKV(6@pd+z?W@ zPVLDg3N?0<#5x=o)J#pzNx%!=N3m6Mh6m4Bj64-g*1ljq)}7B#4=(|b3>7r@m>D=z zW8137MBtrbdWqr}X|R{igBs5UM>1t`&s@l^c$-95np3laVI9uS(;k@g8(vw)`eUxX z4&meP+}ihoB0B5?W|n7Bsw_d?u)wqlPQIjtUry}CY?y<~b zl?73KZfq4IjCTZCY+=)HeNsyx0J@j4V<=Xn90%*!!G;zp(gQ0-i$&lx%(tzn8^qu(0FJ{ zEIPJGifoUINn_lhs4+H%hw#x|q;jbGT>{9)z2nsx$gYSx++u}UH@)ExWE)23Eg`}T z9|D4hEZ*GHi^>4LMR{jI^hE9MNEoh?mc9K?a?>@{gdS7i0i2~tuVRp>kV_j(M(PIq z%IHSL=898l;ermhqu`+<@_9Z6Rfv`Y`+kGAR}){klS)DAsWLa*OA&#(6`%rMP;J9s zzUL&wEq&G^SHM_$I@61esT751^-t32haw23#V5i6sd9j#pS!I(+Vl!bKWvXOXhYZ}@e_O;l#TYY*qma`sFUE*W1TI+B**G%?p-**e1XtN zODhf0V0whjfxa!~=dN1RI#@_k&A8zta^c6_kl-)_6acf%bZ#Hr!$IJ{n!%TBDtj<@ zy?6RJZ(=eOkN7~O?+8#9qsra=h6VEmc&{h=(0~X`-2nqk?I%6>e0rxt%yHRUPX0$A zVQpi`cbw7t1M*3gaJ$vi{^?J5s^#W($}RzZBlf&)w9t+HcQ93@Q@>zv3mJWDT#>C) zTyGAXoU%77Hq=8mD)f|d-7A7quN^-z>Ar#^g(u4_Pk`j8yyHbtTMua<;veNMDQy-L zHNdM`Nk^lzpe@~s)C9a)LNa16pRl$qTSgV8##R{r zN1sGS<8KD2kVg`Wwz;44(y5fv6Zl6A^ok37;@T`2t|3Zmh2#a(DorV}vTpiY7Mm1F zk91S}&x*{XUaP@Fgar#~Y`5$9Xy84h0Jr8Fw4S8W0!4Jv=# zrl_b9a761A5GNP4%U~T&I|ev$s_RpRFlS?Xtzy`Rs)Fs?h9e5tN(Ss!l_Xy#0a-;_ zw4I;itb|rFNa;3w2Scy{IZXX2_|3?Rn%$rGBsfwsJLw9=q5k{?5|OccH#zJ2pQ`?` zY+H&Shk3vH)O`;8kkFA+3|>_IAz%yygbXPvKF^6}JZXT-_A5>i25RG*?&+*(q5a>( z@tLgCMoig|TufRAa?2gZb~~1F0GllVGH2p5R$ev17P3p_*QgRn`btGT>sC<4(~6N>?Au}UMpdIiLA zFMis~lLtIUMj)(Mvu*69C$K5<=r$~DBChEE&UoKT&pPsHJ^IdjWhAe7Ny!UG{15n! z^QT*>tOk$%Upg}2P*=z9-;Yf8Kj=Ga!^wEQ&L4HGYrCGaGTMpty1*n@)juj!6K@@z zZRxjjPpUIpt@_{G3BQqu>hQx4+U|HU(;*B%a6bM%mYi4Ye1nS_hNPNLOEu-byM6t809^j9Zy;n0k3YG6@keO7F~76MO&~Td$3o60FZJqDjKyci`iJW-PBv z*-Y#nI}ZGdk^6~}C^XJIha8bl8)^ya_R?50<`hYJyNEDybJnX+w%nmU zBVNZF+;KOSe2%P{UuUMjKc}>=otb;??RusQLh8TN$fn4UXkUapN_bB27wL+im*~{_ zwmSitr=57bia%PUaNG<~yLz)>Xeg;P*9CW*%p!9Ol;1on*V@TTvlOyh6cbmI=<))A zgwMo9m!0?F9)cLojoWXW3rkohCu2QpK|Rsf<=(C7L1FDR*YEC`gK|$sws;*B#{)vh zuH2+l%!j>D#T6Ym$}HlM%L8`Oi`Hc{vMPXvoG|-r1)Yb#T}J6OFRdA#W5bWDT%rX|Py&0!5><4PMYhR(~Z{ z0U67jgHl@aHD41nAT$~0tRQ{!{l`?nzi9+}uRRqa^np|HtDYjnzp;&vn+&Er64U|1 z0m=3maTo%&D2%aFc&sY(IEN5{)FOIF)Z!+#5{kHsQmmGBV!_#>S=M2SP06E9UXG|C z2;Nn7VsQ}=^;!6%RWgtY)Q>`x6&El%3c|-V@cOz`V$^ma1(+e5NYlos>ApN?oEAfN z_&U3+lB&7(^VPX_ydkku^y%;2kp?Rjm3&$En( z&@5-CP{%fZ6;aGU1QOTJ{w>C~%y6`smq8(f7g)k5S*Af!LjvWSjU+A@GBlIW>dJdm zZ$?R;`jjy7ITrL0vmg+z9P1smKHD=k#ekqvS>uqE*z$J-TLlLIf$T0$Psp}C=gHTbt zOP1S=t2Ze&+hFx9oYA+7)Y4_v%$oJZ_plC5m@OG_uobBMr43m3`N5uAn9Awzkg6Di zjI5B(3Yl)$K_64EuefPJ!CE7m<_YAO_7Bd)Y-AoO&vXo3&DnI$DhanX?k%%Twtr!dd<^*Cp6VV>x$+U4uSo*Z5v%t)=J=Iqjiur7f?yve&EctSwJ;!O_1MS~x#H?V$T>d@-$v z{{)98E3&x}mogcE5bxR{bOMsUs__sh040Xp2vQ=K(k_lVnuN&bc z3;|kdr(r=jnq`)>X}7Cj;QE?@sQCpEP!X{=zLV>~l$rtvjzpZ2*YR|`d{g?&HMVD) zVd>%Uf`>7tT!%Dp8(uplR~!yaiZ77~fS^Nx6>=Gbw2BxlVGM{&NR0k!Ul-qy1G%cF z5(x~GBNhpevcM)aC_o^cUY*o1U@@En39y=#3Xh}}U$f!buyecL(Z%L?aHLNp)~3r zY`;jb)N8^CBZ$;Mo=Mv`KEZIpTH>DC*sz~dK>7yc@A14Z@$gIk_-vjpkzE*#9_zw^ zZd%=%iw2yh#-BJZjg{(0s2V24mhRPy_K0<$HdN0>*4J^d67o4XCdVpC&@sMZth$k5 zhk9ha=e?!BC@Z$xwBeno^ZpL=N7iUN zkXgJiP==G}&@r`A`h%t;sxz9=X}UN<;3l#{rMX3FmaQn3< zyX|U)Zd2^5;lwDtbG$yvhsr}7aiQzk=ZxVO=ZtaGVqr&{EXSJ4jO? zhQcY2+MhsSm+<)N_d74envGO==S=lZ14g4bgZyIps+M?a=bBe;mml-^!wb62^$s~e zO>X}^tIj^Ly3U@$5fcXO8+PD7jDTBdJW)!5KRs<35*9+(RqwCqua*Q;w~OC9jY#sZ zo1%?7@Xn0cPW^X2GkU9kiGifqM6y@8!cbf^;@(=Qz8BC@XNg)yG78VjKcM2;ta-(E zfuaZqLe!JnRkyP?=`~^8XFxyDLd_}x&~nLA|000`6tc$Hn<9;^?o5HGI}d7V+EuIH zpoo&Dd{x~b3O}HTOqog8cP^T5wW1QHrXeb?FYzCE8_muSFFWlu{$aD|5{3F--%gO0 zH}^5(Ridw;2JZFT;;Aw{IDVK81v7bB|D9bYhtkOEPN{o}pa2gi?Xu4`VSpf_KvFyQ z{zXVo?67W=+57zxK|X>?esN-8vNvU${>SO=@{8~m+P?n3)wq;C17M8*%-At2!_fl9 zqBkU-whj8)q=i(=yqRM~Sx_OzjC{jzQv+-a8*5Ga<4et@Hvl;ruqpXemc(0E3J~y( zRCjgBEq3IYAIZB1B^`uU*WKPze~o`s7!=Ql(ElO3pqjE7r;|TN99*9Cn9xX^Uc7HH z=uIW(jG&f3oJ>(<{kdlPcYi7{u>#n6>F6n*aBi3V#0;+O`5OZMwc^T$TyP4y*;mlj zqsV-SYE7XE0*2kw^L=6uBl`^54IavrhO>tqN|h^ zAqr{OrN@@x_kBPRxGrmHHDY-jMm-j*&h^uVxvnNiw0ZDFD8XCO$c4_kh{>~%vK(xy zHxN?Tf85i6u?)2b0Mdbw9wE&4_JfPN_AGHsMNdLxk*WqLxf+yZUlhSQ7L`tX-!bp@*IevQAzy#s>zeg>i7(+!--S4YYPabN+$Fu zAp?q$$gQ%6_DV1|p~(F9UHV(@$x|rGfV-ae@3tN@q7#8)#badvh7I0MEy&?Q(9lc2 zL*H2VMR)zN!7NO1s>FB~#2VzO3{#*YaC?z!th$CnVJwEvNcXo@Xf0UE;9q{9)pgU$ zAd!x|*VCB>9)dd-g5i)%`{q%C7?pP?M;9p;m<$c^B>NEK%PO8|I)=ro4UlH*g})p* zQk{@$TP({KRWT<4(1|g^X5Hu${HD>xI4B30!3sKym8&srFlec&#`g#sK0_G1B`>KC z(loJMr^ieGn3}Fi(>BOUQ5t* zo|?)U{71A&|F-aUk`j~AnZ=Yhv%$=O1Wa8bgtBD|7#Y>#Ev~9BT8H~HQfWy* zrcTxLz7mQ)m=cbDcJCmz%N+E5Q8roJknRCg;f|kXF`)`$B!1?66&_ff5v|v!21Wpi z3k>ZWMRu#Z)OiX|5YuU15SPE4RWw@5bel0??WVcbIc!EJ!2!Qder6s53Wf)B3`Y(wpspmo1> z`y|F!g;VSY!Mz&L8escji<}v0rOrHs=}a?Ld0iY6fN|=&2o!ay5G5uDr4%ppceopF z@4Wy-Ox(f=n&L-T&a8|IwJG9kXF$nLRhto6huWB<--gcg%{-w?5(CyaYY@&bC&CSp zm=dX%|4PwWUHsnW%^$7QKkymiJX$rs!4<39@5i#=%c?>PHm?GCmD}PV*$1Xr-YSeL zJCH2`aQM?fR6U{RBVmEqi#I$J#s84dDkT_(*Zji=5|_u8J7>H zNf~waH)u3P1^rMzn_D2HA+ia~&Uaj}Sq-}qm%)H9+*Y535=x`|5x>|g)n&w@r@PVS zw{xmPv8XX_Yf0UG_%A57$pV0rI7Y{O`>#t5x6ILLnGP*ay3F)q`cgYDvv{Wd^Vr?c@2( z@?mY+wio-v^1^O_lA5N~-vfM%)>Z3YR&(E@cLUR);47wS>t^8gyKW3#JE{e8DHC3k zfWecw?pD};hlhz7n=Twch8e7AyM%&ZRF`-mOpgWl9D;P1Ut>IOSC#O!n@<#hM5G`x z7;79^*D0>>IbD#(8+0P6aRXl;l`(4!;sPk{{KX7AyF@CyOOz3Frud#&Sa z?Virk(ZO$+lm1y9#Ur#}V&vnwscMd50WRenMBxUt5YGWDsAh3Zg8$s?wWl9ps8ktx-iAve#5Gdc@^FG3+L(?u2?-ga;Gu|WeG3J2Z!`#X6N$CR z{Q>4qyf;*ZCTk#ePf;k>w{Gk}y_fQGcG0#NPM z_>F@$`XKt3oG%3%9tE%>)Y?aj-y8Rpthmt#KJ8aAJJTT|2K{)sELf%0hfe)_g0K$} zZOE;FZ5MkxX{w2_@ne6#(dZwJbgq-pGZ9r`*{}Eu22fEGZ$HrmTeJe&%Rom;S;-ip z5d+&X()SYBJa@8pOC_AvQF$T90k?)}I}^)2;9n2j@Vb9XCIDm07?w`<+L+t-`tuO2 zJbHga*HVq_TRoCbZ0u6ppKv6IDz(%=?7>goLG0>u;5cP^)~ui?R7*3L*#_gzD~nb% zZeGoqGZX~18J7;xFIhP=x^B+Esz#ZYhMf!TAk96^G8%>#Fk$S}ky`}|s)XkoHSs+p_5C*DC8#oN}@el_$NS1_t z^u?Zlq@bBsHmQGfOma|;n8LOb!__(tY(|;^FX5URd?q6i{~Y&EJ@yvBavGdZb(vb9 z^1(4}s*}988UBFnd#SMR0{ENU@nvS)J*{vS%8yUwH5W8+PC}Rw!xDIGaFNrRVpRRS zo%ca!x>mU;pzH|vXaj2+m=xsGcXjM%2E?{kn)?K(y)Nsi18!})>aA^p-g)${^(;o3 zdlqFqYqnGZ@)_qvE4-{ku4^b2}c z6SUUF{huYtPXs#x?$T`vt9PdGH%1vX{XFzZA9w328VG}JXavJFBCP3eHNInAZXf-_ z1i(5L?A1;{{K3uOVW|=z_nLm-*Qg!4bb5hkIzw`l4fYG(q~FQaqHW9obH230h?(00 zTwYkS2`^jznwTgUz+Wvfft2sVW@6M6SJAH)mXMSuI&{f-zIF>KY}P3x);yay;%F() zo%zFiAV;v-*AYcrHwOBxOI?_j0UkqK+<|jpxyy_>9nO+_=JGr9GCjo+5-RalXG6LK z5BR#wewoUBDNx=mv`MgFKO6ky_wuJME2}K7{gv={;pfIQfRMCd&d2`K`4xfBnwF!( z6yUM_Kq~}VZ%x~cwaG7ptzV??4vNOo$e^|DT794bDFQdAvbh~a@fatK3Zw&>O!lLv z?#9_<&sWcMZx8;;dyZ4hb+FOX2m+3ubb!3h@-tk+BMX#Zh%e7*&;{p6bt0K<+V{!w z#H!gk2v36v@Jm?EwWK2pq7EbLK^X^G8nPZ3R9Q+K&9YgZ85lU|an=Z2?yE=}bNU}s zBf}z41Su)Mcsf&Ing=oqe#d~S@ADXHt%DTJ!V*S-unqRw8oG(rL@%XVSLe*z3e+Hw zH?ub$@*e^#ljQ7CYH`rLF?+!<`|h!kdjZbt<{0kthtJzYdcUVy=Bs@|ph^gurdO8v1NkU%wG-j!_BKpLo9hww{qT3?KN!aC_P zB6C&XdL#z~&h3z1SIzjlcxUoz)z1Cqo9R3=l~iSE0#w+RJ7V2jMzvf;d4iSqI5P{z z)1<9nmmIe$N9@W2NdRTe=53ZCKx9}_xt%8NeBcfb#o^G|jg}EKdSFhgw+9%3Rf0!Z z6-!NECU@4=u8zR$At?W5uQog9^%R39y{BV|s$^NAc}PltN3xgrpzSQ>BN~u1n^Yjw zH&>3vmMvvVLuL!;QRT(G$+o7a@v_43oOqfRi^oOlIyMI#I@$U2#-9dym3sVbV`-t0ZBv}3 z1z5z5;;9$7>}{R%2Pv$WqC!?o7fe zqiwpK;h>_8fuod^vWdlBwwek2i{!Txgs+NDz5tgNHR@XI@1zu9eyxU65Lk=NWZ+~u z4>vm#vW0!nMxrWf5sgU`6A=wCfWzd2f0+ea)j}g%>pYtz4v9dGdSO9_a{~#h#k4Ow zzUW3$2A2AnV^)cd#W8FgNf1T|K`e=lNO|^h_h4<@W0R(qwJ((kMe?+_ikaEzWI%JS z4FR2sfpAs}eZ&sAW5iAyt}|VaTa3x=IcwwmF(1M9vRSC+W+t&Q;T(lA;1>Acz51=& zqHsSBd~n!>N62yjBWK!ce)+gsB`3zY4c>r}B}3_hQ+Hh#W=3~dJ%gj#G+jp)AN*d| zw2<1m@MI~0QlkX(`|a3;$J^V<>3#3);o~17;nA^RSJ&&v(rLzqo1lJ=rP(rCVf9lTj`Smnp!{eRe zbN}@Z@!H{bVyGDv^c0N!& zVeLc-hv4I*9n`-Qz~M(&CgW}(cMP4t{BqouVAP{sE>w^PBG<1Q>go*A$B(hHiCj}M z-|XzJ4)6O9oQgDsnQqT?1;%Q?SFFBwHqng!_vhQ$1O3(U+tI+g*46PrHq;L+zT4C3 z^UDij(%@%mcBG}Ir|pw_>L8AIb#&_$4+F~L_TrIO?jL0eVAQcsuJ_ru_J%E_dA4yW zzm|&*x}qj|(184lCZ)$x6JuGk%4rtUvRT_N7t)_Vz~kj)uOKAmKRdHGd3&M*A;F07 zgg63hUgrN@80ZfPLWCv65TNslY&9N4C#}YE7;4o;E|ti|@v{UgugiDbZ_-9lN0c3? zuiak<;H)g;V1%IGFQwKDd$Au?FdIa?lB}>f%9H-DH08cz85Gm}^0(>QqO!CCPJ}F- zKc!Kpm{{lRJbTgb;R5afuDB`LVF$Nvwp$aY$yzfEJtC5?7v%>dl!8Y!t(u5IKH)DW zK^vdN7SLsO)o7abTapb_9OF-fBQQW-2vysD+;|B~lJ%KBZ|}303Bj%r85suyF^ONr z91i7CHZ6#ooT%(K({GqK7Xrh`s)O>T$tick4vC;viT5c= z*Hc2#TUeB<@|{%ws4zYw<)FjYt6i$oYUy6} z*7YhfSh`*?VkgpUCD8~cEw1&Xnl-~OgA}r}M8u}r*||ii;!vN=M16zVX;Fo}N*@BQOL@K$35G_@7f0xMIfpM+A z2&GnYq)kxdc2@cg%GYb4owvTUev7TEiJ+)=o(4W`WxJ#TdTO2Zflk9URZP%wwZ`Ko zgKdmrZ*Pp4xr@8!l?Qm1-bb4tBQSzCR)5*0)P#QkcBX+A!un;|ZNIuZ?{E_7VZR>h zwiz0@f}>&DmbnrpI6$NC=g?rt z>Az0dFWG>-Y%1xe^D6p6Q5s};BBCGnD8%uvW@Q!z3~6>}`2=7~WN;ysyWH@4Wg(@> zwidX^Y`})6F+dO|aMO$7_6p`y>=#KLKZGDi?|`s02NH!zfa}Vc&Nxbh^+zZp9wZYu z2*sqO#e=KD7(gFc$~L>br(9M_um6hn&_eKe0AsZ;LkE#!cz(}hzXgLD@I|0!0u?1Q z#N9SLY_f0XK?p#~(BlTXOZqHgUd3N88a`=&G*D* zeui~9>h--z$OC60T=eQ;~vab7Q9a^a~-Fhqk2juqvdK#V43!Ein=e(U)mm4}}T_i2Q$ zZ1{U$zyPEVE^g5g0{wLD&e?`_V^46$k;tA>6hb(c&1G~)&bxdk`r1r?(IvISJ({xx zYL@;v!-mIM@5Gj!h(FIx2Tj}h3_{alN6<_N4zM(n?TaLG~ zXh60XHUtep`re$yvi8hspqx5z6ei&!{gX)m4h^6YtRO@CI8yY2MX=O3`3D*EZyaA1 zIBpRg!VR;M?Hj_cg+{W4Y?V_A-k!qoktUh~AZkTq`E(;``ir&VkKWvtZy*&X|v23M_yIWLV0s z?k`}-pI4}NC2lFcdVJh~4wHlan;x@SocR6xp#SSLzTqWaG<}SC>LAw4aa54}AP416 z5&E?x@Pl=55XaaUp1CeKRZ~>1l9*x{3EC<&kX@`Fhr|dzt~OXoQbGnsvtxdLNoy?FQu2<8{xfxe#rl^z~v<- zpmWe5{(npW0iDo)^nom)xUZk%McfjtzCCtFqp>%@qY5-AW+9UPWlOnZ zDtRIjedXiOS)#^zdk!7($HCS@SFuvs8HWG{>Jb5)9&B1b;J@0=Kmj|5x{nT=>G zzrEcQpYS&Ia3 zdGZ}01RnJ5e>S~W^%|q)M?kE(DJL?fdah#^J505Fq#gS(fUULiB{JQ!u@T0U?d=J7 zcSkaMmUTi$GFTSC~7zegu6z$l#<1s}} zK*r{Wk7%w57g0AUUYHbk!;ivehAVa8H3uY8voJt%#S-6M7)cE!TBDDV^SisR&A7EX z7l|DldRa;qiD4H{O@Bf$6=o%9U!WGIdg~y17vOKz`BS~=-80+kX(+mdj6fdwqCr^E z$II8;V4y|F(VZXyfAypkT!r)>s(^$EBAE=Qv~6(aoTwbU-dXTq9aloT&0pi)$tMma zAy=CtVveDw$DNl7WTIaBI4femAd0Odc-E6uADA=&na3)y2P$WJqF-+-!i$qqQfYiu z1cV?(ljxNTaz>omCOrZVL-jvc`a*}ZVR9Qj$OCcUE8`cJy?dPX!;>mMUekQ_MWxO}^U~pc%?|wG=w>O( z)%b8O1Xo1JN=AsS*xemr@azV7uQW0`PRn5tlsZ}dDRW)PU!MRMu+?bt6Txs-{Tl=b zGW=T$4YfZ7OkX^h_l(37^~r*4MGuR;`Q+Hq{>Qx1qQXXJCivNMaEotz>!xl3Q2kgN zkLypsHh8QcI|q~cXlq5E;6AZ==$w{a>UuM`m7LJ`>-w~hjcsa!kCGi4blyVQ>DGp^ z!nZ&-x%n&--1aDgQwV>V;Fm%i8BV6U|3WgVmLG4ei4?6e@`b9NuvCCHx#HJ`(jD3T zl6ZflZX%0Gt)55o=27e*a&=4~fcxLuCJ?Efd|!AHv^g0_ZM|`OEk%f;^zS)@hEH@j z8ZH#3R_T7EAa|D;mf+-B|HKL`+ogQ=;e&c6KHc*QU@dY@jX)K=;CfSO8KeMgbUD5x z+q64t163$mkSpaewy_T$FaN!|@CC@%!Sn^bU=m|gMSFLKoHbA#MY|U@fa_i?3339Z zM5|+McGky9@D_cc*~c#jbU5wIbo2r}wn`(8d|1AS_v?|b!>pl6Mdts7fEEpcv= zK*5oKl@7I>F&l*u*{Ew?0Erv)p)v?EoICP$#3r&N+HWZG*yOi0P+tKopnX1c+gilB zc}wY)gJ2{sYX#03LOh%>w-BpL!CB5sbD=<@eje&vkhYd6`cGmJ^W^}0YFVU0!<%OKB_qtF8sk|+iSej6CjR~!al|hcN6SwL|1`$m%x-9L>0HMuITZtJp_fvZ zb7Ja(Gq2Gip(De@fEeUDin0hIFV$<$23ixrP5hMJq6|Mgcsm$FSfZ%<>2Um6@^Ipn z=Q0!y`@2n34a{aP0O?+NC1T)szyv^bQww<;-pYPN^C?~_`L%(&x!YntXi?Ag8VqdT zFRc1@U@6p=${pT0nm|45^W!ME6=5BNg1du$`Nxz3_+MDVzDA9H6!DKo!9lflu^fOv z{!h$F4)PFp{a&M4!(HaCzF?x$W@khMx;8p^7>6fyDW}$4fKboNlZ&Kq-|K`R4pLHy z7*b_i_<>8S5=;jRb~fwS38UF8qrUz;gITM2L~t1Dvw5Ju5ap(VrPj+w_{PoIDn}=e z5$^US<;STAJ6XTKZhgnrHa5AGUpi6`GUW)1m-xGzgp(FXr(#bO+V`WSMz%}i5CSXh z%%}H@Lrs1TfK_nE26!4$_2F9MPRAW7Q|;jWL2)B*Ds-2L^|~DdMLaMGY4b{VNF_C$ zOlQpvFIz%o^$uU6K&Hzgz7M-!gw>ej<1IG*lA{@OYi!C|UCKe6%)#-Rad7O^lrHjS z8fcH9&ORN7(KAkvMJIhRhuSkk;UCytO+Ku`@8(Q1fN8@dXDby36L^81n%bP=;hrb- zyQ-}(=aC#KjZGMiuyS1>E@n9I{k2)zNHELQr70qZG(wGFm$nUEVhm}ps1>az%f_nR z5r*zwdXtsUx(g1J`ZIM97A-!pzThehi7d|ss@*2XZSON}fXzHZ8Irwu+rVdR`?hx& zXU8QC;QD2A_1PwV8geyhrj&h@XyP~iHb<&8_$Bk2<@VU`jW=hCn6hT5Qwo)}2V2vp zPJW3d0srUeUQ0OZ{{N0E1Ytv?>7F74sRS1xtBYIY$> zsL+*hOl!aCzpH5;zz|k4UaKQSn>}iCW2@>aB}HfcdCcWR`EP@_C!1WVS68!SZB$D$ zmugmd$^B`N=Ls1(=v3>+JYQ4MhU045MoUH88r|ZazEq}Fw2tO~l3OrwGLf^Q!5m6x z1L#wv@g7*Zlt$<^%igPR=gjxNTg80Y6xu&l8~n-x4&Y6Qy{m89Uxnu% zhJ8C|ne(C4)oM;TIvu1qxP(pc~Tl1slu;5H#G(d4P|A zkR?+GVc%}<1HpSjNQ`X43oKLWE9i_Z7a-M!2#+jw-ns&oTXA=q4-^X@2@%=P1iib3 zT9tIH_OUKwadq8Hez%rxGpOTSY`d9kVC%d}OHFw5)Iwg#?QYEyX0TZWW?5i(t)2?f z)nG&K0wT7&7qe*=3#N=R%9Cem&o@z3R^1UI?!4BFW!~@wvf&b!gbufr*4jKc1W@(5 zm1h{AM(zDjIeubY1N$08lV>g#Zo$8Ll+rA|OI7gKWrdF2YB!_Em_Dp|CEK_mJq5Tm z>OgC}(cewJh(rqhX9fa?Vgk!QJd7gMjZ7*n8?MBt04~`)aL>Pr3gePx6$3Gkv$4(< zm>U8VgSsVs|GEh5Ic|FTVBC858gN%J?dmtU)1T z)!M>%5AERGc>H-y_qSsaV*Dz_+BylD60_5U_13QkA=z_f56ZgfWxE{B8Y#@L*l@t? zS;1(&XS{Epc{_b?kZT0(n@P(wtN|+?C-v6)pO@p@=l1CLIClu$ub<~ zRya$zOa=xTEpSL({jgAjV_yq)A1{AfPC6J#I^UL})|Mh-?QHa6hMud|R%vi$=Xe`q z?VlFV71YXMPhs_fDUa33J_ZlV<#6&Ss+w4c`W1h^D=03ezQ|ry%c|Ku8#pO<@Q}E} zLO|TytDqoP&>(k+zC%heGg)YKt9D|mod+1JR3Ih{M&7tj9Vsa{3LH)wH( z8vOsLI&*QR{I}|Sa|sTgLUD*h2hfQiZ$bW#f6))Yfu}s8kVX@(yH=XWZ|F%Br2+B$ z5lL=RZWWg6Tfjhifyc`KPqg%m1=f+On{0WFtV`0OSeGMB*bQx1B4kmRJfvEJBfhF^ z)1&a?qQz6~Z=P%SyS0KLfNg-7q^%b!nQiEMYXpLtMQn2E8rkinrvC*NU}J-fnmMVj z$H_Q*vYiYA7rv6b8a4NEuu9pURd&<6kzMh^SlB~a<*j!&G0?p;zzM|yG(a|9o1#p5 z9W8i;%-iukdGNTy$eCWgcPd;&0<>_iXZ*yhh+K^}Kx{+8J2shZ5Vw$$9nluTV!59~ zN+#*;L?W|%7AulWtttQ)U{Ss_0;T%vavmaVtxiDlqzpZqRMT>i0#;F8rZZ?y>lgmt zG!@YvVMog>@7VbC$JoNUVtsShiqt2bj;6rk2HZqp)A;0ETu{*AzCd_56%;dz&LE|F z6$t0OKu&BMag=pL+x%Hd?9D=oj5o8tqUWaZ{As6n!0pGV?Lx2S0FjmW%#xQ}+Uj3k zh6gSp8jUstJQnCSHjWjEoA0q?m3}Z&8VC_oe7wVj=#yW$4kfDCT!xsc+Jqv(rb>0t z=*_}IF1h8mJ(F(Mz|oW&% zLr38KlaQP{LxdlQ0F=qK+-8Jbva@PGd$W*xA)7@Cy3COeVHKbelPz_B%T4!T#;B(p z{8RcpH#`42IK4dyes{~4%v@hx32tU~zrK8iIDDoMUVphbz3qQ(A+}t1)7t;w8%`BV z1arDSqKAj3PR}=52gb_y2=uY0-_OKRq? zw*ent{5;=(0V#9b=hq8=a<+D_za>dG9VhKqvPF}`b*fX#wy8v`vPA}j26*%R;F!?= zunlW5LZIeby!-i4PQr6E`Y9(*GDYtA7GH$~uQ>*=JD0{tP@&GOgW@ZN^G8XrUUL1S z!@szME0L}SJVJBHTDYnj+NQ&13PBQyWEus)EGgx|4B4)Lk}NtEu_EoI60J5lN>DhM zb`;Zad)YIRYy8DNAi-9sPdIwBQaIu+6xnVdwQStZ!;~_^LMRZY3g+Q#-+vGyMAMpq z0JEi#BzUBXJGO4(sKPR2-P~P*TI4TI7s1E2@irm2}AN?#+h#J_?>t+ znLtPe>Y{GDk_@NBBZ+BAnK+ z$MjnQ;Da6Qy(QR5$C3muNyhAd@urM7Q&Nv!CUOod7m?$^ovQbV$2m=KcnU@eZfWHa z`@0Z>O!*H})dAH$BSb?@PQ~uoL~x_hlWU^kW}jCXTtAs(yKAgrA`Fd$mf`Mm#gDf& zv;~7)8&AGU5;CrdQ7(GeyGD&9&IP6VJqOndfc^t4^G}$hRBKuGAqmWguw$Fq;gn*e7pGt_ecxl-kKBP zXWtH#Q+2X#L+^0@(T7@>d$h|BMTu2sLkTI*lGy`qn2~byc?T`(5i*SbJVai3_N8k- zn|-B}>>OL_0+lFK5a!?&~HOv)n@EKoFx2j&q?rG_?xtp!P*P=~4G_=T%Y$MMz={`hcLmKg z;{+iVV1&0ei6G?AE@L@L**U!=%HhAyC8O<#7Ymz2jUws7g*zdhK;}7YjpHc?t3bD< z@GH&{;>AUyFMG3dVsmK>;GH$e5tq}s)BKV><6pG#kb3jsKUM&j^z7Pmouol zdv1-#EL7#)+a5V&VI`rJd#{-?(v*vL<9gX&HOv#4Ij5=Fj29>YX8VE4mY-~ew=4(& z{~HyT239`e-Y#Se;xqy!Ypyj){LExF5ZNtkU|XtO#7-u#FqOLy(07?HMf6_a7xGIa zl|jm^{}!$9QnvQwOY{HY>KubJ3)*fS+qP}nwvCDHOspriInl(nZBA_4wt4b?s8i?s z*>%^h>gxTkd#_sSS~sW)l%2nPXpk)^aulw=BpD2hgkF>(qiW_)9RS~wXScIpktzog z?u3B1(??QzYyi2Y-1s~_dOgYlqhd?6X*aRBPdhoQBgyio_;}j0J7Fl)FOobI)(rh$ z`2s+p&H7EPXNZ~rj%puojlHqvib&c`i3ryesT6|0L*7=a)q6~Z_66}pTUPrPLEgTt zi6Hlhc4!m%9_tdqWCIN`gmZ`y>|d?@uz!DbbpYNc=@*EyfB8PLWOsLczKVK%%1(Mc z9_6%fmM{{Bt#=?^kGNx+_|N1%KND_ub!BtDcfKyK6Z-i8?uS07tt|Cpz`9yYBj;#j z$}}CejQ+gX7cQ+DSzdVy{V{L?YkY+t0bTr|IFz=RE*9i?ujKm_RMJIaH2r<^Iy*1B z&&L2UfbtRDDWWfD9K&e3b)<>P7r)In{aG*+G`+Al9EHnh-`V6=k$XBfr)XypwxRoF?>R z`8_%ZTQMRRjMjsrI!{r_ynrQ{Qur~}jP0~mLJAzJOReYCnZ}id-Rf~5%lhRO&5DICc5Qci!44;d!znFkl}p72#JQz@%$zY zMSeK;eV05Qyx+@#k)A%!$Me*Fo$CVhscNUMieVm2o?+Mq0P*8VKlh|xzNilSCuk+# zhEOGhTSfsr{0yna1e*ise1av*)Wtp#1LP@=klLL+pMFm*>#Gi|APc+xU}H%A2~g^_ zURhnfaY5{Q-vYhiAv`anZRgB8fkfqGK3foilV8jOt5>yMvc#48D3uARwXOa(YDFDB zVP#TMqdA~U0K@aV15}@cjSo@VW+Fq%p5ar`aAP|tRlF}}`XJIumA03o4(%Hb->+spaUvgFs#sopUEi48Ks5EuF4}i9k%wP|d&PxJIV=An-e293(7q0j>@MIx z=VMiA0As1lZ8$x2YBdx5?SVa5;iEbS$z~`lh^Is`2o?);b9UqS9bzdO2&>iP$s!Y< zcH8N$#mu!DWUL4g`MCGXW(hke$*f@D4|IabCx)^|uopReI&hefeZ~z=QaE1H@Gw3D zwVkhK>!@JjDi~0%;(C9<3W~m!1AjvlHH-2R3>i`};g=!`?M z#c?RQmq#UfRUJn3&#?kIyNeVQd$i^F!@Lz0iHDaJMgUJ(HpBwQh;ixVRSb}cdPGXE z+nw)sl`hQ?5>5oq6^2wv1fy*-Rfa@d(M^+Mp!um{-T~d9tZtt^8fRb@`B)`?Ife`2sk0lzEBrX} zQ9@jP)!zD?CC5dT-8*d>4Fs{07{Y60tB`DFpqNP`?Tp}M0!A_FS;-^+R63>)G~|WO zWW8WVVi!sqUEMie(#$!ow%Y&!(mYYMkHH6^({=&sKP{Rh$PAVDqA{*2qt@IP5+S?C zi4O_ZQ^(d!vZYPpY#Xe&*TGSo3MVN;VAL|ZPQKy2bQp(c%T$4gkH2!+)~3hPTq-Wx zqz3ySAFb`_^$c{Eay9&+$>CAs*E9@5$>d=#g-I<4K`?@RWl#|cKNx2L3j{B~8=)}1 zg1lTsinHBK<_4L-S|!Og?5tT*6<@8`$iorxA<*GDa z_K~pOptIAr742m7U=`GKpX)C!D_Nf|vt<0U%pk#l`I^XHY(wxhe&tD3NY&rQw`W<4 z_RSPY9%GjOR1$KY)9!Zx&R=aOc&5RJvOcYqgo#fxq^A3&1!Q1YghS5ZWHP8kwX8~< z`*_4!iE8g3Q4V7inmR=VZ8uzDU?gUcj)=<3yOZ|taLuc)VcYdy$B(rV|W%`$7Y+PUzMUv}|9_Q(nWMjOyMS(_puG+b2n zxx_lw`t`2ggr7EiDH3Q+(=-yC7;EOzHIDa3k;=#u^%}$H;eBe0sYpK8A*c+8HfYd* zY=C$xC$ahhQl5>1s_Ldb2+Jb+p@B-mE8tLj2(#7G4o3x>oC10&R@o^|PSb@tSn_oG zXw4G2XQ%#-?9U|vP@&=|?v21mY=3bO6a`Cjs71}c&7YY~2cqMCzdUl$M0lDBAGzfy zwMI6VB#6Njj)V9l)t7pi*@!TrmrUrmmSMc>oB-DpzEQ3<@*##(qsvt@Np1Z9{bal;CL&Ja5rs<<_ zbA*9Zjp)Ib3UNy>EJ`VF3pe`@zps78qes)gx1w1npr_Zc%kswnR~3z&OFYhEv9dBN z*n^~SPoxnn4Y?TU`wAFsDg!#Wxe)gLMsFDehRYirN%a<_i_X$prQDavsa%$3TQzo!0IWhsuVdN zMTN-76+oyQWP*+q8|}(<)-JIi2sl(Pe*ySJqJ2J`q!0tn(<;PqP^#@$d!o6`%I#+57rx`L%psVpb#egA8>dNBdN_^Z$l&*p?}JqtOYi z|GC^CAsND7KAE4DBv53hjdfS!+rvPs=rk`D&i_TVC(v%+>lP;HH}$Q$@@7JD!t*Wq zGovI20H+&=g>#~rg1YdPRtxnEjg46vJlDt)!-@}&*jB`wqL}wWdy3TsCN)NH+}XKe zn_Can&GE-7aHdR?rnhIZo5k5+YIirQ;vR;54rb*x=aV#sumG$ZME=Xf&>(+pb;LV=VV_ADeFUAY<|3 z`bX}QeQBnK=UZA z{3??BLtMdJdz?c-f60%7$c<98hpnLc+Vxmj4YJ1oODj4M6bz*~MU&EW12I_yHU4x5 zuuN}EvC7EN<~c1Bs;3)9wD&E;wDWbPFSmrZmy90mv8Jfp6mix7UQgDfQC*@BbgYfV z_&0HzriX{i0}SI6auASC8k1`;hrXm{cfF44gg^&=wO*nv$o?#Dk<>Z$33f@L`mi0n zk-+`A;m{}~f1q>l?Ts|OYmkO!vSEq}K)W+5`(+r(EGa+T zG+!?Pw&N%weY=C@85f;!-9XUIBsv4{|qN8~c-4U&_(KSBG>(%kknVZo3i!e71{v zD&5@MGIJ)ek`Gwl+plH017bTfpb+^+E_~&!PZr~P$;((E$bp+;M}FEy1j*wzSFalD zq{%xOlkLK2CO%xT#+pUZCxXGiIiRn&8O?pLOU)9cM-e7rpVeZlerXA^-Bh9$(Cf`C z*Jj?;Wjgx3k}a@t*W~kx;huK`j?;(K?jPsbu7X&C!R_t|FGZ6znXA9g5u0H@wrLIE zxb}8)NVHkx=OkFeCSV%wn4mL{nEoNYM@}LLfW>T{u4EM5o7>+b$NviztNy5$KWs&U ze0q3;{`qTK?_@14rA(wAliS zTS6QB|I!7R|ORvhgJ>*V~iuLo22s{XaQ!4Snag(C|tuoDwt3>W+F-hJsIVa z3MF+!#Z;dZsxBd?g2ql7H&zgyU9*{NV4QR_nXPQl-vchJI5Kq$P-&ZGPiUO<}{wS8{uPz@W=peG<8zZLxOV-g^sX!YWZq}C zzwMbStIcFkFcvB@i7IGsPdjS*e(__-owaMI`;chp^ynn{y1+Woi3m8N~ zT0>V^v=ourH@TufGW93Ygj@;7xl>7^TzR4Ea?5aOh;}6@{y^jn^-sOa;n?|b=%hV; z*|_!vy0OVqjFbG%dwlJxiS0L=`)#WGCZa)ipSedHx_F7(*isV<)A+q+nvndxwhovh z;4=Gygl7ADbzm6+*PCi?HEvIf_;8*4x&lW zP;)M)PT{A;J2>-jwAzq4aQ;K_<@llac60z*xjWxJ_6K~v=EFJw8+hFv-!Jo*Bb?w{ zC7t{qyEh{P&kmLX8+d-LzTfd%N`Q(sVQdO=MMxq30r%cSZg6v&u>eQg$q~@aZtp>%@X}^2^PBu37u&O$+~>y z>U2iQfmq3wpaOW?U0cwp+GzhfDEZmYjQWJlV=QSmhv6kWncrrSl#2{&WxQw88YUa zyXc5=SZxE#w|p^wiLf}gNs$89X@jOfGlPZMCL zlV=hI;Lyw3EsubPEfdA{0#p}=ej`kwa(DC8Qzp@-{$j1){WJyr`dhO%@LP{~(4>YG z$YLf%Jm`V)nL3jci=C@0yVi2N>I6D!u`4oE~A~pGYO9LHf{o zOg*aKwI?-%`Ngxj{xEz^7HTLKw|ohX<&&-WmOK^(?U^p4^pMg7V}OkfrF<0|>>{YY zkSg;|zI;@eqoRGth-nGCfm3_0BD(cvxruaCRUk3ZdP=`8$?-WXk74aRHFT6Tu0uW5pmvZC$> zc}#LqgL~XunZ9)irUs1cgQr{zz!#2zoI=TYg^fi*oarz24g`WU=8W94$woCD%_+>? z@>I;O$n)?K#T>m?jz$*s-9~R{xex5ePCws)C_dLNy3M7+O^ZwBDhqh^ciCbemeBNz zA*&sC53DGqi0V>N$P}FK8x@X(D0ukPM7+@bEt$n24o}oXkp!^mb#m2oNQWgb#r0G2 zoe_8mayj}C5NU9Ar|nwkyi>_)^*$ETDd!e^7Lqdk-BK7!M35YO?-Sl#eJP}?ilk~! zs$Q`Cx1`Cm8Lu3uK!H0M zQ?&e901Le?58x1C&kVLbVot~@xCRd+wk0c(NMm?^t9(R&w)```)&i3z`cJ1?^2*p|M!;oPa7Q46t+KLWy@NzsG3 ztoP2N-+^M@V9pM?XQS-%BbpB&nW4h?SNaZJ!VB==1MIMX(LW1qe8^#?$d?@#skS5| zWa0D4A+n((gePd~MVqVY6WhP3!(vD3MJ45&LZ@ldmCsRHehTvC3^! z?P#{l@*b+!?h7Z(xr8h>t4M|;`p}_TP)F)i2K-x)b*ueGo%p>COEbhc{S}V@cs<`n zA+dk%>Kr@0x}O&8`IM3UyG-@*a_A!~p&=Z?V5M!zFlW%@;{_9Mte}oS!A-!| z%a@zqKavv_ZJ*B+l|qw~K|oPMw8l>_1rrx`QbGZ!MdLk58UfJ$`vIvZ433CEfXBz>;dryN)7KY- zN#O94gMx39uK2YUSN# zOQVWlHPzH2*w+Yvkb!vRO~hD>Du^6HN2TS4j-K%yC?I5q_jWMrQ~&*uwO{FablLJI z19ZrJo1M;&m>!)Z87BZA-TO1#X;m;_iJk1vqT2Dkn^Z`!?(IHc32<|hcPMiLvR50@ zQCc*sKL&V4Kh5^VF+@(YsS9qFJNh3w)jfs{otee=^Jon5=P7+i55fZqmaXPB`V3<@GCpu~n)$x>@w+9%!iuD@I}Enr27mx#0su2}QO`^tjDJQ;Xu z=E(fzD>Ae))gz12ku~z16i>tN2Qa~$g`9XXZjM>1umG%Xx^px)44NBY^{);=(%m3t zN>dFt(6$DRtX~KWC5Np9tBJs}ymI;Sda>hwvXdBMAxN1+N%of-*5T><4EB+40B{Wl zqYuq42if{;__E{UaU0|*i9yT|o`S}GWjeu_yaz%{41 zPC{MR1n^jHLy#4;A zErIT~)3kG?-ufc!G#2rgK%wJg`muRBrqdPsqC%%Go)1AA_+ zEQUg7@wQwHMCmD)@aUpovMaO^wFlY*Y1#WaI8_R#eYxT$1qyd>yJM$W>0>0dH+^IgN0A}0~&rq8fhGs0wXLv5;QpC zf{t@rIueB3kr@!vUenOy?R+mbI#yf>Dmb_6-z#BQ?S4y-S^O-Y7Yh7>oj7Cp<`_|A}9b51+v1> zc;v#I;*0~n6$8a`C9Rln8lbyLB|#@0u}4dEyPjlke}5(Q1EBZkNpq~waHqW7q_JXR zpWZ{#QroQn9{C|kxR068);Dw~B6{z&$5EV2iA03i6~FrRjPf|BLN(s|!FDVY`>sYS zla9s;J3&p`Trm@4xH7*c%Qe7V=c!k&kks5;cH$J2BeFOiB_#3>WyGf!1Kl`A{u2ap zTclX0CX`;k*z_-9Xi{jQG;->}xR77&8Q509UNEg{KnaPBG7p z34RNG+>O7B6l>EVpwc6=U8|~!Po)l%_90qgvPQ)}LblL3r^@W^)99wx^duC$4F znANquv&y)u2>*LcPT_UjkJtj87g}}Y42iS}4rta0K4L6TTFgIYn^o$|E9so=fmcft zvg9xblM%;W5mD3)#(#Ntl3}I?vebVbCSGsEFzy!`-2XWc_YC^jf55u^mx@(o!Z1*U zEWM55=M|W82fD6?q`x;}QW%2y>cW;N^J6D*pOyFoSf^1CwY79T3K4m@O;Z&ZJ(j!c zrl?8C;xuL2F-5RAp|1DO#?P_;fa@m1EOl@$Q05(&f2;>vD35fFUoA_210nb6)BV?x z_rqk5w?m*ytG$DUOKVL5|Bq?ze-)Gi@v3r_GBPGu?>=cF;D#U5+&*NDJCtl{`VQ<* z2~v0YyyT@Bu{Xqly{)-Rdy#6+*)J7%r!w{wv6rd{nvqiSD;!eU6nY7MD_mxre^f_S z()uQURd7g;sJn?HB4}P#Pp85bx9M-GF)Y_Ln#44k&0bc80n1_hvnT5%q|9~?y3!N4 z{t^+i%5dCu5ZQBNyYFWUI^cd~w`CLr7z;YGB4}h8q(<0%y`mj#+KyL=Y1Fj zWZ5P?!_pE_&l!a>McnKaJIXO>0ZJ(ZL{&xQC`9mbwirZJC2Q0>D^jkuSVB_c;bz&1 z#=n^lz}V{G0D|h;**Z1xqQB#bavIZ+MP+#!2Wv|-AVwSuhx;J&6En1as`rY~9Q?6# zZR(=Qj0WnWtwBh$lfX(f-kK}P_v676$dls1clnEnVM$KJ=W~b2(?bMy4C;~P$eHTi zn|-OE`QZEYRMU=hL@H-W;6Ym!bT@yQm+6+0Hc~(K0hrMg1`eU>6GI))Ne85YJZB`o z`B9OyE=5(^kI{X!*zp6lXZHjp%P-IWu9ZtE%p z!s?a5?R>Cpd~plcva4~io8sBq+C@);JlWmm_W3OcAl{f55wb}+F{{Z7ks}N8Tn``y zsvtQY0i5p8wsqE8PVL>Kc}%*2#6Y(aL)=iGaqjIJ+3@~)?Q9AYe8?j5>y) z+=fw^oqAn;{k^vK7jx&E4HoVtn%|$(zC6C4H#aZ0R}Xjdh=lvEHG=#f?^h3#`|pI; z+dT|7f`^l*(R0GXsjXgBpT3(YSLa!n1ncb*^lM1gVs zR57lGVE(k@Aq+9c@5R4KkYB*`UslBTpYFFagm28;yj0w1%YNlCd=!4DFyQbp5iWcO zuyJ=T9X7<3b)zdK`|}w`+O{?a;&B?sVTrbK@7%vd^VbEla){?5UWSTj_=5%5O z=u`rtpqUO(0xi2SeXk_4W%%A=Z|rDU0AX{e0m8>Ih!9%{EmLFRgXzD78xYZwr0s@Q zskkbw>xNeRnq+jSa)hg>Zv}>D#*A<^QDjXd&KV`%RYwRtn($kzZz-Py!T|~P`ZLkp z)DKQTxL8J0{N*86Gt~o5O4*VDo@cEIL8M!XxU~oaYs_HHwRd^j=z-6?el5Xl8 z1x`R;W=D>RrJh4~u>3CPyOTvo;aPYPZn2vk?6X&hX}(c2)d@nr_5>~j0VSmhv zh`g?&EhJ!382yguJ>gZw@itXc6asO0<>WBaHn;LaU|>&zg5>)FMG?bNKUOn%amOxa zi3=Gzs^63uI(JN7Fc~Q_064TrJ)8VfCfm|UVYaAqDh9)*6S0A-jK#l!=4L+(&+N7v ziaV91{lvK@$y|QDYcW=yL=g+0l8H`2`V zqC*YFuVF+>8wbuk`6`BV*gq2Cc`Ybv?9;dmmW>N~rQ1?UXOzcOfJ2Im$ixl%B96!n z>jyvKAg|(a)CCA+pS%#-eDj(|5DOs}ijmLBz2JNiWOPTR8@B}*Ke64C;j6;;Mc=xo ziRWK=@t;s zy?xef;m)x)u&GLRK*-q zRv#0Z&YBThPej`GZi?IA8J>7(CI8>t8W;8_ODKW&+{DtihK#? zHoszt=5vpaoP%E#8ROR1`PbD0eY4;9&8?_Q0l1lFC}LdBR!_&az{2G~&*qPyyzW2% zkj@k0+0m~A6vd7%K%(srtv`FnvlahqCQ7~mC9<8gL$I^4TbJaJ^o<=B;JG)ov0Rtr zlVp)}jird;v09K8J?6{4cbS?W?~D+qOyyW^Zfl-wva7cHZI@|dcQtS%VEbQ>xmxJ~ z3iwPm+n=F85yyA#BuOHN?M)#_Hk~ws^e<^TpkN#(yMW`rHgZ#wOM;NcVY8Yk6#jn( zKC7D_5*@^}C(H4_EXv=1<>=~-JR2H;2aqDby}ayuYdKgDyX$S9Rn4z`_)UlW>OW^w8*{W9)|vp3S^pOb#> z2n8#dZMs&-YJYaPGW@WeU*B^89j=MXZ9;`Vv+&ptGStXiV4%E)d@8tZ$ih*%4yr;l z5K`d95MiP9krIMCQ0)W5HxDe zdI77VD}lXTg_yEHbTLe_t08@pan^1ZYy zRC+kX7i;(clOko2XCoMj`)yuj_lzNF6cevU{LhV0Z*yf8z$p2+_EbnpJC=P^_2?&P zNWM0UBb+k+c%7uPVK2`%IvKX2%r@RsOawSZjUgH@UyQvsFWY*-=Q-mB|5N{&qO(y& z+lQ|z*q_l}KW%6#sJS|ut1%vQ$c3Zr#aP?2z}ae)jsJ*0`&%!Q^*HbfE~JncEqY&T z>2By8_x<}dRva8l;@HU(bN+v< zafQ(mat$X>#BV=|l>(Bft8W)B)ARSmak@O25kmJ>pI2;F0f6HDq1(N@=d)<@*qo@w zS054sqku`kcY6*wi2~s+LhSwBk7`1>LiQikq@&~W>*xpeLg)ZBfgnky;zsfV7R`Ts zJDSIjCD{3TM*abdp4iM<<2(H)GF+`WJCX_5+_83@WF)EOiY_&Ml9$fs=R4W>m>CN~ zG7ZkvAaVo1fEZo~1+ar4Z(1*$f%T`rBIXxo_)10eYTvS595}UhJi28N!$81R zMLm!Gh8;gxoCApv->>qu^j8(X>c@Tlsl_zMsRsc{tP$c^5!|1_E0@xwL#1N5tWw+j zra;q`j>f>+Z3nd);ev-@b~NDQ?F`-LiSpHxkwV}q9?ngk_M>-RxYs9)X17={7h^F2 zY|a1~PQ(hGgYik9oT>)-zttKV$_C~tgWJi|2-El2$hWHW4Qz}x^$T6!@vHP3bX5e) zpbG%eDI=Lh*KT@%I}<$C@woH5&xxC(&>}@v1w4_)spwziLRwdEyqzwShQ`WaSPae(RHi}A zJ)tfhje58PNx)c$x<9cqhAS$}AnkR&(O#Hmy5a+h2Uy~&K71&_66~{VFd>euun+*_ zFCogh3UpZw8Sx8oKnZvmU7FbE{tZy+Ujh-@c0#dvK-v@se1A7i)(-8%kp|Q;HBx^^ zqvO*Oj-bT7`b8Ddm|Syw3eHakW`l*~N1j-CXZOY81>Ze6P^#Svs5TKXjNQw?7=&O@ z54r?+5B66!bAW#JAI=suvnlBgX8@M2$Dmr`kcsPuFVINK{gHiFgErvao5t+qS}I9* zC79rgJhQ!DLG#%`I8`kp&=y6x!C)SWv+zU`prK5s5-4WU1GTX3DP=pe|6Xh2(Q-aR+I|-;(4^`uTv}2C0h2FADLYUX&Ag3(8^lnFrVs4f>4XL+9X zB#h|fDTgW!M{-3`ew!JDvG%;a3DEMmxsk8&vhj!>WRBrJw~9huI+1B&HjLs(1j7 z^2n*0H{&has|4}OJO%_51xg~+^&32^^Dck%UBa|Esw)?CId{+;o&DBvVjB^8@Qh;M zhEG+^$zK!@g#;{BNM(g4UC_$4&k}0wYd^7z$)E1XNy;mZ9kzBjuR(kAP8a-Br0X(#+mu>n#ZeGOAXvoAyEAZ+aV!>??`h z@IV?%CXo_DH6-PEN1nV#8cTQPYQNa}6V$QZewBt`qaXm0X*dc3C`-wXoPNp9g?#!;NbWGV z{P_ccN3^)(k!0m*qbI+B!;zhJxrK8;$5kQBIOzv0Y#mDR7)ZK-A-9I2x|;Xct!msO zx)hE;wEzH054`9lqiEJZ9PS{wFib3HSZSoXt6L_Ro^%wAw*9>;$8K=l5q$Qdi);lC>@$T5iE!QZ)8 z4EMr(2IuYrMS=+B5CFTvUljQ(~1@{xs$*FTj@V# z(|iCw6H^s3x-XATlt`_rnS#a_GPJ>I#1JChKH-G2fT6YCP^b*7Hh$)FO-IQ5U+W2mXQsKspX(# z{DzNR!FjrpXx9nTc04tCUKDK@Tb81aS33X#)BXP49P9V`M%VYpJUfhtI?v5-JTFvd zVd?#s&*6uhie{g~&bMl-$1Y84YY5$`0Q=_5LD+bsti7bV7;h|eA0>^ouD77#`Fc|b zqv7Jw`me{g21q&Qg|xWMYwkQ;d&Co~Ot}p5#LO4M^{``gD@2kh;!%5Ag%lWCns0DO z29$5e|GJo^T_!*vrqQo~;iX;wClSlh1V@|ZKMs!wFixl>A;PMqr-F_L3M>*u5r)+M z1tt=`DTLVj`utk%l|gzOe@L-mCA?PlE1|OHT%RnAMH-$ONkBJOL_vBqBYRGXg?CZZ zZjnk}IFU#X8j?nH($dEg-_>N!8jxJf~?qeb9gD9 zx*~}la6orJwsRR}HQK~M={=g5=u`mqv2H9z><$?i0shW;)R7Ors8!OUSasM&k`-V zFi97kw8PaEq5rpR1`kBB0}-*%F3lrMoSDlEsEs&>-4EuV%H`Y=A* z%Zn+TY2-nHf@gVHropRCt_jIW2AW(X~;ks&=uI^>&9#6rpsZ9w744uz&-8nAB)+JUJc$ z6bAcAK=6iX*Et21J+rc`@R0AtK+Gp|X8*}h{WrCaMFzEQ^+6$hcl(4P9Tmsfp{UP^ z!*pufVm?~S(;_=W*V@;N@Y0XCfo6+=*S9_DB5UD&z5}btr0wK9JuzgJ_P2*9b6+UE z`WI*FX9)905xKMXS5B+fWyd z{8HFbBAE5%@%9D(Ixu+}w*H(mfE!NPzrCY^7tpw@wQF9KTAIOpwtjP=&D8}1DB0fb z=|(I$-sSws(7r&c3T|u<;c=sUbNJj(!hd~z8|KEW5H-WYRdTWT7@@#{A}qQZBBha% z%Jh2Xa|DapE9ZU&PXDqHQ^k-emb%DhFjTv(e}iJ8eFU4TOE*s(G#@Ud))}T+Fi8oU zO_s9Cvn>^C)^m~wGQ^{on#eN(h&IfH+C*J~gsMh@E1PPt;jMe|J1H`2$FDwuDScA0 zUmC`@?-;xR{RudBXJ!C@&2GY4#a5CGABW?2}Eg0R**s#|kH5iP>6!a5Qrt?Idwd_I>L#qBn($%~U~ zncrY}XUs+wX!mTGdpcSS2sxgmLkP4)8%0^dMp#R=#NTG_XTBoA954!Xd_lHcdP5(m zc+96+!Wk0TVJ;Wpj7AD?wDKJ1Rf^)5!-1l# z2_jvh(Hb{op$68VFY-8EB{R@w>k>v`tNrs=X7b)}NhTDE-{aU2VAcTzX!0qOG}n01z|B30Bh`rvvMo$G!9sBJ zcHxFac~;78t5=UVKsd;+bzP$mFJp04cqUFOmZ!jIot5h61Fgq8rR*fVB!i}{k0HKk zvyQ_}u-_ol2>VZey6bh3V5|iqe?pCi$2r?yX$jm=#<@=s0ZcVoN=|%y^;9ySWeIXH zHM0>3ZPs$%+;>Btn--W$uqR3CR+)DoAyU$G$CPH?(kXe zrQo8GZZF;b{AXI+wL^=++|#(=_SeJiru%abSW9svO~17fm~knr#@*ef>UvWeB#F;=wxbLg$K%mh7a6T?T1jGp zj$JXTB|c2U5e5EX$4@BpH=84wL_lqL=!xGFr( zAUk9(MmRV$38ZS^PxwRq{ssS94iEy9en(ngOgqLmch%(J;HA%^~uaDb-E=E=YQ?A1! zWrQ^FLBQBj`hrVVTvN))TGXYz-*zEz`BgfMWu{E+CHY5!6&dtdq0#cphwbpC*f?Fz zUZunHA*JOz@yhU(I(H|=Zl;&HmE94Y=C(vutraQoz5co;B7__Yo`vefcD~-cR?1ehc_!N!*i_#DU6J z{GCKpNg=#nCAaY*p?B%{+QFrO&uV?k2SjIp= z#i4G58?r};(7zY?RKLhzJ0ocSasxNLG_a$d?FJx-TH4Co7euyw1~hSJ@ysP}_Js63 zg!l2#T8#}uLjt+U57XxsT}_S;d6zXRTQvWDPjXX)LIz_OCz zvKqi8U`U!NeWA;X$p-E@eszE!SUezpxsIil57=>N}x=u{r`YK(c;nh%PR1q@CEhq_5$K zF4U%LwQHipmm~!jCDc`=(Q{I1TBsivc;v0f?Dte?r5hEclTyU%7d++4N|?`*9rdlY zwi9p^ohZ&CCuEO9E6BZUSg(d=gzw@uciDdGP#_cj%mkv3CnKM%=?O#wr;g? zUmd&Dl#WHgbuAW;*Vd@v+fA|3YZTAl=tXj9!U=GG+ODG9FEbPRv_~^+*Tywobp);g z@L>T2nq0;IHbm4YaEvgIL1o;X+GCA*%I97G_=>UTh`cPfNAIM~|@>f!(L`M4eE{F?8`1nA*+cldtKKfY^%Ln?auz6|WfgL9I$3E(JofZe%@0JHB{w*Aca(Vf@9A9_w$ng99d^^Is@p1J; zp<0~|$n1VSg86n6nrGi<^2a<1FhM~`#?69B9bHi<>1FG!`|M>aYa74?iIFz{-UuC* zFW}AZ>wh`24XI<&V%p!ZmaVcL##lGbq~YzyX4jM~SVdH#`Lm^2&Eex~USkErdFu<9 zhwr8(C~$r@F^l$DW8tkqWe;@Dg7Y;U`b(K;ORye#K;dFP57kHlw-+odIerN~JL_8-6UZ~G```H&;|?85%>Gd=!-rR?_E zI}QM#yNlZ^=BTyn*^YzsBJh~r(e?G_eeJCM6@{<+?e0PTYSYX0RXWXvqO14!Rdmk6 z1|X~3J;vNFp!no2_@vC$x29kL$$GR*y)=YXElgU1tpE!xXn;ggA~!%7Is^%c5RIGF z1ehXfh!v&rPcUeJ1z&(AK^LoeTr=||m3yeHAN@eJjHEG^vOqQDXrvsYz9FS>ke1HGoJl%DBQ3CiL_;DsKL`nq5QCf2 zN#PjgbMIOJ>7T9Zse6g15Kyr!L}>+c5{`|&>iCowN>#s-1Ofy+MP`z>r>e24aDR7S ziw=H_+?U|*+*I3Vr3_N=H||ermKuS2m`D;N3~>g61gugekLUKjI3>{giHX_#?LfgZ zBg$SLx_hu^Vw?%@Ez;g!r#~MAC9SD8^M#=2f*@cB#3OgRSV08E-`YB99YN(NNB2sJpmWLfqGFi(yfL|Pax$jNd1VOR4P&RF@?%BrdI@qpi-XUnfiuN zl+}`Nb;H3B{+465%k(GQ5gXyunF1Qm!tVEGq{$VaVLJBOQ(2YG6MjO^112M6Qek(r z)fznguV)S>A_=A%MixHs+#0`f#5hN%#^A4&?xO`H_p;2|O22D8*gM~KYJJH>OGkpTM_`3BVv8sGc&9&i}s@f1Y{gcuiuLo2i z8?rzaB#qhTj4T+XQYznr$@|-qvA5oT!*_6HDBtVeFokHBg07RMEUQle0rUqEETAO$ z3s#!#`lAEDT3WtQhYsC2Boyvt!;GRtcY$RF!^SmRRcZDZjTj|`)vv*_Ez~LJvq1*1 zeUQO++Y=;xl|KC$@HRKl)VJcTmkKS#-)GOBN))EGbMA4hAnG50_FGg~wqAlS>=1~T z7j=Z6+|&PI(WPfm8@ezzMM?k=6mem?b1R?b!K|+|esa=OIodQUlbzPHuWL>?4i$fY zkQN9#ihJQ4syBgQ)jiOGi_9L30*430c}^A9}QQ%)XUAErlm5qjd@ZKn2CHPv0xe z7B{!VSUuOoC|!%&5ayMq{-|f2l(H;XN8V)*Toc@V$~we^Sm=PA!1Bh3>cj%HV}2=c zvo-_OXzyt{Pn1N84_`d zndA&JhBy%qEf`a{a3%<>jFA9M%+Ok?0hJTIYKQtXjx~u~%VYnX|M!^B38FnEK3>@a>iv5NM2+ z0%S}+*B&AIbrTSt2iIeDdf3tXpVQ`y!waTl3ro%nlEv|6lH{syddir17~~er zC0T*2lr)l+h-DPjhQW#!Oz;@Ro9+rJ>h7s%*_Y~q21P1FTaPLWL$t%xx=_-?*w#Cj zf6uLH4>L;W0dG2JK(HRRI9ix>v{HIQzBp%in@!(rXpXBeZvLN5@h!9ZKys#3L?v`- z+%p&Hit$$`c`NVGoaTY3a~-)rh50_T4z>bI*D}%-s`H4sJGnf@E?k!eCo+1|gLyI#l)6 z|AyMfr;bcq6ZeRuVw6s|w+JISFM+gaV7b0i@w^c0gnPJw0%tz#Un?@M1RU>KD zl5T!Ax6tpA1kJu|BdeFD@PY*9E}haX_vvioMPvyNs#@jt8&@Fcg0{EOvT`miVsUd~ z;o|MR(uYK|Kr_54#bqw?pU=X=-f(fP3}Nbx7BarQ=V(qROM3g}^4@vu0Q# zA{R6xmj)j-BVE7kc}Cg_zpj#oCXA^w=xS$v@rkmRPVO%zCoeV@P9~R#u7>Wi`8VG7 zPVYA^j$p11GzRgJ*FEWy5mV{-4C?q886oW z_q(FposwS_*{)96;^Y$!y{?bHkbeX=HjT#8UTx<%wzPM)kjz>R!MtTz=~r^E0%l4~ z!QnV2|IF4m2e5%gL<^?6I2;N z{J6u(GDSnOq;R7J(-ZR%I;`V0Qr)ct5P|pe1OU_epMT((MWeE_=dEb5ZaVI7VIpEr zqVB~A_CuNk6fgqK{PLoO_Cnc5+E>}6RV3`Lqha8)rz^0R(7~9<^8IH*ocxG02v0C1 z8C>VadED|N-3;BKW%W8aY8)d(@}Pu+t*o=b9I?OJ1VX;zsbHG zKGmQ)ULL&Su%h6ISLK;w791qN7!XKS5p1ZK^v#s>$!?}LM(Uc06B&J>N_X=+mmQi= zpU5X9aNl23fs;0z{`^2B34ir149bNN)SWbqF;nwta<`U`amOj)h@_&jZ)IiNlQ7jY zs9&{y%w^}?aufk0c-16Nkm5>89=H%~Gi8Qekf}PDf99pFI(?u{K$r!{a3+TtMFmHm zRTW3McM%hQQat`D6)jH5>bEr>S}@Q4ume%&wCnb2of`3_g!u7|bVT~w;GK3lCY}00 z7zG;jsG?cREZV&q>-F7oCO?dg|U`_~6N*Cr#K5Fw3*S}%)~t@@kYXj0iB z%I=wWLn(y$xSLw~;~p76Zy)K~u;XLS2o%6sGaCf%EI^SWp*oKjo))f!;Jtz)3`bYe z$*Yo3vvSlT|5`0#4tZ+8yU*nBMR5@R^N7Ldxu_iuIj+I_n@`7!CT(P|%k<9o_`8c3 zx|WV;w!g`e8EI-uCJ-hshL8;JJK3lLLVRLKYfk+MCA8%Bk(LKwO2;~dH}VmoNIGdX z3(RCXiA8hbxabln!mGALo7Pz=rl6WwZ?#PPe0_Ie=A|b(2+E~6$~IM~RRI2%N7;v0 z^kz!K&j1~y)m#)^Yjtx~jP)}!U-x@jyb|~yqS=4djr~{gg;Me{Tc2O0{ONNYu=TYz^d|*HWTn*8{>DausC=T->;sH*XzyX*KC1I z-EOZ$IooPLtMnDXTC-Z)yD~x8N!%fSKgA>TCgB2ECWtgY0U+%l%IK zn%*p9J7*N}NP}dM!EgC$0k0uud%P$cI~km!S4fnkyLaCvf~)ET8L1z}e{LlkB_9&w znM=7#M};Yn`IP^p%h_6R@|g?3?^am;J`>zP$hYPl)U{{-c+SGsmjw)~~?* zasY6Iu9yCIm0;%(1f$$ zOpUK427Mnh>K+JBKu!>)`~aQo*><$Y8U#mtNs^XtGSfuBNixg7!#!E0t4cMzF@}kh zFGwxlx=~-P4*5FLM?>Hj4}rT+%n5NaAj%^gBBtm8uB%PNrjnkxziZdSKeevTi2yjc zZ?SeqA!rb^w_YUsUKb^t)q>S}bBlhJS*Jf~-bgU3+ z6I@?k2WL75?b=^vYyWY_*npslc+!!*T;q!QjxPzzd~E{A9~&8zF!kp1*a!9lfJzPIj- z-FsTr+6vFSK5igrFP!8y;2}a?TT!^@7e$7>zm#}y*lV^9NO4~hn~(gTycCt*=oL}^&C{WX0TTGOHi7eQmVMP!q_Urbq`-*piAkVi`Zt7JT z&QR_f$LjoTU+aj7Uo-?U(v!bCFsCltgd|Dr$-xAthpxUSXVRbI+Bl!&b2iA|kal1q zl9D8-HRs`$?Rs0@+q?P637#Ia4U3j=7MzGTq_Ib9Tmm`6XWcdfO+MkgwUtuMcE#ap zdpj{Fg|lBcbdP%C{sREN^rZg?OOu~Vp{BunhnmOApp3u(Bp^sCl=m{-s8p4m7g*)- z-08#K4L^6R0k@p+T2iZnh^Z6#9{k~bi|l=5QJfZmva=iqBX8hxw)98ri2{vn2l};fHQ~HlLHxGU9Jiru%PBvcgXV2FgzZvhV-3DF zhH9@(7Af6GH0^>}wtr`D!ztGVCFw`&*#iqTcV~_Eh6t{-MDP^Au3i-Bf^j5lY1kYp z#Ba(`Lbi_@`q@qmf+5PWAgmAJJj;$D@@yo*k6^P3Fy|Prr>-F3sl%hKsbthLmsKA| z>7rje%SnIjrzs-SaTd3h;`0M{0tj*gHC*3VuwRV>2~~2ESPUdU|Ml%?&nDANel^f$Aq<(!Ahi-}t}<*v5YnKMt8>w_@}!6`F^DE3kA|~H zJM?24plqZ zQa210dd!POS0mN0>4>}HQet-5qFunN?diQfP5k98D25-(u_gx_Yvls3?+ou|*t zc;MZgH0EBTpUVt-^g9@FQw@5o6yrFuq%j;jC}a`QZpCYOm97a;vnccSo(oee;^6IY zkDhN+l=xn0J_C^68&ZF z5HnUC@swe=pr%ROE=>#0bm@YY^UKNG+>ih&3(Ouv%rx*flqeB{Sayq(_-_oR z&ZHYJT3UAhvfbH%G{hz&QaSRLCBK0#fEVOnu~<&zXwm{uQtNSRaSWHd=UZZCOXC4` zXQ!s_=`XPb38QcuB9ra1qMGB_9_u#?iLXJ8}UY%$0-%UNTsWx!Mp z8JK)Iz~a}ZI%0+xSW>paIspNMX4?l5JOBbW`Ay_|@(z87*!bCG!6ztZ^jkSx@^=+T zG;n72|COAvB{QMGQ6*n1fFl4#rL(KF^nT)4!IS$z1Qv#n2_e^YK%my+7hwM58ozLU zU#nZ8G0P7f*kn>ve3o8z+U87TfS)1t{Vh>sOwfFnUQk1+DaWF2HNc`2)vrucnFDrg zwns~DL4=G>;3 z(Xh&)UlUW6p^k>b)oZ_`c|9h^*Y7%p|RkQUZ{5(;_`Wrf24jZ(4+U7 zhPimF}he|c!?S-rx74;cq8?`1Z zlTLB^TX)1rH*^E~TA|@bimjm(d%LW$6mxwa&CsHhJsV&dEer>ip@d0bv0^=ru&M>q zby735ENcqzW^O8)>!JutpJcgXO#$xQl}`)s4?O4ztiQh=-fz4QXWIyLQC;<>M-41`xLYvYg*} zd>8fzFis^If(SEK?o+Z{p%WjiLqPcQ4FY^A->PR%ZU=-BaH*SLHl#%#KB1;#zcMi>a6-dfvD5--Oy?8Ed+Gm~tz}KD> zzT!k=-A#tuQ@{+E*v^Xpb{>s;XOGEP{@Nuof%E z3yH*lj69;@@Q^|3sX3U*JbN$>5Qh#0q2esZNAU+g(ET>4aW2*C*J`rB9snK@Lf@)p zmtu!;7_e#ylU4xiy7$NPQFAvF z8k>C(Hi0-4SWBMI$IHm6G0LU4cL5TE(y3pZKMuf%z!kaa@n8h|$rYJo9(y-PvG^hp zd(#THFGiiRe`k4U4|7-*u$CRBxAH+-b^0*@T&NSE`LF_qd@TMNNU+u27PLEea&U)z za{uy}9CH6Ct>y82srN5_$nE3hjxwvYf9={t@#{3v)|L&2b^CMkS~h>j>*Yr>hKoro ziFiL)@BGElL3>OJg)Yt-{O|HFa>yAdS3@OagEBW&y2=Js<{rQ)dX7tO`U`u%6b#8} zq+-Zg7}SpTQy{1FTHV(CJ2>439!^+Kt^YsU(S)gSR}-j{vgj~IUU`_X*)Z-$%r zN1i--wx{P9vf)3-|NMjOPYeFJodP+H*NngLIpIh-3&!pHc9`!Euq+tBza!)TZ9jL(6W<&_Ce$dC)r=u}2`gy1!>(wR*`z zmQllCqRS=Ib_qKmOub~mEq|xDwDU@YJ%47*7#xQ?Z_fgniApk61qJJmAh!N?&UGs! z{k4u+H1JE;gOSb;m*)vXk%*z+ZJc6js#(%8Y|&*{6@|6g#ipCB>M2 zjdNQZ+&{Cp(FRdK^n^wy)%VkT+p~W8&lgadX_mAGX-kV7qZ}5T+pp%iJ*y?M*dO&a z`>e*J%i&2V0wf24tv|TXd-GCy6Qr-fcSysA+*U`F1fV&EYeX@M>++vSTTxWojN34Y zfY@X055~Ie7H8uNJB6(%3wi%~R=XFmY9jLo?^ry(3~N_lPK9v0Fpa!hBhrREqrXM( zTz7!J53(>jj#REykYbo8_DalJ-PJE0-e1pt1DrOmFvG|y&kszT;{ljuNqO8m14YHz zsJw8dl~rU&{-e0jc9$P_u|Ik=TE_;T0D*tM=9pvzx5qmju9#iDF1#1BbOB6ss!@31 zXLkrAp{Es}zhrG4xGYU`Gb1){jOc$peNB1Fy&*ZZu-mhD=J7m5p?5^CE6xIb+;w&I z^a5aapq(SD(RiD;a&7G9W5n0~Y|}pYZK{Wyd{-p8Ia`WLx8);tw28_ps`vzD0e7Fg z{!jkK$(D?Ii-DQ!_X$ChEYS{C2#VHx*$%}AN6qS7Nf-#(*FcSNl{I@*ipg#z;`}LY z%KZn07tl=S*ooXqehC0+#1wk}Zz{-^e3OApmCP#!ivap{EjJi#vVI379H75j-Js~jIkMo`GK_2X&4b^urhgBqrO%P(Me z3eUik;SiOKdiAPWmSFq6QcSKTWz(uK3=T7H-lrsY&RWC`LMvf1 zEwS@IIKv?CwP6*#{yoF|6P@)GLkn-vEu0TA>42S4%p*O|kC#;&-%3E!ku!i2acS>+ zfQmCe!j*xs4Ci*hO#xsZT>7;EOJ{R+R4Yx64*_#f_JVn{B!%{gJL+aI;Rcpz+SP71zTwovJ56Hz)+@50 z=~{OK-%E*vhhYRuD-587Wf&$9g-se^nLIe=Xrwbi`yrXWg#^&}#c`yhoe!Mn@vcAq zE)Pf#OwmS3)eQEGn(rF9Y_aY=-~XeFy|UpJX^e2cSl3ZqPsn@?z+g6~19)|C~h6@1MyWPY4{)_gId%WxVb_#UkfQ=w3 zbxr^yZTe0e&XcvrBWLqEC@|v5E)vL#L;cWW7zV z-(=t2>LWXD|Na!&Kks$uA5n7HV6D>}kGy{VE5S6TYr@MPKRmK}+)S#szQrd~-}N(8 zq#*Ag346q;kywddows`RCDYRSz>7TV6BTuuG$MxJY~)bA$%mu*1P<+i}@E;jmyQ!ywIOlO8)<%u>orjXBm z@xQHIOkZvJxPDruRVdFzj**kt85;B!C))~aGu5}%9R!cA$N1LFt07raRjNq}m3{Rn ztrIo9)^^uio|{5gh3ZsK$qRnYfCB`PA^4o`XMn=u$b|m{OhUtg>@m+-eOE$@w$xWUX!VhAHv&LBUhrWC& z$ME2~cQ`(n>9uDFVMnqiSmkW6Ki-}}eY;aKOB6~EWQVnOXe9+SNSghbp~#gL()xGj z^gk`sjQp8&ZwHZL?T%PA(eR%-YmNa_ylV9~z!d`bvc6*)oU+L4&E|Z;p|aOpl6{i- z=Tg!Lc&|T-+HQiONvunoF~NI5*`~3+;BK8(!2wFdbIYhxzRoBCaWsnGly6sydz*PI z#j0K00F}yOV#$tv`EEM4B-tRQ)1wxA`MFP692^RGC&VlU;^H@|!#j=(itqCvq{l`x z2{sV*?dBcXLXqaej*9mhQ>F!F!47>=JYBg|3bxps;U93V2BaD9_-XODCze6=F0AQ0 z=R6vg;^=lWABq6H3>_Xkh*XzUTHHXd!lk+?0GB&^3>)Qz*m!vCoaQ*03#+4;I2%70 z0%iwI-4goDJ)z?dHkpKK1f>0m)|5XqAGVmC8%gV}40!iWyK+uq{ev1_bc`cQ;bK*& zXeA7j-&Ijo(+(A%Z)AcrCatH#&{%E#P2{!}yTYMD#D!sXZdzttSaF(6Az`GE!MuNyZgC6+K1ajOdM0kA7Q@HC($QZ>=D_p?XrdG!-el^K6+pUPI$S9x z`BJHkK+bTvUkjOP+ZzODoj{!XUw1kw z7T0H7b))%Q56+Cl(aCoh5iGq|nJ&ez-^HDP`0f4}4$3>@i`CIShjWqEQ#`F-cIEeE z=?A+=IlW2{rTzFP#pirV6Cm*7rBfqjVdEpBGR#Z4eWqdYZnx^DZ0;BQ&YG6L7Hk68 zC9e6~y1Dxlx(zRmF!buq;1`>`ov{xOK?b zo+Bv0!javayCUEWCWp+L#nqf{@-!f+E2eE?A)6uZm;ZW~((!QL4>-5ny`TFTfE?m@ zSo@@2^bHI(^}T?vgDB`E@r8Oe>p8OMZ>cv**$VL0xsN>k^L#f_tb;d6e8wy40Zsi} z3l0?G^5S4}=cj?sK;2(kIYt3TbCA?BZA(A@l)Aq$74uJ6X`f~^OD>hlEaI`687kWdt zs#rgFIJ&l5`+nk{n-(^w87+x|Tsl{AXVr#2r4|y}pnYnnB*RCZK9}eYlPPr)?)2=g z1ui0UgkANRCu0t2wrCIA^Dgv|>1>Z%XH8w~b}#%aS)lvnVuke>=kBnB_p5Ds(G3iX znkMBFR1A79>EEc4g^4j4bO#y(jFmk(7xv4rO9=>74hq}+0fYh~z#jKCd?1&uI`01K zWiV#WBclBS{3OgnPb^l1c?g3o?uOalFGW@SPh86)Z0;9p{OD^a-CQhH(?I5-K8OL3 zE5*UU(vk5ZZ1|a3vNO`%wycz6mrAn_{t7-VF%Um1Ktomso0YN%IgJCNQ3}Xa zWgoBh1Nux-f}%z;UbhJFP38{_-JT|zstYT=q*&&jkfSD6qP|!IJvFFm;X$3Cq&skb zyFe+ap6_>sXhH#hOGH{lgE54(S|cZ3Fl*W!JLApJgmMM!9~$MrQnPw0CFZ5(h>Yue z?!hdv17iqDaAg5e*?=`>|3cuPjW&V#cJ!MSop}mA=|I|03JWWMT26o6U1!icaWVN0 zr{P*<&CZd^n_B<0G?bpyU%0j{W7rgTcZiu#W)E} z8hv-uy+x}UhqT}!3L}bofB{jNjR$WK>39q$Rc#dA+voifGh&D}my_JDr?v6k1(<39y4 zTl;FQX4h=~sUH52cCL53*PD;K5Z7j(y2#p$|6n)APfL#rM(_J|6znLPqJ2b^EuS7n zn`W=B?X&iF&&b!849bkv_#bNKJfcmCXMl+K$3-&5kJ2%Zlmh8T&5!^UXw&p~ny5fY{vB-H;}LtG-X zwVsJX)Rj+6`H$3J4C8;_0x1R`iG_plzt)!BQs2S)ii> z{FuNDA%P?4l4?Dfgy_dfRTI_yh37_|< zOI=@CLV{(IfX69cFv7z6cB@oU`_d-Bf2T9yio9MY1tD~Qg(71#CwDxUu_i{wk$XB9 z55vY8D_LK?W5>KzPmqJoQ%HM-73+9k%1DSUsP03JEwO&yhi)NbrJ}4AE>)GyfRDys z@*)kEL^0T?*2R9|egbBa2LIkyBR0IcpTdbWt#iO-Bj@EOx-stH8>W-61QZPbe+iMa zP&Y*OI2d}?-?e?kQaLWZ^0ZJ@nfx_=ELBE07B%5?i9|WEKJV>OELLH@VP)`j6>B{M z5F)!D=#!%cH;c9_jUt$aSAs|{5AlpbcrG?zA$D{}9J6&e>a%~ZaMAkmGL(vd8qa=3 zE<7Cnn|ek1AQ2&59qE+~eC_}MPKRxd`rxfTd7hZ{DPFyb=%V62%}Xe0Lc3#ayf?T= zs+~3HlFo2sC6%g(jeD{yqOfQ>zb+WaJCa-7IdvY}wqsK-oI#(N8BI! z8VKdyY_Too)PesHw?f22ETAruf|U3$Y>AUy;!}X%xZVPlKA1J!Zejs3fsi6gE{;WNpDvCGCX0?uA+r`7Q<_Vo?}i(aTkx5uE9jW*C{myRE7 zW4keKJz@%=uD5W~j}!B8Hr6mb5>qtzwtMsUzuBkvBvYKt@loeD6B(uh;PP4o#`x}t z-CA12^^83f_>J}25!g2YLYGaLPx&rJV&9F(5Sc?cQWb75O_c9gT2K$AcSK+Skgy

qKG=P0ajV%47cJMf&lECre7f%Q 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�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

G|OLcxv{NPKuh}9%W7hd`{0`gKL2H9;j#!3 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�C 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≻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

n8LDllM&)={f$gOk1r8#Nw!paN=FJ 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 z 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 BLkIu> delta 1550648 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%0A6=dwlPu% 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%0D%9{( z%Gr;do28EQI{z*e6UNRhDE7i$uy$4;tiJHx4eu$)byvOI>N%6Fw@L zjjL*CMQX1C>jYvFH>t{v0fa6mN6xIsb#k4IjV&J#%gi1624i`Kh^3QtS#QCQ9re%f zv$Ks45*b>zBIOu49vW$9mbS#<#9Bm{OkjE|F2zz51v$f4yJol`JnIw|A_o@E+*KMX zxSj+d%5H|=QTVa)6*WEvd%7VY!K@R#=lP_Soh$+)gn$lTP^r)HZ_a2Tgja-OLYPgo zA-)n*{)9X9tI=iOQJWrRm1^C9^6VmXx?P>>0xpqljOvtjUgd=_;n0vhVOM{ex^^GE zFZji6PFLgEZBOC|PA9&Im$jf+nI5hh1k>lIVA=@n+@9YfR=H{yGru(b?O9+Iz{JFz z_`9~zUV*SJ?iM8EusQU@6p1S~Wrv6@im1*bf9>J9mtN{Y<70VDm6PcrfDcEb-vs3T zFOLk*{hfUw{=F+h;M<{#;Md#nr;wB9zM%i#`pnlZheOM6baLeQ zBbM1LBErA{+luL;r9AjmdL)f*K#F0HboaW=3otU03)$v{?em6x@BP&|pK^V_yuQD0 z@Vmx`im}KfRo0$8V>;o%F$#pC_-S_rZ^}BWT@q|@Af#-M&mfwJVboTQg&z1%lp2jX@ceLoE2J6sUPNZ;8N@y7>)G+$p43wT7>X2w+ zcUB%Cp#IS^RFeNGAaYLW=J71t4Sg_}1=K=Fly8V8G_lV5cY}+wP9CEw`JIWnB#d?< zlVf~A!o+qzKo)jjaL&(wZMZ~KBLxg8H8ojrIFtTKoQFFsh#1{7u<0`>(rb0m*tNm#yVzpFhO z%c%Z;D{N)mwsp=V;2VY7Q&=bF>f9RAa(_cjuMjyMDmaEAq(UhqgE;R~YYq+vuz0tCL?j}2kUVlcD+r=JdHeU>4D3XTDk z5=)36LKMLB1w2}xFG?tptO#2dZi+UCTf)!&PuJXWu}mTd%VBGY%GYVpFJ{m0aj*D= zsP|=IN6c+OGL(}yy}oF47+gdzB93UGu@uAEHfH}Mi@OLzCM65mfb-y& zHkBT3nZ^>aa2um1Z z6k}M!$qX|H2L>u`V5qC!rxgT&TnDc@BWtTU-yDE}dL!S7*+DRaOD29FmTlWYNXIz9*IGb1)aW zMIhnt+{uG>6=-|aC*d(zz&X|Qpa*EWr5saS4`X~{0o*5ZDW*c4QLN7tlN~wKhLow5 z7Sv}ES7$e^nf$iE@*{CT0B4Hiu-@P|Ac(Kan)~uqof*_+!N6ggWBVt=&(OZCh$S5B%O$#;);dG@Flw~^97~}hyN-7jh zgqy}z1t$zZ1)o3WtZGz*B>Ko0zk9@{kkouG?s3?L6bu8crf<>aFyzcx*PAMvUPBS? z>~DB+#m}18Lg2^N;N&t)|9u(w7yB%r2!S7o;i=L06kv%1vn);8VZ1p7h}4z9-{AhO zS`8x8#>-iy0j97*H(%6gTiZm!vqHDM5pEyUAVAwhC!`4(F3Ay;qQ6zu3P;u^dmxOO z;kW+FMZZzq=B^(ei(YzeTvL0&&&dH4T*|Bs6)TwB2H0ebT9RY`P5aHLh2N+~GZ?U* zpM`ZN%9OJ@I-~qTMObsi*He)kK&AS{%+I7!r7gem(R4RaV<%Pmqor`Msi~R-v%U${ z28rW`Yb0fQGe+&tPJ8!sH0>zH=I$(XV=R6nQuba^!&B`1Gs?FB!_vUU62}(O+Ca(~ zWJDzVC1BJBQ7qS1lA(Mk+o%#s8!O@(a&*ZSYT8E?%TnZGy$&rne4gf+fU$AE$)>LYYIpJZ30BoJ6&HZ8d$uBYD0 zxaJq*=u>pkROX-PvK>2QQh-@xNDF#EK^=6^kHl-C<3C5PzW5vR-q+`0)+gApLjchm zzi&Z`6b{he&edeZY(~_{E-w}c({`478WA}Dt%s1eTbbzJ&$&(qIyel1^~;Tw59r&O zXusoD5-@@j|5P!`v&)*6qzbu>>^Epw3F)eIf`BqnIkZ?D$%>Z*Cm^! zvSk8Zha($g#WD+ut~K#`S$Be$buXDj3=x$U3e~n!Yc_NlK!-MiXa8phNK`M7|LSwc z&tuc?Ey87Rsa`-rzye^J?UNyPJN3n0Fq9zp*`P0(qICRTpp^E!KVLj}4sPj> zGFH6#7~cDr2~X+}$krr;GxR(S&2X0xQ^5RjhgWAT)V5Ar){~%+k7g|rl91u#CuH#a z?;2GZ!Ec0aD2ZhXU*1=XxRERD(n%mTb8*jL%l61c1Vsa_FQNCPci)d2A4d{mEEF}3 zp;HXa2^6T^{mNt`)2J9ohxFyf=rH|z)GMp;pxTZBRH(8EIHtQ7_8^QRBpcb>i^ROI ztcfPaLq>w9SBRa};ILYAE}fK2m+@qAN0~S4wKjK;QkAGlk@2dq51vsz#O{F(DmT?@tHfo(R>V%OZVEEn}oQbePv^| z5aY0P*>BAXY<8$}ljSzLbi(|-NgY*2xfn16*r5>+#)pVX+ItH|yV^m}Jzi44bJ00> z^GPwz8u(}3g%EXjEb+srJrv@hsh{EcR|W*-@V&J)a4+r%|DCZfU&>RyWe3^Bn3((_ zug){yppA6|b~TN(%K*Qjb50Mq(`lvqM4vSMx2{nSsGKa2a<54xfT{%$zRZFdLXmNH zln~)@o{eyaP>Xji0;b0=r5+mlk;WbXVwV(++H)XLG&+{{9qq5+aqw(Nxk$FA=Imr* z+%sF;4VJ2qw-wdUpj${TX)Dh=nGTiDjk=Aa)(0C_s^kc{6cX%;n3kirKi8?iH_aRK z1L#bEw~t#t8P?w2SVTzWE0_1fDN7lHVZGTc`9M>6eM#1?(Ue{Qy+_pnW9aVE9WWwr z%4FApEkbf`ABc&OVDGo+BZ%!qGH1?pmsCAPE9XUG!%D+Jwm{H(5MnPz9cpK)BBViH zWNR1QX(4(npeocSiqh zpwC?b`hwgn_oJ-w#s!8_O&Ts6b!zQuEZ|35a0nlGjObdq3O{T{J|7iR7%8c_r2Yx8 zbHcMoq7Ahe`Ei=tZkU(GB8u)9wlImJC)xw0E=e|JlWI)`<`_!Ff!B;MlOV_|3Yz`G z1XOe#O#G9d9rXDmA&X+(MI*XeYSMXy!qBp7${D}1U?YM%=Efj^J7zmghUA)-E}>MO ztc^AWP``vJ(!XPSt>8jY!MhydCU6YAxWtVhMW6_x4+oIOJt5ema4O6cp-_47c9C0Q z&DRyFfVc^WyTf%uGn!Sj(n&6xt~EiGQK0F1Dz$EO61liO!8pq)DrVG57#&YucRY1r zrO#U}XUkDt6NRLZq}ayE39eIefpLqFzUA}$&MFqrS~gi{k^%(3t9S z-mpxE*@T<-#l82OttGLirYw%Naxz?yJ4m`+xMW11bZEYvBUSr9zG}U7iE9P!accHE z%m@=agf{;!_g#S^fsY)PLCwS5fg7%-ta7ow_L{!7C|MS z+n$?~qR=HyLV;lkMTPB(miz~tlIYs(j_%jh(I%^%oJ`lwsiv(uHvLf*9-to{um$ms zMDFg=PeiAx{%bxo;fKR(1$Tg;Z$#JA{f)mRx5D2r5^{*yi6W4fMMGj~^71Tv){&$t z1E$?RYHu18ocDgnM80d%-!d2!KAwPvxj)nHxXku_1~)v}y^IOLJTNRk(Y9gBj*U0# zdvFBEC0Hvd^`h#VRa!qweezIJlRVzn-%GvZm*E`49s`X+dK<)t0OO7ReU;-6*!BkZ zZfFboGfvlXo8>Xu5LPyNG?aCO?JOj9_QC+h!5CO`j80#%p+Q-@w7J|6o!q}{l=nKJ zo4>LZJcmfeN~DZ&b^t^`a}6{cbh|CHjA_+7gu;=BA{%>j1w9e<0PBSk_o~Z3_gm(v z$ya7!ocmlYe%!fBCDo6_QT2URp)hd}1`p7Eqkf#K;~?+6w<9D3`mFOI{Zt)%@G#=m z?keMah{+`&S6b{ryPobrBnDf`4c-SQEVTK$Nae$xx!_FJt-M@7!nk6Q;|M6}eACr{ zWH-xp7o^5z9fG<)>K#$KgVzo#`SW9wFYnReF2F!=hN2n+Pbq^Y{UV3lXqy3@wgmRm z{CIv)8_kH^?zmS&?^eW&mEF8_<++8h99RB;kbTYMtO)A#*F=2NSN=8 z+O8_(N(vVE_uv#^Fw5(2Oe?bCEsA`4mT`i~!>ya_^6Gko`3-lc8zi{eZfzZ}0k5it zOjmJyk}O_rsyHvC?9L{n;?(bulC5m`>>3=1qZN-15}U{0Ayj0~lIrMTE|8U-Q=2nr ztFlZ_;tn0Yc+p)Qfe{xbb>SvC6O2F>>a*XsO%!WKw_pfbPhOBpdRiMOE-mr+RX7g% zRWcPFmNqilglXDn7rUi-C4W*SlP&)-3F`k9uSzvv@j=cvf*Ov1BVbKB3jWb4=pU>3 z^;dJTPD9FQaW2BHF55i{2u-wNT8B%lhAYh{tlj++h9ck3_^6jf>zzwWKIP;iSvm{3eItGtR8igMWJ1e8{CUC-2i z9sOkg#hcQ_=1#);j*b6bkvTlMu{{TBapeFCw>BVcN(~}Ta(t-B3d#l~b+NnSg3STq z^9vWv34YNf^A?5{QaE&Q#Dah<F2yES7V*Xhom?-fXTOt_FTS@Dld*c6Ro5^Y(l^ zF7NjITYk?0>J#>Lf8ISjMXp1li}|>{4j(2&-Wo0Ubnt$7f8H?la!&ngUD9<#ccZ$4 zGNV~vT=@MztOWT;;QoGJm%=wI!Recoa6xVu0Q5`Yu{+!UkCiaA|CIna22De#&GKdr z2B{dldH=y=_ib0ensfFTqL~I8Gaj45>=CE7Koz*gpZp~bUX8;l1z2;1w8APB$-t0* zEaEUzzdMKxhG$8o-=t+proF@+jLohlG$4mS%dn_BOojzES1Qj7J~SAIfySoB!u}Ns z-TZV_tiKD|4IEKn?Yc4{P~vRr1cL}UMk;IPulgzepf2XuvPq4PM~z^5Uu@u}*~cBF zn(#@%<|;9v9R_6<}sKa~TfZ7Q_)ZzQ~d3QBmhQi$&XMHuV6aFKek} zGd{t2G6W8sszs(S=ffKfn`whl2$OY;&FZ)=Oh)_)#|ob!RKSk{55UAbj)lm=7bX>v zvdrx6u!G~S%|J@)B^Tei!J{QlXqw>&laUY*Cj*eiShelkDM{TZFyqqEUp7p z5<&baX;fvMzP3)ps%E!_#iN~ISFwk}GYP9+BuW6D^&G;k(bJ6)#+e=+Hp0cV)l?kg zq%gbU-*V-LxU`>_rWo6#O7S&8NtmrQPO+oX!&3J?eqq&j5wYc3^9Rwliqq)& z(R2y;i!YYih+33Q1}hA0k9Cxe6KFr|TdrNujT%wJ?b+&nZv*LHt-ID&W&Z ziafi2i2WBLl;C~U3;J&^=9Yk?QK0D2cojBtuCS;8ZyD~G`e(ku1NhmZCL+~0S)%{r z$q81a9{arJr=#HKpXr>hy~Grbmyruk#F=N{>QM?}^|SmlOx%z8XN`X;h^6GygFXIT zq(f1gz##-Uhz` z|DN3x->S;@C^jav=L`09=eEmo3N_W{I*(;m30lICwjuukqB# zX=gMrnHUUpg;~PRqGfa3oCi|>pP>wmVNFCm4*S)H{}!|VNjdsrZiust0O;|V|F^1y zWUHe*9iof%KRORXg@p(s{Qn%{Jeu18-rBeM(vm8FdsMzHD*xwI4V8651AXtx|L=zP z+G+RL$88O5&_BtLLlzs?eV@~Ik4(sh-p*g1Sf>rANQm}BLJZe(7NUhJ&zhKd7$3>Y(R@VdbZgv8^$9V2ip zCX^p{7Ipk%&GL(}ryF>3v)JvOb@7BM+j3Y}nHjuQ3V$0cT+(fqI%uPJn$0+F+t*#( z;-piQH@P)F+Rk7nDH1479%w(TS(ubG8GveyXK870hHoeRHin9*{OU4ZFZ=*uqwp}Y zyw29v0_DN;Y8KPx<^|ZEESIouOHrzoZKHZ$ERO)_*ep(#I|CJd`s*I!?Q`C(CX6w1 z?SGEDADcTaB_$fNOyV_^e@2M~iTw`c&bzY?W5$Um&(ushiIp&Bne=#{VISslb3nu~ zl6`up109>Jra2`-KKqG_D6G!wnNpEIccKSQ8r_S|`8mMithfYb_rJM_u0Sna z^7AYyTVxw{RRJ;NS;eK+Y0`Yuy`$~guB!h2D~UDp)cAOm)^jJZmpb0WL|fpnCJU`7 zsB1gkyx1~{@>rab<|wdzACi^`hkjwu#o07yc5q{MMKmQ(`T{_jzzW_MGZcdwJk9pX z5owLV5V<)yfrGsue3j0M34fXszci?zyRrVc)BD<=8pu4rn5rPZ9hrf zkkccHQ6fOUTG9U;y1W_O{N|hPHk+|J(8!B+7S1&PXy?`At_XDPx-2sFlNwH~Y}c^X zzKv8XaA|sFK29%)J}5D)Z#lL()rF}#(M{=AjT=3m-!V3JRrDe5 ziwAU%aj^g-iFT4XC91+F6kaZuZU332|J~4jbJAz)R{me)4j#4)6AmQwZ%zRqqmcuK zE~C#J9vZk_Z@f=IvUL>zLGy!1Cb57iR?!I`cn>cM;>SB})R<4m0_U?-S zUDy5UybPLB-PlX7phnmG4HHqkpz&B_s5>A>@Bz4=H+t-yIPwo%Y@`1z2=br9-et_q z0aV}M?g~(e^)$f#Z|VTtQa3+v+s9|`tzGQElbbB53HwkQ2NRJxH%5-YVEDy}{9E@} zv}(6S`#-wJUP7@~t`Hx03KBV(sEIgbvk<8aAQGtk_GhN9M0-2o$MC+sTz}KwQ=Kwa z;DTHstDh7oapj*WSz++umC2@0$h`id4tvPp77*N>2u&YPK5aF@3{nT?v-OfqFx3B~ zjlf_KN>+;K39caqJuN|m$Liw1hPmydH+s{M&#T~44Xert-OxO})${>Z{Zm$RK=<*BpFWTO? za%MU&tRjYT(d?`WC1LroKkSv($;-XdrQH2->J=XoF?h48B_+IYHB5FZ%m=)@LJm#RzT)oeDs`UfE++%)P%a&AfMT(G!xG^yQ|VjNYfdn3`8ZSAQ%HNI14#oz;_>t=I5K4|XN5 z%G)lMMn7^ESKwK_Dot5iE-2qKX1L(-yA$%II{Vx{w9KhONQXD6b}k9y(Ck}mQ!SaR zuGYZrR>dKpp?}5WIQ)PNBhx$wo-{ojHpp!zLFz%B5OWe#Zv>Mi?y!MPKB3ZZ*TOy9 zQiYCwquR^)PMR`~DI90Wz6;Eee<~9-Ze&?}NwB#SCyEs7e5l6*vexj+odL_A$_^^J zQ7;XNOs}g{;`mg0V!SX@NK4*wnYxN(HZNu4q{B14+0e^G!@KVWu4OvF6!vWg@(dH7 zB$0;rSctMw2+oQM%0xUgi=^nKZIP}V?-UWHS3YrLGX1p||vydR(_b;3a|L z#WmRsHk*uNGYbXUNi(!n*GPxppKpp^5zz`tA0;XOzB$gh7zHYK@{LhvrGc&xw>Z4Z@S*#rQQ@Rnn)jtzdUUi5vk;3Jx~ z)QXe_b&z_oTED+p2|_>D!e^TW(X|g$hLIX;wSxCwCqy&-1v|bm5t&MI$crbIj6Nql z%PEv#O5^Rx$7heF+&uBN%?ryPU;2A$;94SDEd$yPkL9-b4OqZX3h8UVI3wN#6kkdd zupFnacnLW?V_|+Wasr$h4VgNA!1rFQyggd$^PK>hj1+9cN?#>WWD{Z*NDcttvC>DX ze{W#6-%ugp%NC9K|2iqpxc0ImE=e@;B`_9af0PI5A^L(h68NqL6Y*CVQxY^#yF5t1 zK&Um=f^w9=H;#YYgGOFM-n^9Ti4fjn>Vo3$)bd&ff5>%sreF=PEW?Y$*MD}D(O`2y+m6-<9QTeoF(~y(Le968ZhUubPUs9IE@Tf2cyzWUaUjYHV)IK5Zw`R z%#tUSI6gl|VFWPA_vKiNxJXk2+A{7gi9zc^J(ss7wTFxz`E6N)U z)i3A+$tnd%GQE_&S@yr*gy3Xrlb{`)DHI`{V0t|BlLZJ?XX0%XYL+2h(jqv6n$8w4b=wJ z&(_Y`tCu4XnwkFLwm->+wH6x@4`QtLo^V|B^9if`H`e)ghXXcxpZjptUuF>Y!?a{! zSo5$?f0J|4B7Mo`f~B#iu&aFAzd-T!AsScymp=>KY=D$tE}H-5U=Tt7C$u8N*a`{} zs3AkA5v;Rea7>XHw7L7A;^T)KGRcPSA3WPX|6-%N+Z_DVGVDUklE=H-<3M2}JDB2Ij8aJ(Zm7ytOk#skUNCvj5tdCBCMrjk_UWfoRJ<$9hCtg)4s{#w z{78Y-Y)5fF)~A^qrX`!K-XeyVt?mF+u9DF^Y%iv~b_m=~$wr=GMX>g0!~YKL`g5l) z!Tl#nJq;%^L*4GqL0|PctwLX|b+9k9r%S%F6c4@fWkr_z%sG^dPU<-c4^Q>aN|)=& zfR&{<=Iac+M-aCC;$1EFd7UwhbaEFOZ4QXAa#f{Q623Gd?@hCmQozWSNu?ApcS%}v z?CNqdRocL|X{&rCndA3LDK&dvj@Y%N1ccGFDEt}9_#ctcL^4E5)p7b*U4hPTuxAFo zE(gGw0W`K)xB&t`@kE&n3(pRj(S(v70>J6OMP$w2dhkOs6UwvjHJR~FXS_pJ{}uUI z!Glb{Z_LSvyvvd^CB`*VhWBH0LAGVq5xm)kSRLgNSt=VyatL0u#{>CO z7^7YqwOJzzDg^1SFVZoywylz?MyM~(cW6qMuylvt&+{9CDfHE+5XpRdbF;rs(D!*a z{QmZl!R7VU#pCbs^<2K)UjN_hOTg>$;e2Gh(WL)3$jI&e`2A5f#_F$Pb2_*s^z95d z^IF8|IpKAm{Cr;Na69ngZv6fBX8F+P?`}7;P>e6;j8dl*Zqe=pkeqmHq#8&DgQR02h zoKA5vlv>p+;woHsR$qmeNixN{!z*|(ENsBX+1w;((V@IO>s3ba&l#&zG@W#L7Q^*4)KygJkcii3^3&aJ5dhOVF<*4l+|TS#!p@aSa-1uOL9 zf{5IY+?Qow;iA4c#`KMP&-KpW1YWF6=x+Gh^=5pQ9k3ak#Nq|@7#&= zQnoFpKN`G5!JTZY{0c9mH(d?M3CY)c8wN5~j>8~ZL62f@!y>|%mA!s0(D+vYlUFCw z!<@`DO{oDS{)nS1qtpR@AEmn^xD-idKJgYOM(S(BJfpl?mj%wxAJ)^y!-htb;Gk6}8oM+k91H>0V<4 zlT8J|*UegvZ`O`{TZ4Z^8RTAqN`%_d{j36?r7_p=j^L8e&oLM@_wy^kZ(wxo5BPr5 zor=2{82i9QuifWxfqcX$QL zE>gZi5jKeBSoUnFI_hJ!1^Y?sE`b7VYn0?rms?c;ehN$&T$6w~ZT>jc9qOqpY}K^g zx=YH?h7Okk!G|sLE`bgNx|*~c>87`GSj8_-RAk^D8#zEig3og7%u?V%P2~3((&Sy2 zSg!*|P?@D2@{^~;XpuIxA6|^3?O+Z!LO|7me1iB>;w-7ZTIAxr3wuL4t56%voc8Dk^uH*UpE4_?p?uAL6qMz zHUXTGVOXiVk_B5^0E<~-VNt?(%lH-I?ChYW88_hN`^1jJlsF-1oVsn@n>Vl$k3soY zg#}sqU!nlfv3H(fIK9*t72&_<7a)Z)DzjPF`EF!BFz|C5(T9W(=jOr_%VEt&i3`IU zG%X;&OhJTj0ktR#_SnbAG>c&g?jJeqM7>|UY!b>vXxP+mWG7P4( zq#wv>$60V-{of0l)K=Ccd2p<)YHJ-^=(+%E*K?K*7bizWA{nvwE=0U*0v&i~(Dfsa zA__R|CSb{hd!WeBlt(+lo;TA+y-tLG0(GogioHXUjG`i1ob2W1E(FIuc(l*bV=Ekj zg`R%rtVnyxgPis34KIh~`Ml2$q~_@RrRc`Bic*Mij4l&T=M611-1r-i(ZMW zvdu=Wf_b&ogod};-Tu*7sEJ=`b{`JVc04hv$f>R7ote8#f}iEzbZA_bZH2RF2TEBR zOF`xNH#)XSpznazQUeS`qGTAD*JmT%b%y@tc&ZWqcC1VXj~?t$B0Ju)#tR`jpM*u! z@ySpUX+Cv{nd%{toVu;49yrIepTU7FHsoO?IiYJxx#zYwU3{pw5vr}gQz-3@_KV;G07K8~lq`TT!uUfXx- z4*v6o^~avpAfgij6C*dB=){;Qv#-Z0vBS`TN8}>Gml+YXZcwghoco@dLOgHV2sA$T2gRkFc8NlZfe^&aPvc1L^28#>{)= z5-UmAO2;QX^^#_ieey|`QJjA{na5jqX`gwHQF|vl`s72AD$Q?p6}H8?cu3g}`Jo0z zu==Fl9?Q-GGDxjhz$MHZ1N18qF+OXghWU&aTuL`@ayBiF6@2x(>tDF zr@KCgIUOVlPzAjXiGmEk#K+odV9xslfoZ{2ys+xSzbgy>-jo_NDe4s+#(7FXZu&Ht zeqdrX4KvWZC&~>xI^6!7HzFq*yo13^y7>})Ff#2ibj!HsgTw%1Vas5p1jG0*tzvN< zfex6X<8;i4614wGzrh7t(bOgL6LMi z~$N=Ql4Y0ov7q3s7P;4KIswuLu?D3v1Tj`xAihAZBj zpG?t}HG4b6x=iK$#o84$4}*=p4CpiP{{|QeM4v4JqW>@xqQaap}WJr?2~@uCC+2)JVL`t zGHoF9f1Q7x*Q3%>NwS2$q0C^+=P6?_9umJe=9x3%vTkZI9@MkYIqCHIsM5ec9s%j) zhP2AuEDUCytd@N^Gq{{KJ;kURl1W&cp2hZt&_^3IeOC|YWOGG5^Cc>U=o&qBU5@(B zhBT{a>sUbAo+dJBalj(0K?>P`e_~aR1Q7N_+lbh-X}W(~y5?>gCP%K4P*}U~{>yNd z*Qkrd(xkbFLz5qobgBDQ0x)kAFb6`JtzAMZR>!tF{HT`*bwEX( zdrJ*d=WU1Hoq;1Xklg&MBcAcL?ww?`{Qbr0h;4)6itDf7V#C|FNu!df4Mz-U`*~~9 zF0{V4HUw35<&bkxX7S`V1sQC&TZ-8gx|!K}qq#M;vg8LHwP(Fc(rv;W`rV_fh1^PPFwP-lx!qqC1b^#5HosDsaPL?o?a$T ziJ;cdx;3Y#7f0&^_Om8DK+B2=uIof$jg8Xlg~B=G@Ows>-!83d0<66-D-L5rx|iYB zqvFnN{0@RtVhQU$T5sM|FayYvbSf2^%BiiY3r($Kovx^jM2$outFH{BhNafrWIaIlen173lD7$2T{o(1V0yThkCtUClUUvYxTNs3Zy^gwL z%^yG3!`O@yij?Ko-BL9Z_sM_2(N4%!`knr8g&bYL^#Y^Mfe+tEuP8}ewW^M_=f;PB7t{U&JIseg)YRYP=Ly~X} zvw~XC(}Ho0AK0X!^!X`)0Fo1p(QKm@ntkpg4iY4inI5F`u6V+GcauA^2eC>;e?w^; zrjv*Rd`fw4$^?c*D+D>OiB-YcHwcm$4EmpNMUATr6<5D4t-xG=Hi>!uzUbwWwwpz5 z?I-VWCEbxI!rw$`r>Z{gx2c|1vHbp*$MyLB`i1?<;$MZo51$Atc-YP1^~k{axUoAY z%in?XNHcdq7GH@}j-Ns?aqVk-w;^V-r-MqD2nc1aRPN{};iN zh7wlOF<*%j*9QCQOI7J|X%(-=YWAKk9PQ&8g|sFdUW)}BRudK+4@NzTFB}I49GdQ- z0io9&@DfYh-9IC=q8(ovQf&(7Ohgt{mLrPUtA%7XRuy@PUh_9CBoMPQmA@igvJ$FQ zumr2+M7$FE={HxenXki;lSIh#ke@^-B?IhaNM)Rp8%wnq-QW**S)!TT2ihBJ8-Dnk zb02A*lNGkLAhf2cJ9gwvg3RvHL^-LgYhx43ju8 zt^bFvcMh&B>i#}s+ji2iopfy5=8e-a`^HJ9W7{3uwr$(CIr%-$J2UUh)Ksn7wQAR? zI_KO!?mBzn`{_2RcE{te^c%PnorFKbq!HEaJ1vX&kRwvBzHZDbgHy%{#`++S>Ld>p0El`#qaCRzf1IzCOM&way%fvq3U zA-QB7KR<5ni{_pj%=FeXemDDm@w6+C%=obNDgLk4oyW(!*AG>c2b;BIHR`f zoaOD*>XhXj?dw^sj_>+#9~6FNoF=;k4PN^zEP!)^`WWnHKxat8|2HhyTM~uL(-)$J zc~hy!aH{abS7Xt{W1otpZ_@M)2 zAVNoAmKP-XO^(hBe_AKfCMR)f^RU#GtsfkdGF1c9*Vo83_+ z(KHVXQGp)u2AT=OvI_O+u+>(0Az&6Wln}vXNg3gW?URrxNyiSXQ-G(jtLN=y`{0DLzWWF`6UByQp=y1H>`a?ciwq|!TtV9!!~G8E|S(ifON=<8bl zyx-aQre6dZJN`>9UJxBalXTxdXp2q>A>6qGJ{#9%`x(_I!rHndP6a6DD&)%NW(V^_ zAMtQc^>`vpIy*|M#?TyN*utSpq_QRRIH$6`5u7_$PxS~uzwvtXUc=@q;JEe{qf2D6 zE%7*~o30Yf9i}u!rIt0dc%}b$d1~>>W_#jsHncEk?Ng0YpH=t5N!BbWkE>Dv>i=t$ z@s+8Kig(Q@-!mgDqQla!Zr@-(D~DXbdz%cvLDsZ{5Xr1{-~59Y+>r_wB8QnVzs)*L zA)+bgrnIUZYktF!jw8aa*Iqg_f3~C!&hI%k&Nc*gmFkFbEjFs`s20p~6b{Ayr~h4r zUH2&KD5T!K0HcmjKNf1ud|bj0^9LLBBk7Y$! zn1invacA&znwtbgSq{?DU>#`}T#>M5N<+XABAZO|ffO!dNM1wa+N_2hC>V}Hl_3oS z-NS?48-6GU^L<0FG9~M1XWU`@=ih|(nK37cNiUU-?h7z|Srv{h?1UH0+(!!XpfFJ|^$ET&v$2Ojd4fSKa=4};N4;o9RCjdiiM+%Qw(Eb!Q+@+^u6!YkY@F6S zUvsEIlx9>|FL`2l_FGMokkA$;>+#ED+#DwI$a!P*G!{f<0kWQUd-GC^*q(8=VNj(2 zehd$Z{N8totboBr3faA}8EAG~Sft(wa{y;m7K++3rs_UAufaI5W+Q%QPn?mKzR6Zm z)4BjuUf8PJv|>IC6cOzDa=!oA=G;soYj$3P9N#%)>#a*(fm+@JVh16liq?4szQ^`L z!H0o{pM#B-yU?577~(i)x1jY%7Xro29$6?xAR@mf8ni_RgtJjp$6%(qcCY2&?~LuK ztj|n8?UEMFwVE=};8rnUw06ULh zC)hG~N^B$^bz@aoj%P=%&<8GqPU!&dNG=h(w*^Tv?w^WwNgPF@%1S0}=0A?^Yc;5g zB8D!Tz`qTF!*NVd!AFi$W+ShR7eJ(^@g(#Kv$5}ky<#$OnbvMEOhP-#L3dy>*Lt|) zd?X1nQOMvI^T?@T&oA-X{jvw%o)lgg>NbM$LA{figdNDranqg_adQ-jyuAiO7c6>V z%J(sJ;{o_H^@N?|g*8nQS*vRCPsnkRB(S}jS!AyT@~CU4sQ%)ne>yHJeEYwYiOz+U zMqJT6@Gk~|<(*uF)tN(23DxVp-D^(liyM>S)=$r4PXV0)EX~ThxSfByZL>r{25z}D zJ>TtM)ED@p`vkgH{5mum0wC@{Vd7F|IK2>tAHbN~5cxNGWTkUPi~j{7HgvlC3xyvV zCT6Ld@_YRI-D3SYmih_a#Zuz%zkeSlZw{hDL9j5hu>VKa;#| z26h)xiC$%jQVr5P3ZePf8q8N`A}ET`=K8-n$3o2l3Z=pm%*GBW(X2rFFMn&DKl!5~ z+k+Fm3p~HrULRKUce4};LtAozlCXlnMAXUY;AZGUAN6%f=7j7lD3+;nccpDa4;r0c z_Z>O1c5I{lNS?X3zwz~Y@&$6kGie%ok>VF-pP6N@z@Z78xuAp@ z`j7Wk+Ik!;1A)*17DM2uDIR3Q32Z%P0^DE2fi|sQjN5X&_&)MF6X0qA{xkQ!SUx!K z9NVd`8L+J3Y}2flx#HCYg8Z#70`{=$gUL`QhV{I5+U+j_cQ`KxJwVeN0!;k?=}b(0 zgNfed1TF{CEhGR19<|-Q=xR4UOv;Sg#3}6zonFPzdlFLPqr#(f zou6JZ3wMab%#Ya|+6zz60Pjp#4*sPP)_MDnlsd&<&zM`MuqP=S9=pjiTF3Lmd_lR} zygj&*bwsS5m!-^x+d!hx)akRsBlDg-Eu1NbU{s7bd(*z5djETTzg02kPje15TH&8B z2efxnt~gBD;vSg>3fQS@i=XN140(XOM*)M;Bw}fIvmgMjlPw37y1Nl^(Rat@84%O^`>0q$AfwA zwUK>;r6Lneq<}B+8pOs5UBv?_Y6608<4q8Plx}j(qoJLeR>JKU;83etg+ax%O+oYX z^R}ZE1r)Rigeyj?EXG_jXAs`u>4*4#ziwnx8;z>RX%CEzb$6&vX}MGlTI^t#3bQEwr79d=W*cA>N)0sU%WqMk$m~pXL@{X~H=QfE5XLF2YCx!&xgg(Jh#l%& zZgRU_g8}a7A9CsVg_&Z~7{!4|PIjyUJBXB4q^q^DaOHi(B|nI~q2EpQJ^5~`e?11+ z7vV9{4Xr1)5|sXX&p*V`+0n>yi}LR{z&Uo78v+u{!CklQ7@`7{<1RlVe6* zj2lGpM(Z5~8cU>G!D0CbllWIS-GdRdW5SFvwnuW+#oXlqRzHuZWRM5 zx|sM$y$>CJB#ITJq6-{mWNv`{^f~;Gg%PkiGYmoP$%KjQiR?CZi^EET;jwi>*|>d< zj|Kv)3EPT0BlylSmLXZ)BV8|{eZVROb=QwH>`0jqR3@pFPZ7m6wV#kC9%i*)*%bPM zL6&mhgF2h|@kgAi!4(69U}?z>q!7|$!)b%rq^sWjluG%=PWyJtpN3_j@&SYLivi&3 z4=fvHmUIFt!O*Wtmv9ri4fxQ8Hrq(3vaB}&OC9Oz=oP2Q8NS3H4N=~|Z;Mvz-b;{3 zfTb6=MY$GgxnRi=t?DJ&--mOT#M2@QS*suJQXt$e!@O46t+9_QBF3v|<>_# zhu#Dm@e6qNVSagX;Fay{Gi>bi$@>uVjIy|!LRf?5|EpCz3n){OiZIV|&eG&4FA179uhCB7g05J>>TTeGdU3kdcek85&|FPON6%dCL&1 z3$&v6NYof&7~?XeoFwbQ$ozMVCVvj3cj{iB+8=Qq=K>!Riq%$5C*Fk${uP63HwQJh za4WhW^(7cOdxw&ez({z-Nks1|=R^U|yks7cR=9IaZKZ_yB(fVfnTl|Bt%fl*+Vc*Gdct1! z)jl{VqGulu^+Jjucq10}=!gXQi`{457J$Nd5e!#La1X%o(+#4UbPlL(-R4US)+=uc6Rlgc4y zz|QR|T#pobu_E-c8f3d)RrANALM+yZD@Bu+w~G0unTS38tecSU-@&i4qZ3Vo?tg{JPiPneB zI_mzYId%+vN}FPGwc}!uA5op!3WbC#V5HHDl#SDaocg0Z^st9JKDBr>I0jAij@a6u zUI^d+9WjZXXg&%(Rg6I6Qnkfpa;JnB#+2j;{0{iTi4!G^Gy$!p$h`h3iostU!@tIS zkmXsr=@Dyu`w)YV;lcUmwy8W@+{(Kl+v zZd}K-%%iE@gl0mv#Otv^9y*ne+aztW&Dyy!ru0O?L(hKuoWE=QNvP6T9PK9sQ*>^l+gYYc~`#rL138Pq}hTeEV zFcB)Ki&{GACbq6dBa2);@Dd03GqB7_xkcOKs4>vGV&qFvc%`~{DTcXzfV5GC7jxXeT7 z1!ogZL2k`(eDPy$My=!FNzDs9q23v%h zTZG=gGo&@!jR&t&-33(<;i@8{j;z@q&EGi^cLyZ)*xpKA=l)vu6G|nDAB|t|FH&6z zD+QsY7zwq7 zX+XJ>QKMlwfD^j1(G*RHol{lQEG@<2DrA&K#@)!aXe6KrRmjp<-dbycMyRG#%h22J zZ$4`3H5Z8Ob9?hHkj^-6i4?!ZZ?q{@Xx3Gv1KHIT0%cDFfE=im$d`ZSXHgXNpgwJO zHPDQ)DiNT>7gQ>EtF*~ZE(WFLY_)nu{5f3W0!ljWfzm2@Gk`efU#SHY7TSZ0{U-4c z%=TvS{UCOxaX8cPd`+t$5=mug1^2M1-9etU#XtX0D>_kFnLG8xhb;ydP%NHN@QiGa zR7jT&9GX;!2(Y&_B$d{i;}vKOL6qR+uomqYm#qZl<1l-$h7jm#=h!Glj)@hLb7(XB zDVO;&0xc5KYI(T!=H-gUZS4eOd8afw6d z$Pg)Do=5{;+8kH{H?83LLqVX)QlX(>iR0Sg3HVlueL0bA}9{ zN~gn@0P4aZkZIrvG<4;QcjA>w0{jfhnCwkG>jgeD+q!D*|a5B$iuk;(y zTaiR_-x78*Ryr6N;|g6>qj54P&F9f{O!i85)`w#ck>Bf;DimkLY)`@V?4<}hBU4%; z0@{z&sd4GiskTN1dFw}D&|P;6AQ>vdm5oi%a5-S-$knvUz{w)zKH8AydhoJ7 zUhVj=;>bS2OEmVT8l@sfmrH2Bprxot0z)c)^2ca9;}id!zI$tXI$5c6@j`K`+aF=ZN)Qz!N_ZeUSPj8E_?X$lu(ffwD-0w97?6H5xUe50P?fv!fckSuK zoY(hb;m+mt@v-QMCdT*e3b?U5cm`bG%;#jThTp9x(|Gq;Ok{$<7bj@O9;GVquAd_JbX$@ zYPj&gxSUgog=XD7`=48O!d6QDIZy$3Fghdv{~X9@EPkD9Kuu< z$jHAN%pVdA9s-M>-b3rUdfT|?M_+&>GSN?u`|X*)|2Pp^4z_14Ut9mZfwd9?HR5Q% zsc^F6Fd`-pgP+^O@p^l^r$^Mp{7)jKMv|7c$pIeSk`|9kvWPp4OR~ns$FN!v!*^}M z=lSyE{p0Ang|MB+_t)2B=vvbp!C2WGu_BPy_a*KSnQQ0D_~Y6|>CUXe{02uTjgk9}O1mPyW^; zY>)+6NwH0Wz}b8TzjNNMx$ecu4MCXJ!D<|TKDjCLJ!x4; zRqX?Izf#7P@R{INQ*fWjvkrgb{u=Tr@)Hn+#Sk|kLE&kB5jm#vQnNkL*+i0HFWCD_ z^gD@5b)igbVoe4xh$uv!a?_DfYmN~e%!AZ@jA{g%JMT%ci4xl- zTt-0fDa<}{=tba7;zpCisa5Ugk!8s7GQwYNDmfyj$%rVTWXL(Wb@6U+xD{h0ATl^2 zn^7h&tswGG6%h|3mNT_5z4A+3akS#gEK#*8KM@d3%-xj<1EKKuJw-+BMLWo&uOoqh zM6Sp2#|?F99MJ&8OGr}ZF><{3+E}6lNn1c8|E>u8+Yu@`GPXiui~9N~`%MTO^20vI zT^Q2f9zuc5UG zSUEM19g~OC5iv z$~kV2Y+&*kJ`UEX4-Li&?r2>4ST+4eM!M#_htq?{$SJPD&-|0D=&1Z@mt&aQDIqqO z-|hTRkqNAVwQyu+P5%6U*?3YyMlV-OAbK_)cZuc3*>_HN@HZ)RXN2}r zy*OGiCN6`)?hCydn|fmdib;UbBNEH9&1^{_X>d2UBs0T82*;K)a;j(@dYo;qo#86M zC?w#K7(sWExhr!UMn%nUZxRX4O2iVZJ6qfX?dxq8zBHdDwVD1dKt+8)#C_Pau`Kup zA##L&w$Va$&c1)bCoce^-iW@EpG@wSjSTVjgCdr*~umph>5F9b(GHaz2@ zq>k2(-Qa>ObuDfgxEwH;Vc|DT+K*DkpLh3DE;gorHq=)vaX)r!tEuDAL2p8 zf7eQ7vCJ@>)Ld}^i>J3F>^A>(aM*QSPl%DyC0t=6M|>WZvbhMy$B0U_q{6#u_*wp zN~V3ZNL^8Ie#X7%>^|!ai2-~-&=rBGgeJo=Kh+}}%6ywGGKgnyK&AO3Ry<}TirTRg zJzui(a$dId;8^e}%N-8;wt&UhVt8TiTPb01Va0<#v8v4&&v#-*==XaqzW~+vC8AC` zDAA?v%K>m$@xH=`|9a_7Lx5<-C?`ViYbSPB-Ea9zGJfQwB|8@X4D@|#-KkgSv+V$) z=K^TYlM6V>`LAIOJ?avyIsCFUG_4%ei)_Igdd%Mm%=_O>IPlzu;aMUOO8oy}A;6IJ z;{S;cKx86vkBDs+P9nX@1PJv&>+h(8rG{+1H#pPT^Z#oq{XU&oKKcK`{vXy7nE(GV z(X-~vD#$GW#qR%Q>U`Oyun>cz(5^mwfE&!EATDnCcbw_w(TK|2~NjCQdywB;3eLL8}yk;qsOX3q*Y_th7N z&_eX)N41W4o%`Hc4@%@k*9VTiJY#c=X8wa2%NOU*H!5J7M80~$CrU&SG`8MNc5-0u zY4qkC?xtbUQEWcJtz(!FxsjviW9!qH_SF^dU}in9%(K%P~j@@WIDDTHGY> z@B-mSel#nMWcCF(-(3kFoVylrsYndPRh=Geqt5B7+V8l(pk&k`m9@`W7>f z2xpd8S--`5(yp+F`?Q9$`8-b1etZ(hCMG0#P9=}LigFHJ3>7OlVYv0GxEyV$n&(#j z=`M5>EfGq9H*7S(DU&W$y5izX;xLIm$GTx=5^rQYpQmu`nTaJTW0@u;(I!Dnz`+ED zlPh92ikC{AP9|@hf=)*yUw$8wCx$SE=ljF+rc0iPJ0EUB9EN@k$JmBhJuiB?h-qu8 zIu{BNvtk9J|J8>9TVxg21ehM{a_*o&$S%{+J4yx6(mI0TDqZ~Jh#b!>Rplo$#>{&y zO8XInep4~KfN~21D6EeHH^Tf>(i#BPq!Erm!K=VyXe=dypMwJ4Rr}6PA#Pf|sM`(vS4sa!8|7eVqw3E=G_;tY z<)B(y#!HVNY!NRrj*VqH>JsAFuW2~Gl{sZJ(G2NBw096iJ5YI_pVeG-R5R7s-p_$_ zSzteR&^>-I=`fx`q6Bc4;BNwT*hm^)@i#w1o=6=$ypO#Jrm;UNtdV`65PgF~JG}!s z-_CggLOa`Xs;CMIz-a&y2@tm!U6O`==2tPpXL_fM(riM#FMG?)Bs4INlZCfQ9s z2fw-vcIK9ajjGH5EP)+F4~6#;hcj59AVk=w9e1}qFEO(!y{l$Ebq+ws3X?tQnuf>a zRa2Yj3Pp5XQ+(UVjcV7))AsJgy?HSzX*$>%%Sd=tEdk%d0B93s!W!3We zz9a-0vZUaKWZQt z8XV%EIi*dJI4)KxuBU-^ao%MK2n_p$JZIc$gRp9t*gl4m*?p32K`JLt)CwAvQobxO zwUHl0v_B%$0Yd z_NMr04mEXS4i(*6u|xBiz3qahr05p&Ylt+@m7OQo}50l;ZT3A?ZI+bcz@N; zWsjuL7fu?3jJG9Xo@YJ(;xw#Cw)&G&uqz}3mUz%7gjZVsfh;@}dG_C)?(am%H*A_F znV=3GA=y<3nl8CK8xjThIXym>5laLVpS<5m|mTa~pcS)?41Vl#V zQgvUf0=sE(;6@Q$A3YM%-QmyKD~GHcYsEuW%3J@Mq{%-kyM+D#%S8UA@f z(O|SJ$xFR`ihjG_w9?Ci7#x38GEHP>@f2s`?o|qx;}NtIA`AY#p{oX`|0!f$R&&D^ zE`UgOZPLI!W8RPis>iLS;FVGlwgUhqn7Zs*)@s;@KRL24$@xh!z^c-G#`_u=@pL(>rqWSbSOU3C)8=phE;;`fBHx~@OidEJm@{+25eAdDQm!} zgLH(4w6{~_`5Y?nU#sn;P5hftbRayiF{#7RhP=P=95g?f9-0!~ErE8H1_qqk0&5yY z+%`G=2oHk-L!u~btP@IbjKq_6S<9NMN}hvH5{8)?5^??4k2G8kmld24t8SJADGYnu zRN*K0zLxW-0N3eMHasyFZ$^FyL>zB>A}&`mP#{$f3Om#&$6YgJ`Azz*da9oj!WDcJPK*!>x+NmL`1iBFk|3o6;pgqiQ zC^uqLu*Q=qipj@=c3BtjgJ+le{cpv9eaVO;e~Ci9HaeQBs=9`F(j30@RQopjV)0CArcww@Q4aRW^XfT8O!`Rqa{hEGnW_9@PZ5m=}ieRYv#GSz?U#h zHUuGmCHa>`pv36VX4{NjlDWS+2N)qSz(bk4X0E3arCZ!DJUUl9;#7b9Xo_0y8byF{ z-d>?@8+HLib%xAio*>AAk~89U`6Dzaahcgm!Nv)t=H_=#z9l(lL}RHYU)ZuOfYZbo zA3T@-uP_33smn*6TTDGntRqPk@`) zu^yaVKDh`PK_n6$p`F&^$czH>QrfprkP#aT_iE%JZD2m)I4>73R0OoNvDhEs8jytP z_uSxCGa8q*7G?0F6~E{8;Xg-pLY2H+r%rBT8Tc>CK^*|baVt0=YsH&HbqT*2;8TLz z(oR2mhdrpbLf8tXK(S=2Rq54nCf}_`MSUAv0B(E~P;4UlHWHUOgW_7RazP>?I-qKW zEFszew!s}X^Zj-b-*1;Fs%A@kQ(El=15E?X61EDf+Xfj}{CPF8mT0G>8f%n54aKp* zJ~ko!!dVQpFVXzfFCe&p6DJYmnRi8~LG=Bnh3fOlI`l+A?pEY;3^e}1&6 zbA#a_iq{xW6gLj3Y-3~t@P!k zs7ir@$+uwJl1uiL^gjvPA3=spId(8(p-f%xx0k7WKpOw<9MiR5rh!fTl$XtOMH{Bk z3J+qMkH`Cy#cJ()3VNbNpO2H8(a4H(WmU^Z0(VM`owsm$agtVNm=knspPUto58?2Y zAVwW^&zYuew>+9BYftZ`Nf)CkrfZeMQ_YLtjWMOQ3`TzU_pft%p~P3H6estu2W2i^ z&R=J$K(D8@X77(r;wSg-UQ(eaWX0?wVQE)LBExLrE}vJ&E}!ACP+-e9F5vBo2q@1+ zg^5UFok>hTSW3QV(DenukrOR9_Q6&z2;Sp#IvdMi$;ed_Y)1MJGe}ht-JVgmPO(}* zl;#b%%xwuh{2%8(;BwS7=uiw!iDevPplMJfD(9d@pe$@jNd3z8D5b>orIur=NsUE&LxK=t@zFRbzBi_;bB#s&LP8J`@$op> zZ2|w;$PbRh;-s(F0@O^KEiU?1^9ov|1Ym-9uFMO58VY_Q|9mXZ)2aB(W-kxe;Uw@eVNN%3btf#Jk2HI|l+{!oN%xm4#8&MQ37N*wV85xcp?|SCZn|Z2~>Bn*ZnwEVLCw+mayFVoU zw{phujk>D&2acYsj0;Zx&8v3a{pMBQ(NS>~!`03Gyiz-ev8^px)ooXEs@BJhXyC-` zMykHy?Gj)>{H~+v^v~hwM^Hq2y>e_AK1D#ZnFf3;KDW$yJPFetwr~Noj@ask%iZ;O zM|hjgYhNtkUD;Y+tXThqa0MP|;8)oE_KNWOpd(eU;=2%x=tNcoGUW-+XNv7eIH59D z24QtY=-O?Z|1SKI$AdVfoMR2YC6R+V-FoR``@U-RJ_lkV#|#reUD;vYVZ3*%Q?2Xu z84JtUVX8P%Osa~tLoK&C( ziz?O$Wf{GE6A%zs8!~g98(hirJLfkJXmmvxur-sU zi1XfpPq!-$NgcQnlNrJ9)Ow*Gn~JL~sa7YP;mI@9t%yw@%FmgT4a?p*^7%>g6IH5N z=s#?@Np5;PTdUV)TT%~h>z*Y2kBo+xIy`EoKG|Tqz6N)4`HrWafv1XBmh4%?`Cyr# zxSMo($H0%)+KE33Iv_My{hf4mTroW6gX`(uIu@Cal)p_4O3YG|&E6xhxlMFoFaOZ! zkelh;jV4EwRhz|$U7Nb%&N2$gpz>0J@fgU8vW-f`jnGqLx{rJGVQLprw1A*>mF&k+ z_?372C*&8y{{9w>;7^mQRk|@;iRmawBy?XbUlG_83L8M<&>7;O-5>#C5l=i$^SsuGn{XdUk<{S6kYhilev#^bPzcz568|LAnI9f zJE3elog38{JI?FL`X(#`kYQ4WHHx?34C1`IWt9+_NjvsZAG-+$7FqiXc72S;Q05|% zM1hqHEhJRB8N`2;(ai-T8(FPaC+paP)gCatEI?0~jV9)}Y#G4*uypPJnk z_Q)_uJ1j=Eqr}P(>P|d#^ut#y`spitz=3?Cc3_WwYxe@Y`X_oVc}wEO6Maoe_(UiT z3o};cF1#qe=O73sHm`NBc37w$+RdvXQ=DnK(CGX944| z)DdQ>15``P^Mt1<>gme>LX_kMi+U$)^nlv!U*hC=%~-66hz-pE>-<)U!BC270U5_E!c$zu4J$4^`Mfq`_B1T&A&dGt z=(hp61bh@8sjrYxeD?KuT?E&{HK3v=ctXRlZBfmTBkw_^*9YmeI*h-p`5`}j9sJ$( z)0m=$5{i>!I6?$0C(WA6FIJvE+8TK{m(#2XQk$ofm&M~~V3o^`Gwa@U_O5xSk;!bO z3J^~@toTf@S>7k{LLvPPWpQgP>Jw|1jnoHagelTU;}>S>2l4@{ONNO#2f!SowvD8^ z7giflzz?2&-B@pXy(_#(wE#D90EEm=7^|N0K8RIGDeXl{07<`z?9|2NA5v|NH*~Ai zOYZZk^Z0-YpW8hxLmvGq`x;#{9p%r``vKRTANxVvAQrik6w5)<2QA$Ls~*6uf42bv zmG%;QFF*Dw8kIX=BxQq#6JdSyvMir~JOcyCGs{@$-<{j+tjROQ&@{m<-IWn&0497hSBI=0hCRoy*to z)u&DDRLrjo4k?VI{nROqEaX7b4jlMbAmOXSA-!a!JZoaFu0Un3!w{)lL|LM7XtgUb z>$XRAY5R#Ow@zDIPgwG}!f=Ss7fdpfid8(pLQid!kN*xb)5e@Iq4;zd3uh3-P+_-SHx)Et1RC!#bVhIbj)!0trh6x zpuxN-`&>>{VfyH2aq90JAJ3T{70a?}#XDG6%(!Cm^MrcLF0GvY#U!bmaoUc;G;32r zdNC?rM_E^7RwJ>17>Q+N296#_V8K25w7gaM^ZuA_xw>{AK?AzBUPQ8C&7lkQ;>dRQ zy$LyEPqKVE+MBh&ha!_37?ALOOx@*NC2u*J^Kgk3Ww&#vvTKQ=!)bg;$m*`Ro-KT# z7zzU3>>l1fc73(T7hQep@(|lAICOr#GYft_%x!czC*avDUIUHEIE|%&a&@aO?}5M|y+Ywu-QsW>4gKKTbX`e0e+MfX}xN zM@-Exb07MLdd^>_ua|B3?`xp)RjD!XtQ6k6q|SBGwoDlVuT9fR_A72;;8z04oa|~6 zjN(Wlq9VAEA_=u7PRds+vISaW9cN8FAa_wl_4}Od^fFWl+T~y^p02=#IC;jAv_^8A zDed_}26jDmctWhS*}5G2u=?_1+Q_}P$*Ys zWO|2yJaTG3t+qN7)OL)C$~#zF(){=A9wU*GMbmDj673osDP1@cbwxZyvTs?}k?rA> zpG9c0ms-={(6<&^Kn&o}9i%zHEveSu*nZ_@2~|r-tt08X!fwov^S9?*$D|um$wbHq z6t0}5CePak4;SHSbO3vvGw>q=oGn9&03)R*RoK7hhD|X~LJG$@FI)MgQl1#a-{2*} zBH?_+2PGx=h@(6alG1(86Y=|mbV`!7RBz#2*m28$eXBQ)vbRH4RvhdqEFaP2SvH)OSYh2{=;0j^mBopua?5)_HG+U|GMD2tt zAy7_I&wqXMf`N~`Fnuu0Wh;x9dx z{_9C)ssbaYeAT+P-K4{kmodxb8PTMV6HPXnlSlk&p@iKp!%ZZd?At!hg6}x&;AeSf zftZM>pR4iH)1MeFrP%a{_>h^W!EeGC3HZw`SB+H|^S~di5rH_zP!^^+Lw=x5;3X#W zSPvZ@6v{W*R$44=XNmC^=6#d*^W4kKn$xh2Hf)`hMqL*XgBknv`O_p;86Qpqc{x#~ z2Nq%K1MPWU7vi9_P18J_#a`O`#mnP5f%}wwTLQ9?xQD8_wg;#4?NXQJ_&B$|c$dim zE9t56&Om5?0e})62qCYemwR?c}r{z09Qv1pN12*H1zS3y+T@ zM1)uiD@Cw7gxNpCPc@UXBTWRP*GO>+ouItT2I(%n965Y4e0BiN3m23$aenm#tlL0~ zGN4B(czg$8ekLt@JaNEUy{b4Sgsz|zA7q+3A7PNif1G{HOjs z+&q?L^Us*G-m{f8J(&+6E10jNE2*;tq_ZwM9nz%tL%HwamwCmBIhs=_rtF(D7w>Bj zU0D$ZtiSOqbmqp!9nn0D&77BHD&4$`Ip-+vR}rswU`%vcL)xIs@c4TUXUGrv;le~_ z=UZMIeAToCy#1M?in*J~YFFy)hhRXo(U%tdH@Ee5GgZKmdWCDU(f0OwR&_-Tw33!q z2H5INSHJl~b`;2xrmq!k*{=wpVUXWkBtg8KF|oW?9+bVch2oZJo(pBccR5y4&_dsAb#G{Y6WZ43%bL(MxG*xrPn3Hh;D0@z`|Fv$ z&_Rx$hVWfjzZu?jo*S-hc9wdpf(_w`u>|OSBCc6DiB+iSk;;N8jUTGn>EUheNE?DM z1+1Tock)A`@&1>C%&WV@a4SPr71W0x%7x@Wu*u#2%j0iG!m#uoz4&2{?}cM&^GdZH za~FL^Gxi+lpsBuVD~lNX$#V>n$9nLxINutaTj3w7_feg2KnntnH|u*PFDnsHLOfA# zLu?Jca@^ZJTib;tRk*Sxr2;05uL<-P-X^STeoKwo^)5iL$gYn--~}ESJN?PmLg8X2 zAyK{63$t*42!$ML07%NUI@rS>!kk(R1yH$7sJ<%h7O~R!ISQ9PuZ2W|dI~TigPAL| zl#{RLFjeG?lgRbaEH^Z%C@H+_Pr@Ktv=ZxeaI?2f7B+ymMrMYH-TV(`gAxoQc~P8%4tSxb8=WqJ@%yPN$3Y7&zQu61h|{iALj50=?t?LU zNn`SaPEAkEui1~MpWry)gPc%%<(hzh9NWf|scc&NJ(CWB*$z-lTg;a@W)z8& z6CI*Fk_jr3xREIqlM|WFXP;~Zy$?fz6&jyD{N4m!YF1Alz1ebtMuR`{0YE$`rns`J z_f$chml0S|Zl33FWoC1p`yjs7P`c&FxHAmZOXEFdF!JH+y@|D+Dy~2#aIkgbQ0`II z{{d2^jzc#Q*EmBjZSmr;V zTb}LdkVRrp19begupov*fu&+t2*1S8G}7mO+5hyfdE-UMGv}5yyYa3LPdfXPcu>mi zdttSMVdGuO{eGlFMLvdYyg$ZO-L$4Z6eS5szd~Vy&@0|6>^n-S-2KkZB^VpVhA76p zPJ&KGOx+Xg8nFNCk|?s7{aT#=`LIVs#>gG6m$WxBi6sK<*T1duIN($jR{1xSi;?Gp zGmZ5tEY znb?`wcIM0Tyzlu=om0E2Yu#P7_a9x=-S@uMx_+0hOscM45{rC}O~{F91F;l516qk> zJ=tmk3Qe%2vsoNV!THbHi(myT>27`gD_ z#1Abn7m+f{A~C8&gfcIRD%3;oZ_j{Aftd|gTAjKAqT4gt8iIMK?BK=?ju2h5)|viE zEERI$&E%Cr>yX?0g(8dbiVv@YSswzn*;HeeFRoVfGfkKL#psu#mo&5zw)GBfLYQ_` z+4#9rHWXtKi8kGURtg$Mf~-)mgvHPQZsA%lA=;ePbd1~3asPLKbWpP#R6GD@`#ah) zZ$#yEQL93zk25<9j&t}1;#z@dtr3{hpM{ai%*4OPvdbxFGQztE0bB>x(&Ed^-8sSs1;}v}!PHT{; z1ra1g;DG>{KK5u5g!5?Dv->F>z8+ zgt5*_&74QRoX$*fmm-I3T0fwS{)P0&tYG?})LB!bYJIO263%r*JlZmcWKu!-;Q-;&P;JWLQ zwXq$RbeJ0r`_lUBMQ2nDQ6P{3qd{+aO%hkGsV0)vaS>;9b=J$t1_xr6*h_PAq>beU zny-})3>Bq4arwSq#9C5)V zkr<0g{*vm7C!jg?vAH9s7E&t;CxuZ4G^kPNCo1)>H)>5_=d`936gSJBOkI+T>maX_ zdJb98CESjvLtgm;T${HPrg(d8e;f5(%@!L{JzmOD)i?g1jpH+++eqFMu+NMQBJu3j z_@f|Fo5Wfvj|@cjH*K|PpiV`}wv25^A9Lxm3&9;NU%Y8^R>R1|#f{%)l`}IGGIS~F z;l_1=^SgQS+G!%)tXlCXuljZf^hMm@;LIqX5PBkZRoacVm1ZOo`R;tZ?wZ}W{R4%b z^q@Lf{W)6e?k$dvSxE|l=cFpO{?bARXZKb zi285hWg8n3kzx@MpNnp(fYQcFw*iaK?J0iEU*Ppe4Q~xsv)6d%RU3bNOeL?HrwDW0 z)+~Y54PT7JZ>o};kKvHJL59X8z5>EGZd{%OK1chuoaVa2J;!2~gSCQi_)k%VY^)TE z?ZJ!8w$v)Od)bYi@O3VSH!9ozp7KF&wcC6A-;=%2p08B4#8fWZgT?wuxQBpEW}AJ~ zMJ*Mqy+zGm6Ubs=_cJD@>7((P;z%z&irkDZdS2j5b}>+eTd&&jJQFgrv6a7P8Hvh- zz>mR^1U7#nZy)R={>MR|`oIH;0><%`bv1=Tmzw*vSx>!phhj`cq=JA05=3OMB@EE#|SFIHgN&bVke!;p5S6XtK*`NBXOW zPP?g2RYii(lGV4HSJXuT5K_&hKZ6LtD9}Ba@R;D+EqEv)l$Ufhvhdf++LcKwn%b3F zK~mb0q3AUjhO%UMqfL|+1olnTCwxQ%v6LOWwU%g=6NV|4_3oVXb@796;^pJln3}u4 z@S9O6cVEQAI6!q^>x(V@^D$Rijvdz}qdnRMmC?BfM5Pg*gtZER0H5pX0LgO1KPcZh z65FCF9@q?ZD$2k83}bY$01fp#{gZ+zeyWp#$^MXE4<^FSwj2^oP(0GA?qd(jEo>nf z?Q*kG$kZBM1nNS%#4fJKWNx7jJG7$92=9ywi;qF&{}nl~OqJ3Uqh7UClx@iRTpEKF z;m}y28Ah%V-)cr`jL0`;RiK=;aGpaBFrKO`!qOX;KEYx8y+iV3PPg zXAzWgNT0~G&Th|)tx?nW4;MQ)ie6*SoBdyiRi34H%oBn(*e-{!^LzK_vVh&f z$ysOTTj&>FX-0s5@Tk|j?QLZ0B=ap+VAI!I8O42keIZv4;P-h8*&CQT>0Ez8K0)M| zfSbyeKr;ISq#$Ol4Y5sQ*1Y}T^GcDcoj-|vs=Zn``642h&ItJSPZ3{UH5iY7Je^e5 z+FpOW_}sNUS=%$Ydky!!py5DewUDMM>Z4^T?jh8Ql^LZ$l;(&N1=q65 zZlXlnMKxRC(^3wsBeBWiU!%na_vpnBHINP`XY5V_JUr1DV}T|C@o;M5UF~SmnIY~X z>o8_U#u*0o_}mVVyrR*jNzyOGJRFRT#UsDQ!ShWZ$sj+q4jf2&TcoEtcA4UL7n|Vm z%5fbIEm<;OYe(&uCBynxmGgcP&{2$*kdw!rdp8yTbVX~>EExdG35_#$rRtfRk4TV; zR#9w$IJ<9-i_>zArql|});Yk;D(oQj*^W^II*cJ_(LM){|FKD>mxR6>8bvXz_($Ek zkbWF)pW9dR`GCR~NlHFyag(hMWv_(-3L_DeBKjd6PsvZfpF?3&7N;&o$p>R(!DMXS$$z0nKd4Vg zkyjhubUhK`3%_L>5TDY%6!=^4r3~9H9?DK=&IJL-*t%BhOwdn+mcHAh7J(j&)N(RA zaPqr}+I9Ek5UbR8W_~O1vL$4xRm?%5t^)_TRTZg2X6nFbkuA|c6t#)su4+lRd1N}k zZU}zNf!1zlXTIvI_a1&YNrEKoRDyy&l`c&1r3s-Fkg$JV^^*?5#XM~tfTo*Rc0u5t zY~@TvH8Booadsx|z$GHI=LvP3?_08KCBlFXokvp426 z&u-C3abpo&L#-|M30cgDLxgP|e}Dm^h<)lr(6>R+VHuDF-eTlc9x!^brbaOb6weJm zmFm0JPjT3}H-`2%BT7iaGr#7~!NpwG7tOoILa+uzc>dQk`P0S ziqWVoDap*ys6ul*u2;Y3f1?`a31umZz^ZUtojJ@ludy;j8jzi_YhW3HM-Kx+3|0l- z8><3mvow}OolG@G@-#HCyw;op8tWJ?GoJW2qKfjA3N`dL5-U@C_L#dHPqvVvo|iU_ zX7r0ljDnGMz)hV(DAjM&O5#HT@HwtnOAIi!F4+ibsrxJ}A5(8XYrw6oW@=DH>UI3e z?q)|Ecu9->&Brer$#0U& z1WN^nO5GBLlG8=+zosK7c*00wCt#x6yAqLb5vkqyx%9y#_PqI=v_a_j#-*FI5K3|K zH|%!B1^^TrCM6i6ZI_p=W8(AgaP!AqR?b=~|0ylaH!UcAZ{Mgh!*oD*caFbwUP$zb zfldf-)E(?*`sG@&V8oAC2SVIEoR*!a46Z9G5dPUbUJbf8-{_uzx`6%M@#prJl+p8# z)PU8+5jn^C>E$SQo8OVLbnXkc5dqIb(21|(KpCM#;BS?rmSn?U^msrorXYR8VZ}x& z`GGx&{p5yhu!yZsy$6JZ^XNX$<|q4p4&GQ)0e6>`voDDl#NU%1#`o0LUdP@V#FpRQ z(UYGc9!gV*ueN(ThK5TQCXT*T;)e@nQp3{U8HQj zC|O2QKZ;$F<(x1JXm65?rIev%3E5p{7lr;)@VZ0CUN4S8)GjDet`g%C7%Eh21|zi_>+jq+I^hM7-d{1>#ZnbVrpnw%T6z5Zsax# zVH_}*Cx3}4{?Tp4Mf=_Yk>8nYtjv>VY_sR>n_6r9iOkC}-|RdSJUNNYmKX{pyf7va zX1$$LT{)v#BjDej*~T60v;$ezuWw9CRXYJ_+-)r5UQ-S?AUdpLWBp{)!h5|j<~qQ1 z5q6O0cu(<=l|&xfq)2pkRbjvWXV)~vt%m8N8mU*W2i1(k6aa(HC~(^#jD|xLlXgjD zS|_x_OP_WJ@?NNqMFD^WZuttPAdt3F3aEU7lg%J`N$3JE;EzqhH}lItsWSr3EkK0z zXi{(z_N@$;NX*H~%H1a8melUP)=l^u>zCj`k1gLiyvt@b4x4r~u|F zeViTreEL3j;Wg(3(Ql)d5n_fE6E)C{7YIGepew1C(us^~!zQ?oOf7D%MT(6iODZh- zGppK~kK0Qsak7m)ZZmdiv9&Vn{lt5NmzwNbBHJjkkeN!00rVNC0u(nb3wCu=y`cE& z^{J>0kXT@>EUBo_@R+HJ9O!g_woT&NDC%cVukZ_$iYf2H-Q_QS3c0L`%0-o-)}Q<< zH9?Tosci6Gd3;{~d^{;g*@a0+!&48+DsRE4*}w74ENm`(z~Ff!nqNO<_HJx-ef$>F z4_Cbyo z@_*pS4eYYXY}pGZV&|3@0Xp~44P0F#^5)D^{LpZQf)^k-x_z&Dwm`?r`o&Z&7Xr07 zc#4cDiiHb{XV=SpFqF~zSNsc_t?V^l&nYWP0_rTBo_wI5?Wc#xLa<`LJztXF-X(qn zB>X!uKC!Q}8W_iAHP$omg;{QIc-|dZR5!=oR!7?okc;AIk6m^M>vJ$p#$QD-+Njt! zxGK5pG47sgJw6!ghC$|x+*$CG-pZUznKPUb+VTa#r7`5-vIT_$1!LF|WlgWz`&PWM zd3OPA>V!S7p9jN1)gD${cxk|CHvogp2}0%!cV*v!5Zi1fgANWDHd_#`py2FAUD=43 z+lZW`+jDL$2hb;!01hCdh%EYxXmTbjApUw9jEFe0!(%-|~8(4&T@^AlcY5g(&DuRg8cXyCTF^>i&7M^iVJ?o?)LV+eiZ=`nL zzw`vKkgmj-;cx0?kI~s;Q=1;K^`T=&`&Y9 zim{cd4&g&`i2pruHX&FN4C*Ae^OQ*@{w=OY9Vv6(kUbX=GsvCTiZzG7;!HKcojY@X z>oFd;)xlNWD)Qa^?t-#SJvZR_8Ex7PlRC3dM&!fTA#b3IYVXi%!ns{4_8i1YNl+S@ z&DE?;YD>BoZBnUNGQiVS>j3+kX%u|#``fe~62~r02JNgR6P=0CL|aYL*Ho)3XmJ zo8z$a^pt*jM(x?(CbHIVyRo(`v2CFEE#k)uvU38^M%^P^(gSw-2A9Z#KLaO2I7OU$ zIMe8WX-9pM?i@YmS!Rr7rZ4ZBW37Bf^A{W)3G??pnCb*KbJsG(M?F%7uQkIY_DpGt zA0~_wLFSoum8Gq`_)n<5e;$X{$|1=rCM&m$=SfPl#P;bgIP0oJgI&uqXYC`V+rS+@ozn?-sAGCj+I4hDJCZZ#f; zIfkgN<2PgFko$4Y&Efd7<8xNbO&9w5aa)&e?#(g^V7cLW3O*37NTvYh!TeVa63m=z z-_olso&ovWkP8Q^y?psYQu)xkf4}V$>`e&$~BDUPxIh1G^QZ< z=@`KBmlC!Lluh**!OGuHB%9s`k>#`8Xt!4=*`R6og)ph*-d=6 z(0@}5DR`u=WwyIFK-)?IkqqmkZxW-Yk)jAPmX`^w&qYcBcX)EoUo*A4jLrsUj2?QR zQbRq8_X3it(F4QkFv9Bq^Z2{L8QEnp0W;UBRA$^L*E{|C;PG36s|2$q)_8j3Y_muY zwVi$SF1uQ`Ovd|M#o~9lR|*p`>6-9)4PnhCaMVFORr6P7VydS(<3|oc^Nbk2kyXZ& zBC7e~p=QG!OTYU~>?hZe=|ESy@ovI=qtIlaC;t9;?aefP?jsEv{8`rrt5+_-ubjXmuTqdObrM1Bs zM9+k$<&`urnvYe}`o!P9cay9{ZyAgEc{>=>5 zNOmZMNq?YlO%+5$spvT2nz!jiTy#0ry_K8^$+}KH9I$E=pwtgvYRnhitZQagO4|uy0@;!M2++EX;uNQEUhyCkdIe$28 z$6{O|S%e0^jx=%*>Rm{!a%oOVOx8Y!9=}vOkF?-z1?C~Ds`^M_=$&I4y=-~UDPhXG zeGhu>&E6nUTE-oc!<_V(7!Dg(y|)Dra$lLwOO#%o&0gQYDXp)zed673rq-zCp8iQp zi7owKHSf#H+gFT1m&&B{<%~kXhonzc@Wwy}dnHM2Cxs*ga%$p{ahv1QEkx=nw5)rU zha?&*Rz!+jr72NAFT;!EtSC60tdfd?-ik40o0Bd67zdaBQBuoJDV|$zn$2+cFs3jp zF!_6#4ESfQk^o+-d@!OKQrQQ!usK4d8Mw zLVPT7-{z#k+8UN}SPtt`dWu4;V%_d^U_-kqHF}plbv8Ux7@s33UuKo1FVCD@?ss=v zxnn9-!~*t)^M-OuEUweucY5<1(io#HBVl3j7)?X*&gKUsjTp=~-$>KpPA&~{+}4tU z=I4h2+(i?b*K_^J_*}X32^_iX*zW=*?l;@>rgXqGs?&+c^;Tp1V|m3!JEFFxXO4FM z3#ZM_yg8@MJ3ac8FAFG4gWhE!r8M!vFky}G0u)mxu<=N{Y_T=MKtklQXNZR~D3I%d z3Bx?o5hq%*JvE|n8W8DE?XcR8xUrAGA_E2dkORH5IC9coJAUDYo&1N{=y&-g*YR|H z&h%a_?5>A~j+Ax|{70^vI_vdze_r0)?Hu`%>i}=%y7#2kPyxbE@8?g%smRW+hWl0S zJiaZTQCU+mLagEQH{NjELEJ{T>K@tuB$!n?Kkx6KjX1mK_&&kT__%wIW<5Ne0GW1| z*GKe7iYVF~`+lv1oRvxg;!!VpV#MXa}+pbrv}w zmi5KUEFUQmtz<6Mk(yE_3pdjcHO7LzS84CU({w2_IVrZtwD=<)x&Gt?KPF#c@itOt z=W6gDy=^1FU&^RF3u1g*8~D@E0eFixEIL?iVvG;CINnFs%{XuID>;wFqYaI-$#ulj zt#UO_Su^nr)VrH*s|UvTLjl3l99aB}8K^};rghS$V(Lw?rggo4BM^1MOB``86bh%re)_^s^9iF(&N86Jgc+ZlpyqQpRC3av_QM5OEH^d*R7lDBppq=B+bK@cNIPX9EE@dhu~ z9D;!RceBw#%)O9urI;nE@x-jpuciUtc>f#D(f0H8V07(;l;iY15vAtU6CIftI19h!=wB zOR;()h^3#l65Y8ER(lnkXL~dZ^sXjZ)LMn{@R#C@o-=u}E?PR3{wF0$_gL7Hs09&u zfs#j_fU}Z^5=rg=%44i3>ss++wr)envib+h9vr^&S%t_fH=s&5J-$LMP+(S4#`m!tRe?9cho5`C@Q zT!i32?UL?k6<`e6@g!{GGd=OMset^$(r^M(cklXkfB#MGDNgi9m-iMz2rE7CquI)UQF}|biPNUpv@eak zk6g0_iKvx-9K=0TO^s<#a`0&{;2Z+AK6{kJ00*a_(Yi({=W((q+nrs&x}m!(03`1| zQM*exs`=ni4p%bkp8bbz`cg}#YK)i{!&3V*wY&5jkriOh)Sx`&d*E2LYPav0o$w)L z!nkU8;JA7_S#KCS^=(8uBI2r2pUQ>&C!* z3xN#neO8ziO!%?gW7vzPLH}qLuH9?6Ek4t-bXG0+$Mft8Vi~m|=VRg4B?vFUZmAv^ zfFTU8B6m(1MHDZ4dxByWm#k<|>h^Hha8zR^Nov=7ONZ-|kmRbrjAo>l>He#$&{*nP z?eNH4`vFcQ@7UdyuXQ*t=Ci*Yh;giz@AonRmhor$Fkf~b-)_}tvcWxWt~jnGesZXA zDg}OVzKN{o6gFbasLg6ato0LY1-TP&{_HonLG=0~(-ON7+)6pEdjZ21f~y1sS~7L6 zu*{FH$#v}d<5KG7J7vq?(cP{RCEUb%iZ5hSkP~j!2Wjy(?JBy>M_qyF_Q7+8P0&y1 zW+t}op_Kf^8|}rmVMp46~_M{*X6AJE^~t*@CBxqS}fw2=yWc_a^Fjx=~2(O z&!IWq+8~dK7754P@iY!Sos4RqOR;}Fh>Cu!*VZSh6H4RNwv6tT$G=xJ3j({&by27w-Xuz8Vt(3HZS3N{SbkwjrSeRFO^IQ z{+&7Mmhp^Bz!*;i=w{$JJfyinYf{6iCg>09%AhjPky3}*=*^jXqUbo zGYw|CDO^Uw_It2yan)YuUwu}jsK6}Aq{TZbl#OiRMssDt>YXG2+dxmfRa)_+L`=t zB*h-vdkYDNLj}|~!7?@>!(~n*o4zPZo7!U@HSE;4(eACJ zw^*m7sV0o9Vr0+KjN$$7rk4?p4N!?^gcA1tSMrx7KXpEme?y8y{dhE1xXFK1hq7fo zT}0~h?x>zK9ea0eQ@3lq4TGB{@3gYf*+^rz{pGY#2k?!^I$_C)FAV7v9q_rbnqwu| z88xOQi#g!vQ4N%s%%PF5fRckk596k>;I=?P*n>^Fa$eN+ac0#O3-CXlnr}MWn0{ZG zcSJ^4@RSGr)3atN?Bdew0^-9ZzdvYR52g!G(c{0z-Dq%YvvHaa^;61#XoN7sdlD_= zu;y(=6$l|9Epv$w7>50xS)R- zt4ClJ9U4gA@I9#tf{KY~?cYyMFE{@5y=O%1A%jFVYP z5OC;ebB8;uEzKNsbLut!=Auu50Cn)Qe#7Pt36tWEqcE|7x|KK~((Au>A!0+-E&=Fl z<^W&NCc!50U){*U8~ZjR2aFLT6$ocQ1!DngQ(C1d8Kmd7H}JNXT18>k3Z9O6>y@yQ z4PgxOn51u~Y$PvE{C)u!?(od9hToM^-LtWTDD0kCcLqCd?8hoWfNrK}vHiVw(aulwE+p8>@I zLv=B~rVtPpGxN>jF4J6!CRK!d>Pq3W378MB7V;t!$)XqWxFvs<7flo|56F5ETWog1 zR`{ArEZ*akc3CNp477nEdh4p?Q;KPcvXB1ZzLn5%hD|l!bvLiMx%l=d1@>n3%3*{JFf}%;%u}oG3NYb0ObTgY2BM>GPtR+nw z{4WZ&i1JsxS;Kb0q|cHn4g;pmYN_zyR*gJQnK7KshKT)&{BPRwOMJwXOe0P3n#D_8 zs0~v*8`w7C!gRFxYx{swfX4a*UKC|I)P}D`G?W=-0Y^lw+M5w(r(#^=^?AX6`R5=C zDV1Gjogd|d@Q&*hs{3^90?K} zru|~r-V65@O?b*&lA04m1!-~^Q~i+W;HrzpKXBlFn07xYu-l`3K$azcOSCUWzBenH znOfhjW%xP+S zPmGUY4mN32>Jdu00)2ge?X(mCM?XvyjvB{rBBzc^#U|tWMj_2Ya1}~*?X)`|; zmHR__V~--!m&>2%Q2kF*R>>HWs>(o3K8WAc4k`ZUJN;UNCe=~ zUt|e-3=9Ii1(FgJO|Z^clI)md0$wDn9=}S}@9yd@BI~dUY3oAFvjkLVV2f0vHuB*? zQcf<}Ns@FwQ8;C8PcYh3Iw0;o1&Xn~RjMr9t1^UYe;upJ!cJo}J%Y=JjqYMR6Nk24 zo+(Yed4?&iSUvZ5sReI{0g+Xq9W0P!abN9U7S+QTS2VW_R(_9^0Txs)y>R~Q6&lbJ z@~_Ln|L(Vfvi|%hCkM3YS*Al%oq&AI->h|7F`aBdF)#_ufLY&@*yxQnW|N)20(yS&DkG< zobZ++8N~|oai-rf@T5&J;H33PyR74v%=|8;^I2s?98CWHeU32cxur6yR(aK_gG$7SIeyc_tYus&3{lffW1}){rDJVatazo!`us zfp#r>DvOxnGN}h9u4uQU-@gH5vIu{rdi*lra6?Vf&(I;R4wMdmpX!KlYTXj&&(b7b zt=2I|aM{p&TQSINpEy6Y`?0pQ&;i25IFkl?cMf+1!$c*9EN+l@^pR+1$Sf_Ij?CBgXo>x zBNVTLS+Sh@afj94XXpq6tzxCm95>%R%u6u4;0X$1T^RcY-qg9s{Q;eBcLx{ux9xx0 zp#x7`T&+)Ppnr zCEUMHfI)qI^b&x_DIR5M$eyJcfdI11Edwjenc1Vs2TZZplcX46mSYRP3#}r-cvDhw zzd{HzdKRor7;|$%Kp$XC8PzPo2#AeGP&r$$q!f}}FzCbV>;R+meR*~a_%(^YwI>Gq zVM#XTmMue!Hjxm_BCD-J>Uj|{g<^;zlNrex_^UIziebr@40XN&p^3#Q6STr3k}4<^ zo3u9?>G#HA5lP|j97p)g!`SiQn#0AFt;?ESg$o(s*lt7@3iB?5LTHC{1&QWZyniYb z^9GxOy>cF=Z~;wObn%Mv;j~>a93JzMP&Sn6Nn?1mYiv8eA`RK+SV#+!|CsacS%--$ zMe0g3ng>x*wVwGn2mU=?EK*emp-EO0jfblUxK=xM9LtPH%tB`n#KBDA{__<%BvK8N z)P6vwVVtxAwm>U)Ofz8YCvLF((68aI_!@xeFLiiqod$##e1oUuxcw2i$|iy8h<4j5 z>8Rre4FdTb;=Zc#&_4u`CT09o0*Qz<*;ftT=%OS^LnJsRiW8pTm40xpF<6k|y&Eh{ ziaHf|t;q2!o&v=@XMUcEk`{M zce`I5(G*x;35`Re&nD3BYOAAmc8baJdxfj-m32! z1zzI!{!ymsuG}j}BBv=YsBrGm>x(e@Vn~D)O5|t3g0?)*uTRq5R{nLJ=iP6d>)`RG z1sDDXL8Z?x;ZC+RW2Vrw6Ekwh;dmc;P*<}@zyUF2f33iWqwNd-t{?5dcsdMc<10L0 z`abMndD|hulQPWX^rprZ;8r**pX&C`YSYo%nM9gu$Usl;p;@yx!m>w}C)n!~9HreV4m1th+kyk+aN1z`!42O?q% zB*^sSyPRBvM)kL9g5wLeJp|TXUh01$=9^9FUVAtf28uFuFi!Nz&g(+awwW^dKLeAabR$`#E^ zRtv8Stc!;uEKU6gdWGgAKGDe4C}q@l(6{T?%g6mpD+UejF5eeAf-T*DzQkLA4dj>A z%G1Z?8P(3s$LZgyoj}xyceB8@FVOzx&i9!%O#ILHW1%Rr*{zr*+Ih~|Z?}$h@ z+!MD*3${ju%+3RK!>{;!v@6jROC}luIpgwzi2N30jfzoWjjx505Y1X7gDks5LlfFm zJ1{yAW=1MKqcDvNBgBdUcOsfXC&f$e6<@4WFY3E|BbgGBKe^XEszhrcnptQo6)e44 zJf;NYfB%+?j(993T;dIdx0=G>@z9-jgAYBF6KrbKQZzb_j>!M<*Od})D{ZOY^2C4h zc`TF6s#?6U8WS8+DoYsV+feI|zG0AxIv`h7_XkF2a$bYRZo09ok*eI;+3eOPJ7G4>D`(MA&r61NKUvSkq z+4X8L4G#Sc<5JMZKXg=oCTuHx_rF;vF>Xp_J~00z4?}=9>wOcPqtzmnKlVBg6a>EK zfW)}Jn=A00^7$X}iW;RiZs4#k@eU7J15b&|0qv-<6|jC*vi9pv+rdb z6Vh+$$@D+nu#1h=N{Yp~c_Gjqu>s=9iOdv(#}nPBPj{4X6la0YKwia>11a>av4IbM z#fMyELO$)L(uZtb?RWMepv&dnzBeQ?;%JX3CSbv(J`Z&6?@|70f~ZPwhPJ%9j8TDE z{%Qj^b=5DP{2TaxZTd*Y*@)JQVXNa0JD4gjgI%11(;`Jme0 zQT7W2bU!W*Pp3Hcg@VX_n%FxL)8Lg!l9y=MJ7ISr|KrLhld%OhtP_T89$C_riU;&m z#~42RaC3*mG5}`4-ff#w1I-TYDVX$}iC^FUUr&yV7|!+pApzDU|4@>=1A8%qYTVdJ zW^V1LgVVzsCg`BOAORUcxFlrb(4V(h?zX@;0cf0hNoc+E3bEh+akaHg2k6y&It5Pz z8i?-j;wX+yq9;IDJr8V6xtUT9t$C{ud>(0bBwu7+0aAvbI^Kq`&r-?cOBX?>_BPY= z1r_31zjJK=)Y|$(|0L-vuoUvN8)JP(u&bfHb6wC>{mlklSs?uayS^}tt{m>pQcM5> z_p|~nRrf@Z1@lIoz|qg;G~nVtz|bSh=EjRmjzv0E`A0yuL^Q;1;u})2Z=^m1`J{@^ z=rb0|EMSmeqba#SHJ?N(Wm&cDMj{oTFix%m4Y)GSrApsVBHy6^9aO6nScs4qKR*}Zg8e;!58H3P_0*qD+ zDzO}l6fB%GrYDwrx7uA$8YhT~o?s%C4!ZPFIfh5+-o7k+}t3Ay@#`KA=3-#7;F1l^>?V^{I_n&1P}JEr#9`fjp_|U`BM9g;dxH9dWZZ3jG3fjedPV4g`mu-%GV&C zy%BoD;_+&vm@f4DWKc$&Tp0dPMHk3i?*O0MV2!0KW7b>^E1e)CG~F%bxbn9HAQ}73>^>iRDA`_q3-Wm zME)`DUNfQ7>A<-8PW7@0QM+#ZUHV6{B1yxW6M}gNVA35 zKysB`OR)(JE-JR27R7ym7r-KeaMIn+Qc@6m{b*TRu&u&qGnO5+p;Jc9fSp@3%eRJt z9WyyrvV4*8m(P>K^+4FSwbgSYK@Rfk{nUTrF~xnx_PNN-^Vrp;;|y!ZB}$ANaU8tp zAhY?1uR0+0!K$ zsX#f=noo}WWQrqf%9fCG%Drmhl;lLlT^2?dRn0jFE>~^RXTIgna`i#ZIGyLHASX9R zTWv5OqDuc7cWtA|p=AdZW1Q*+y%E10ba8OuGWK_60U|yKUIulPkn1frR`GyQHEv{u zDgEX&vUrFY`z|Pnc3`SG)4JX795IFWMJXXxjm$$n-R0R!k%HV+$m!{xjEfAXjwmF0 z<$~-R!`={=>&R0%_!zJq3XrqoWY;+uErF zHF|}deoo^X_HF++>}V*})^3guBF;R4KbtpKx&An+dlzgGf`E>=#{ylBz;z!=tySYu z35C+AQN}&Op|tKPP4sw$}z&O5@pIc&ioK@f5TL8+vCjlsmsH(C9`I@_e6c2?5_{nt&wAPtA?HGFGf z^VS-vGul_t;ekr8M^VKfN{?dJ<6|X!bx^6;$#V68k%Kn4r7)J$*vhPLrH0O5AUhr% zo;4Xz{mwm)+L7WBUZ#t?HebTQyS8q~LB(PrXy%;s!@i?%j9uqsvl8v+I{WS*dk%TC z3#6>V>tFWptA%&XHs3oWgg&H9kIn{T98c=MSsAMBn*j}Xh>$Z>DAx!p>i$fzwr9zZdzZ z<=C>-57@-QmWF2T2a&PlGK_|*-T;rgLtnvI5Q~T`dPKi|V&GCeh|EtmfvoD9YMtPD zQqy8;4SuN7*6lzge`&F^xzZ%U<ku5HV9%LJQj(6zwo)zC~8 z2qznKxW6AdEj2NYL<}NlC_uGd!H55r?%Zyk>Lf6YF*c@u__OPWc>tfMD8dCSC68qE zbgCY$XlB;2qoiQ>;j-SJ)!N<|>BdK`*!xNuP4|L57m*((kdrX0CVttnMKA@3%5_|C zQd`TS1!;kbr(SNYP$94|C#?^sw%Lfg7Ksg{$l{?BmPbDVCQ5z4+Xj5xby6qXk#AfE zKpw{j{0zJ)Vtt5L8BA{sUdj+`vusKY+vlWBH%GA1G^TJSP}KYOgUo96*t` zb~(KT8d1Qdd0$-a&rcyvKjF;yD@FOIZ3eKdLA1vtd*gae;ax9k`8~tS^hhgG91vrF zy*bakYh?D_A#3<*=*_*jKzudy!v5RP%hnUCHSL`dn%`sOZn!>Erny$mp8u&zZ0Mn2ckahEqGebU-j^ePm2q zzJ$_u&9k5a6v2Z@B}m%dLAtHOp-np2X)Ua%qQ|GVXri@mTcb@hsU2Yp_{qmu7z!TV zvl+HWH>mvu>5{-QR|>Rk1MwF%dHrjp&+d)`S(qR2C;s9N|0pP7nsZ{pJrNGqeu$Bk zOz-2uyKnJajLJ+4Frz6)tQHC8A8+pxg_>m8I+vCSoME>IJ0E?hgcJ8SF9yFzmbCAO zYiDMQT=<XXW71$~Wl5WcH6x@@Lkp z{ZhSEAtc_WF zV%xUuq+(ZWyVB?V-tND9^xro<<~ZxDu`kxm9(#?w=bH0*FdDM5HRRD;08rFXX4fh8 ze}PAN#yHsttn##Vh9FG|qHPo$@efjxCzWn|m&aNQReuM5b@%O>y7P7Wpr>!sjEkk< z{EKXN5h>Wg&(xrSz~74-6HqgYMLU6;|7TsFem*S!qb0pDv4=wenrS-S>z27GySC8B z=DO9XAk_N_U!G%9m;u+&0{|iz3`6|6`ouIf85A)FAAvJ)$2pRam?)X;T2u&E!}92zw|S`{)JZU_K=W$ zM^ELgm?2FME;o`j;f|h%>O>E1FT?5?Q?I0QUzEq$(Y9O8Y%;%tJK&D4SJ&ZNPNNN^ z1a{=wVF0Irjh^lz>^{TW0}q9Tg7D3s(44|x4o;EYHkm(rImaxAU*3q!LDdbrVOssD z#Rl`>S83PpJ`TU1>AKMu9sONhrUs7u^`@|)c?3hNcc>iMzmlLW{#^LQmku0g(jYS! ztu6T|j%exd*Z7j7Fak8ri`Of&#Y5v5_Y2K*z!_e2kr-@_upD|66|-~?{Eyt-)~P@G zPyXm6zqK$tyqCw5r!U%wM8NI1B zjAiG zO(%$tQBJaC^?2gOkZ#P~!5ZF``MmYjo{A}O0hK@R|QuGsoA)aO%jTV}yGAMYsO z(NrW~%?(9hfdN={*gEk%3;vr^a>)MBr7^)0i|#V8W#OhPw%k$9&wD(@ofjdPf+lU=xmrs! zg}XeTX{~^&Dz@^4K!|qz6(k}bSq+6oU)(G^k%iRLc^Kb6TmchM$`;@YgHVO0!TL#C zOvv;vuZn~>gRgpZY28h7pOEr(ZKVVKYdq?#>o1X)n{`PQOsNVTHMrq`PBep?8pcY#%Z?54ky274?OisKrgis zf7rE+5>8&Do+9=k_ZWD5@s-b_Oup}~1^`rpeQX{g4-Lw6)z`<~Rczt{*#)>sla%Ax zTQsz*5VTX-6l$be^4K=)AgA)NSfprD=ipZG+yDYdl`HP_T0P11M=@X`9pz{!5slqA zKLh}1U>e3k{cfFzBJ%w9d!nmOFCHrysAeh761cSZs*}fmCS@z~T2dN|7>#f|kTLGF zg33b;X%nlJ4uGM2ow1rW}$SQlqR?+E44f%C^-N z(Nz!nykCf+nuXMD+Ff~uu+V>8A#dtD3W8h*kY+tb&EY#TtBZ;|St=fRcM!cB=%We0 z!WjC9M;7=7T~V+3|L+67Lj70K;Pa5^b}h_|H0*g4maGmS2KqdTE5Fv$A^#fPB4TIW zD0>NtB?lqX@e6j9SlOs?W=mCgUdv;RD4_mtIvCY|)(z)2C#KC89C%g+-<)!<@A-5z z{6J-4x|ZiB8h!Ge!&I?lfF_e$^h{<9+mkDC8&$= zedCYl(i zu22ue;_u$@PM3}gj`bed>sbsKwzRYoJ3!qmIM81Z9?{6{*Bu>ik z^aA<4mIlq?#3&#sU+soQz}VpC(!4N`N4_i3f?HB%?FR}(bXK?<&YoMEMP(=yO4`cm zctr_TJi;oF11csVMlY&bB1co2mqHAc_*}*6DdTTNU!GgRIUl7~KGv*m{FNFC2$9a%qVoY8bT}n4WCWa|Nga zk1ekGZzydgRm0*E-mEv1Bc546vDr?U|GuPqKqtdmv#%aWnN_pd^YkQr_K}oddi%KGj7JX{{3Xb$z~; z_P_jJW#I3KGsxKC4othdrQARVWH+EZCW)RQPI{&u?(&m?>vk>uKSEH?R3t#Rzh4g0 z+|rG`ke^R*195E~8`0$b$Kwb#_NxOlo5|lO9i0gnC#K$`wg%92+mD98vdNsAh6+Iw zdIu_TpQON^BP8_Dwh2gmx}+W9R{_!9g+r21F_HMs$46V57ZUPSoJ^ViCuG*ci^1;g3$oo3t^RkQufZ(dPiE04f>CRKds$ zbJM^9aHE1)X-|Pncr0sN+O)ChlD{||*?LWXrOI~XW!Tw2Qdo9SSAe+2(6?MPZKve1 zGO34LCw$se?BDeGwMqPHOR=`@JL^Aq)g3F=#Pnfu!{G^TZk?Sir4XaYsG{*%e3etx zPuPiC&xml{;r(M~vQD1nA_T%)4>EORcmG?X9D-Jv4plaCcE0qo+vm3@t5JMBj!(o< zJQ7BBbVqF?y}SzuV!WmG54v4XX0ENXKk4d2nG;G)CuQ#REVLg}77%WE;yyih*7ygu z(%KF!ETr=}(cmA{hSPj5p~&n%Tkm^+=`+uVw1BFcMlE^;tVw?Q&`Q_ta`k-sl;rE~ z{oLp3`Pw4T@BKJA8riq$9ynULnyEf7bvAg;zECFKHP`_V$oIS*88G*K++J5*5HE6I zhBC6qt?9$kgQ0uAU6U_+PS}otE^XP181V`_Sx?*?H+K#)|x_g{%0PQ6dh-bbWbYvm*z|{~JD-TS4adXf6 zElgkBFtmJ!(^?<;v^lnD2S8sfXi!*BGVb#@vP|l&PEGjD$5=h?(mm5lf=9@Fu(kyGUrav0^>jJWhEzUYNl@E@*VRm-fwE(X+ zR$yZ(3jwuoI%PE+8>Zy&qdbQK3i+LSQ%uSoD;uV3`Bk1owQU^luoRaMHR`x20+Mz^ zg}hxPhS6pjTwI4h?&75&Hv(VI_35+=!SGeA>vNnEg2(4x6}9`& z-wp&eSH^LwP77^H?!VV?7p08;KmfHba!dK^R<*5RFVN=7o}F_ue(Sx%J)ijURw3)K zW^x;-&+EXuu!;` z_|FMHvxgmju59nBvSlmUpdv0)L8F-K$J25}tf9595#2O&plCxMeD%0o8h|m-NDH4z zI8c08e_}e*`h@II%LKy|N2qkdor%8-?}0#|{gqRCpItFVEA7xe^>ea5&Yz0Su^$GO z9$VD&9;@o1I*G$!C72R;cUIDxiXxg2tDl^tbcN#h*U-1Cu3~s$M@D3(!;o9 zB{gbi&Qvd|GZnI(F04;H71}+oYU)Edb$o)%@E2J@S|*2Q%>D74Tw2BHgblENqe;>( zY5%-bL2u&n*SilNlL@7|ApR=56R&=mw|QBUbjSNPzi+*HlR9yUDgZxXPH@dL8_Y+3 zSKQYBUFfMT?TZL`^AhiFbWZ;yljU4i!_E6($s2bK!9QNdW^}s$;{`Vf%NhB7yS2=R zHy6#T=H@_k*d z-VIsVT5=`>pTlDeUs$-KNBj40=4`84YCx2&xtaPGk(M1jJ~O=grI&~6iuYJ4>?h)P zQb(d6@?+(V8pDEUk~dbTRNHXM!J!@v4Cvd8UxD%;Flr&@C}i%r}ce`W{ga(&C2Zl#g& z%;&z_FYl-!@c~67HQ&NkINiHs5xZ-7#d)?=k78C=eIG3|Av<+X!oX4BIXfG+BE{qb zJJlq*RGuIyL_>TrfuR^n4cV$1ZKMvPPwjJZARrhN8XO6V0D%X`k!7#{KaueNit+*- z@uo0y#2LISP7WK(Kl9ZEIwHY6P+^e&dq}~@VBs*b=o&uGZ;87g&j@n7%nOJ;z|4?y z#Lo)^eSJX82A_HAN+xKiPHrS2bKwh;cE2Lw*t^^=fS zAk5Z*NrIbk7-vDAqz{BIzFqO-Ml78nJ#J~-Uua8xV`ehYEJX*EPaNj_g@iv|V)}uHs#_8~ zXi|_%BkSSHJnbPL4&X5v3j^uJD`a~?B$X7txzIOr{=!54MmVV2$Usu)M+n6Lqwn3` zG5=_7$6sd^Bva`t$b?PBRM>ko-v) zLmLhqf`39z2}G9)4ms}Q{txud+@-X5G@e|+PvrI8#1>4ujFXA=EoQFv&BV# zq_Wl&4_qeB_EQMK*pGAu?kcDLUjH&sln*3i-!~(^CJRaI(N)7-~@)DKP+d{kp9e4-ITi1KkZg;e}Avfc(CRD z>YQS3dfgEB$7K`Pa8=jcv59R(V=VQipL?PE>$p1Ot{N;niLls{Sc_IXMYm|gJ-)eb z$bkB1l#`58oHhhA5VXTs5ka1dgF%O-T2m%8E{cmLL+0pK5mM}E23%tFIZ}fYuqm(+ zkz$`LCR*s$C2z%7Zr*Ds!lufGBcPq+`}3m=lej2WVH0ptn8b&R9#(E1zEvUPni(R4L z>?z0&N;7ll1~(pL%^B3QhUE*wRYi`3$C^5oDsu?Lm;3&Nu(mB{Nh;V7ndgeDXK)G^ zE2)Sv?N`ZenSfOdPSyH2Au-a8&ScSffJ?Ids+1zA5cNlz;_Ua0Bo?)=5* z+t=F_J+@5P+X8_XYM-`- zpC+zVqt8+Ynk99X7Ra(iyU477MMz{>sx01~Oo?l`wZ6<;J3 zswdpmu!v*N(38j&KmCPsrcW5XdaX4{6Ay5auBRF%vGBm&!KAOtMb^XNrY}!O-yuS> z<%kn98%*jvq*Ne&SJ^61Y^`R5)0C=gTGlgu8p}ofl1kgxmrC!+lr!<0nC>ngR~%n_!5IW+Jh)`%J%GKpKCA7igAD$+pA$5DB+5wiy;n= zy2+ltnCF#YbOQmWZd!pXQ1|A~rZi`RM!-JuVA7#8*oZme2)p7Cpx$z5QN33vAgbD+ zGFJp6__)w9LnLGh`zXmbt>p2vD;K`uWUeq(Z$93uaDEsMa3(LTX=NNsNvh$g)#VT! zU^7nW(O4@+o<@PGr=yiEiAv}QiCdfmEo5>!(qZm*+@V=JBS$q-vSsG2>1(Pjmxd7h zMHl$mt*ya^@JtM2^cvF}RL7bMr79l8O5UL?7pO@aNro~|uFwwXz$&>Gc^9yFs`W+# zPuON(iNgs1;3S|6NhHpvWs#I76o*&CMu}HSXXDFH#TI_mYCo1jzng~#FMx-UFujM~ zQG4%6AQL1KovKwo95gnL(bX;3or3;zTLAY%PwKv<;3vjv-`yGQrz0MPs);4!LYA7g z^lIbB2(y$j-tjzXlC@MeVUIXz8T^X90*SK!?aIjlXay!s3NX%!JKI&BpPP9S(ooly zD8>KQE8PZ2I#63TCZbqRpir@@vCR3q!hnQ{*pETT=K3nR%9wR+J^`i5MBAxY&O!yENz1G6oQ4nWy8RI;|jtbgQKo`fFPfe}cam0Q&Nh5IW zZ;jpna(>w3smdsjQ9h!KP~QDD)}JE9g$YE$?O${9fM!ZSC(Pr)iQ`R*XcS7N{1@Be z4wta0Z=XGf)#TY@6I=v$*UiOOi<;N;S)i}%B2!JRTj`dBXG9wpH@kI06t-roYAC|6 zB)!g>A$ws3`n_P+{F`ezFG)sy14lR0%sp!tV2t)bHfiTD{{$8{QpjVtwh-C0RpMrk zVx!v{M4B-o=v9I3tPWt^7F33vjjT6^JzY4 zV8gOc_YB)$X>EIps9T%g#1(lNhk143MVtrlm>fikBg@urb0am7qR;_#Z}zwUmzR$Y zfN6g)s9AwRG7hBPHs%AZ4S^#0n`&aWYm~VMo!|vulZuibw@mttr54kX)LBw^gre}l zN>{BbmGO$6S8|gW)t{4cq)aUdsf6N4okI*}P#a3ZrGI`lPunDlch>8J7Ec6ttVtOK z?sz&SELrqa{gtLp80P5@=6*vq#b*PhMJ?kz=3PwQ@^8S*oneWhy%-!S{h)-v^es|r zHxbLQvT>!3^v}O;^0EjNVV8>J^j%zT7;K)ViwQ-`3UK*>QsEPvI7;p!VX@pV6p_$~ zz_WkI;eL|#|9#y7GPPJu;poylapBW7exfo0rfLZ~5Vv>h=Gi917=t!aP&O|umckZdIE|2|K7NipR2`VH%!U6VH^Hz>iTg&8%5@&!BD6sM;Cc3OsR&4 zMr|)ZAv?)Np}2CMV0~{a-nhIR{+votcE`s+;MU*K3Rb(x(Jg{$DhN9o&n2w2 z!^3q&U$9Yg$l>Fg+S)LhgsbGM;nj*ZoYEa$(;!snUTh~*dz4{+zrFbJ`F-5pzV2T? zejX|lkDl~(`vDmbXI*0+!n=JwxC3R~K)=o7$-l{w?tKPGA;0vj(c!Q! zFdGSKf11u=z1)2KE6XRSTqZ2k>#0yiym+$%_&gJ=_4@z{Zf&mrE4T%G3*#(i5th2` z|0Lr>bX`NQ>=;k)mnpU7530y*C|AmYO$>*x?~nY=*miBu8gmH?h03QTkrOG!-~$nC zXZg&9xEj-Mxx>Z}5LnYinrlNshqVJzTajZ>PT~T>aI#UQ6I~g!F6r4P$@Kb9;|$ka z7Q8{xbEA1YVQ{$SIFi&RqBI6;Or@vUMtUhbIkTjAgT5t}_621;$MR9{e-2^6aLO3n zX63Hn3vsu%+OMnlY)}m{TjP=2BAOOxS40WetXZBvjc)P-Y?l%?v^dDxbvEJ59olFa zxiO$yJQy&x!o1^>;6NMFzxO$p7<>)_R2i&?F{PVgI`9ftb-GdsC+Nr;CJ>(Ea~wsueMaT zY$cl7>`=V*ke_v(S=>(uVplp28&P8~qs=#8>29G9}^SrC^;&uVuKZXrc%_xG|LI`^~a22VK--F*;&YEkXDhbV0=}dJj)S zAJik~Cla}~LLJ&|DGsed*M^2M@F5r2Ng~Oq?cbm2%~B1MC0{2d%wO;G1m#PCrMYSU*H3vG((0g zr$6syDvIb&mJ*eTiG^Z5yz#c<0_}d@H;*LhG(40!1!($y*%2hqzp1-waJ4^rnMNl1 zePP%oH_zf~UN!4u$KMte-3V9^h^y*Ik5UhRzCz@eS=UGtfR(o@B?vy$Q;B@^K*0YwQx8`nbUQCsm(Jlk zUsf$c>XK2^clyP66y!E6Dh88ZgT2lkJ`CJQ%fdqmko99g4eqI5oQI&m;X~zjvjW*3$`z&?f(xT|9J*rT0Z}x#(<0hZg>WeC((Y2ua|n>5*{~`F-X|? zpl;<(y%5ZF3nga@aOK?9JBUVg50Ek!9c^=m?fOr%PDFTLD{B)A1X0~6gtJT?k-MKf zWk;R`gJ6=~&uH=DDsH%g@#8gJY=^##?$5XizsqjZ`>P4suOi63;Z;X*jaC7}PTs>m zF?2_P8;5-ktiq_%dz4fmVzMniUNL)zn6NqSSQ8`BLEt7SWjM8SzqsjV%+ZKp{j6n>=q7aoUCY4F{IDSj(Vi*^OsT^QOJ zzT6&kOMYjEmvfXB6h^TYevtg%VBJP}jwfBIgU-9SsPmCR9XCmIW|q^{fc2J30S}Sf zf$_|FJBf!#X(kgrWA_*YMtRO1Vx;{eisb8ZBY_JzQlTT-D+RI!&_qZmXzrFqBL7W;0(=xiU7yFcNlC#UCE zn$s9CHz21AyS_rsj_qpCaga8te7qeh;?LPO94$k4 z0JQ4%!qxVAoLrk8LK)x;4us<~+|FGrXd_U+I6@-#?D37H#5dro0|h;&hbvtJ%v!;7 z;9y-tNKPr+Fw%oG7M(ah0mHL|KLIC(!!ho?uSHl$*bu6e`wv@hEUzvBLrcI`1{Gi{ z!zE!7kIid*aP-ZUOjOGk(6;ke7m9odfV~@z0p58@YyLvBNB;w~;ZN;LGf-k&EK6@_ zmBE7Z?7>3Dnko{MxgBt3D)d6D_7A6Sck$I#f^1~OzPE0`lz$_n&j^~seJaDqbg$cF z(nt+;%S#+qX$t{*s3DuCD^RDAC%D7oH-bN=Xn7UDQB(ZZ^Yi|bDoq5fGpf$ zFgX24E-DV#-LPUmDJXuA^q<_^#^8Y!JJ}$%>e`btrhhx)9B0RN`_%1*tw-~AL0MJF zNn8ew|C5UK2t^L;C8{f;5REC0jo9f&+0nAKA(S1YxY`+#mCfo-ajOD)F{O-U2flw! zgLG7i1}v$fB54ALFZZ5Fx%LDARO8h4`YOZyL|4AW^#<<&k$yPVYP`*wz_IpA5bDF{ zHv>0mQ_;~NXw?V8JzWq^K@SW9^;0>KmDXU`h_3?B$`II0=0t|Ih*FAi&Wk67aXSb) zm}oeg*$SQk{H7y8!IfhiWx#=Mbr444H;Jt08X!p;Ky)0(`*RpIf};kAL}O82ypYsC z?;@i^;h~^sl<|_7PmL6rLLI@qLbrPm0?hXAdx)p9lIYINsTc43z8RWD0xjv;8B z0Naj%Tn{V2%E3Z+uyz2*pwsyKA_?%iaU@5u=Q&xxk%L|rB(9a@oY~?g@J9U0H9mG} zh4ufoK#!X6#p*m{X1@WDax6}v4h`7}LS0$RIL0-cvKy%(NUB|=QRr$USf(9SqeA7O zpr09w>zj2%bN>Ai(XYqx_eXgMdTFkh^$g`Hfo*cAPLU0GSM%PxmkX2|jwMezHs;dX zTb}{?Ywy0OEgcix$d7jj(vigF#I~}y_hP3X&isZ=iVS5|5>yEQ-^e17&pa|dtKv`| zQ52m+9S;BBA32nsfu9Qv{3q|7SF~@n? zvIwxoU8++;1SGKlp(I?1k)=N9A;dalP+T*G@ zz!GFsU&?0am+t|irTLWRECxm0U@ut9$yL(`N;Hd`jyXI~71|oMep}16^=T=zWzwykJC3t$ z(fBa_0fReboxlnWMn9+*9K%~o43-Ta64RuR>1mIZB3RFPFjifF3$|MDAXXr$p|=v_Xir9I%|j!3=2?@x#}(I@Qxg7Thh&BU|IrkWes zH#8-&zs{cIbD+DB!+0-kBtjMtRnKJF)EM2fePqj;RC=>C+0}4QdEv{j&zii~?Sl{p znBRcLk$RM%C~Z7n04pt2Bm3taP1vRK8p>jtLJWGwr8%dX^%jyc536p?tjUoQSNYcA zaF<=T=USWpnWDF=Y-zp3c2eXSs{)J?16d+vJmmTv6VXDxjKh(&tV=d_(dO3FveIcx zgiWr8P>tHMZ8sGzT5X7a$TpV^u4ZZ7t5Zi){{S1(i)ZywoeINW#C;eo1TGvHz)ztXt-& zWU8`ytcKjfm|NtKFGu6&cb6Jrz6VXSFz_$JAw$ttnf?-L3Q|)1aE1ibZb<Q* zN#J)qCe5CCGesg7SN#G0K^#iz?7C#K$?}d;u$DL|oXXpEQ-}?06l)%uz4E_-k;au* zKb9#XeH%t!L6<}%sB{JNS`u@lZ6N^k?7Q7W)blcsPH+%hi>ntY#z8E;h*!$fS^n4Y zpy)9oZMtI`7CaamS9;(k935apPp^ug1Jz%+Pb^-Rh(qm1g&bH@J@$V*(l-C&k@iL& zFy*Cw1h^sl3L8 zL}6CMhL|oHEqdy+1R}hnGld%ai8-aJL70vrhpUibN;^}3EPAp60##(koTRq=mgOL; zVs+=VVdMuGVZJBBJSh>ac#a-(!U9;&D#aFcqmnG%j8RT<`K%G){iRtWh%#;?!qT!_ z-WJKQl)&9{F5V_!IC@vNYNjI=OppVc(m6T3E>{S<;=X3SAwB7(s0kO`cB3TjD+ ztCF}lE#-yF%kob8C4p!bkRm+_f++hII7l)uLT*&KyViIBHmt=(m0bCd62zv^GZ_;N zY#P=yji}ks4i@-ST70Ov!DM3AQo2UR$BrnawBgs%wPnFK>&fyd0j@hGSjG(^^uTQQ zBeU%Xt;|+=`>h{k5A)5qOXt4XE(GwoVX7fd%6Jdzziv6ELF&=tr!q|k4(Z8iT&m@h zZ1GS!Ow@=0$?3*iOae}w3#Tp?|nB>2s#HO0N>}^?bijL@D`zeH{b<8+he{^J+dvuHVoTVy-rCk&Q1V6 z=a-!;C?B4Fb~`qv6@PXs{=Pj1TyS{rB_27G&EmuF{WzQd^X0oJ(A+tYYeX(=iTvPE zpx*y1C42l^$|Yn_#~q?DOImRMl#$-_TarMzgv{#_I*i^G;sWLHCkk$+xBao&`TBTo zSQx-%Tb)DG#VOcmYKE|S9D=guShJQ9uU$HfoT4IWg1uPxxtXdsGo&>_%0oh(*JD^E z?4cgIicl%(0T!)Jw{A}(7Y}g=@NhmovH=f@9 z&vIE357J#lmdRdmwhN|?)?gp4c~1yDWz^%!jj%8esbJgnnw)u(EtrcMQ}F8{&Za_9 zaZc|ZOuV{)tH{!BG^un)D7>A%JF3<#ztxL1&n}0|^BUhuGTHZkdkuF~QX~N54#mTs zARYW0_WsKa&muNyyOzSc(M^vO?!xt+yD<0yEM$%ly0SZ7OLxZE#HJ@$y!JGuqTWzj z8D919U>`v`zM#_w-uLywz9i8U*r44Uw6f;tigqocih{kQgW*}y+BZxE9$1qNYP6I4*p|>UAaSQ zLtSBMWqxYMu-q)-_8QBu>95F53H*w*^`a@%SeC|AVkUd7|er0%{TcBdF`*L z5X8ca7VNG5bpNcX^FB2yYF#vu%{WKj-n7oflxN~ujdy*3TvWYD=NWPG~40~8h@e@}EE zI0zaN8IA};U@({WGIQwvYdGhrjvM;_J=pEvnXd*zJ^V4#H<55YVReCK`)EPNQ;ETP zq7R&6H75j$fID~LCHVUODd~xahK^hQh^s-c=v%P#Z|1p_`tawA+XNl+6Q&o`>RIUB zg)`rN;Rm0FWZJ5>`~%Mo%$lDLD(3U*xATI}053vh9foFaj#I^~k)R8AgX8rP)D)R+ zxa+o-$%|6?>v&5BlW~!w+d&L{1c6F7dw7EdpRxl=aqT3U>f|E}S3=hO8aG^@ z93+5ZIX_)tFt8hEuG~fYz_tuG`of^V9c_NHcJk2#UW;LgVs}Zv;B&o$;Bk_irBZ5v zZ&41gS~Wb>OIW^uMHFWvf^`TUb=X;^wnVs&Q~TzkVt`x#o7s$#qEir^b-ei{o+p!; zF0%5H79fWQR_~LsE1F(qF#Omf{9++yb?KlW>M~<+pLqW4GNLH+w=8UjJpe%~&L4OD z$eoll?Z83aYxlrIlr$|+NNwGNx-KtoPl*P=gD)2M%I`#{!#}UFd*0V-``NEE4Hj!t z>5n)Ac7$C2x?Q*2Lgm%VIKpNVRjQx6du|ptN*Pbh?82d}!|jt84n7tb}sg!^J}srP>JEh+>K@ zH=ZRU6P7{GlMj4o(Hv^rKli8f?5Z1oQvtSd8M>nEaG3>}|H!KsX8azV9yc?hRGnW= zuDEozX7a{Ze|SGm@ny~m8I6`D16+aGF_&F`nd1r5>~>@XqnBfJtk=41CkClx=vSzC zwHLvWl(Dtplzuq2-k!I!^YHAd-8vYQF!BSKeHk1~MQkl%2PaqL-ERz|;h4By(<&^~ z|4EL03A`Vj=V^I*u*AUph9;-W>=8?{1PAcE-Ut7ZZD=LN4FB#(vo{009)%M&1u&bL z!@kO-nrOba>%>+N`Ax(v<%Zq(7yoP3AR|TmO}_b9waFm7c8y6>utUij7>gTeJZYr9 zU;8Nm%k&GOadbx#@9xXao~Y(8#JI)%x<1DIFiq0Wqv+ju6Ef-5E|XR>!+t>$+?%$L zO?z2+Pd6f7+q|GD*2gwACO+h@`L+c>8TIO?{EjS!{;fRueKdH^|zpt9F+> z?H&WFm+M2@4inwko-^xADibOx19c37G6oh!)HFPZvIL{*@cw^^#hCxWdaMkW9K^gK zktL1Ol(NfOaE&EUbl@3H(_KTfR*3F*hqmQBfx6#!Fl&?M3a9qr#@H&QO*f27#|j1s~!Kid(gOHSbZw@xXAN3hgpS3wE7ijSuXL0eVP z!+2F%H_bKiY?Vudoehwd75%m0a+RTWp-^GgqLv((+PNV~747yepjjx&v_S%Sa>0Og z6-oKn+f+hsnM?|ZEvt~E?&`DMz97b$Q#fwQ`ToZyPds(cds~KpE0ofdSO5}n_h+9b z4aVjQD=|vXjI1z%enS-AdgQ7GzuzxF7u>0hD%HdeP41^@^A47O zSI6A8h)QEqOn8tYDf&qYTz_55z=+2*kaJB@?Q3|$Mh_};5GvXWxkBZv@WVcsd^NY2Eyw5f<8qn#ZTks6-E z8mh5HQB1z5^tA1N_#H4S-iHXH(L{AYt8Q3B-B*YOaD9&YuKp%uRF$q z7hop%i&H~vv4j?=j|ZgN-}*>I3N?0V>nPGhY6Lp_B|<#OO{$fHXC6D0!JL6*hrs1;zv&7V1%6KiV}D^t19j!M+#w2h8vbRG@wN8KP65 z_%t=N(|$y1u#1H=4NW!Mo)puKQi%%lu@ZB9%!JCgwww4Un0x@3GmGgoqO`=~YFG^N zj3VxmspDh&KtuoDZSUmgpIgqYsrPxI+fMdrz%2f22njjFj9XYR^#MOO(kO_QCRgI- zE;J4`3(=Qfhaz_<#3coYNQm}dlme;Z_LxKmk#JCpYKy5k$a>3w0ZdB@=}}R2_hf}U zuFZAgR>W+c4)3c7q+f4prJ&S?5GVos{mAe>*H1Vy+lZ3O_s5-Z%8p<{r7T&>8RhOZ z0RP)riNCVp0+eTtHCae8!i?kvYi4gp@4s&PjfWU7^tc30ZM-u2;Ou1g@(oeZ113TK zEax+Vx|($h!L{D^@C45@%*C}LsYHbrIM={;CCZ@Vk>#R~NP;9?8EKrbIXDbK@`Jv@ zhuK_dVRDw@xO%t5Bol>gF&3tIlHkst1H!pj+T$oAnHJ)#)-R|)s}I09e!6C)Te=&M za%G8fLAjd;V=F14p^Zme>h%(R#9@Go*1h3qdcu!`|m@c?bjp5J3gY?n| z*wM$CT|y)x%wnb_aF~c1U0u^|>wUQOud8KYqmw0~?6V-08fR3>J~Nfs_kvYETJmK& z;Oi3j8t~5H%)Q3lt@H0`OlM3;0Z6V+UT(IkOlrRzvZ~cze!cUo_t00y+S7VULNDdK z_+K-rcg^`imQ7T2?4qiyehx!9(FI>yoV`LBG0SOH@QH?m>ZQ1Dx15C2sD!PEOj*f( z%%Hu09$=bS^`t5U`D~9>9O_C1uSG)g-&E&^yy|Qnu&V3Xle;8EVtyj@1DwEF1l(nt z^WCQ?d|!PVpfs>9T5S z3|_2UW17OYhEJ@Ae=`q4a6mUDF~O&ptS?eMu7|>!{zcN-c48tb)ds_sy0U%01%k@Q z4o!whR{7k<5P+N?)e;Q8%t;mjf{yCSlHjisu~YMt(ba_ja0rH4?|fsFYajox$x~X> zRC0U}&(C>svk!C7wqWZA{?>)3Km9naZddZQ^*&+5r_ixySifR5IKV@X6MFfGE|A(s zJ1pAXfl6obI|jc$R`Tuo>yQF}5cei4aNPkW)?{Mlbd}XZvVFq8)#U%6>Yt)3Y1=kj zIJRxuwryJ-TOF%2W1Ah@wrwXJ+qRvoJl{M1e~q31fcBzqv;IOH{D8;w>mofM!lnT_DYzmO|UmB?5`X(;n2tY-D9 z?44nA)5`A}RJNh!Sc5_|=!%ZV^kg=aB=S{`Af4`rjZIA(jvCpl_wi?m@aN|*fvvCevzyJ$k{o-1F8MJ2 z)6HGQP(i|OK*s0P;%;aL;`1&&dUR8tk##ioU9kHIh*j#62?O}dAKd>0!OOchBY+N0 z_x}vRSNExef+n{k9qXg<#_xY#jxuOJ-oNLFc*OkY@aK9dNy!?};ei#k!yq=273+6Z z3i@>zgCvM;S7gihNy5NhtQv_l(#619YHVm~#O77ypa{iP$(UPqMxt&F{VG1SBSt*dD%JN#hP)1GglarOPveeluynq4& zm^fBr%7_M9#7+Zq9mS*(jmWtd5m{YplQ~&;RY1?gyoS&~HDNWEdWQ8q` zF{>1PBIw?X^FTN%$upPR0El_Cv4ltxB;ub7i7}xTdM226~|yCH0X`#Ep9CSdjyJe%1bT`svFF%uWw?@(2#H~Br6wG@*c{j z8UjH;!ZXt1xKl+H3B>pt8NqA;Olt4AcQ+Xu7#vq+J}5BEBvcZ27eKd+K42J^>J@Iw zAGwGCM<^ShBjOg*pM+9xmSY))7Ej?IJ`g!a#M(qd$yVA>+1(yz+uJ3|iV9D&zxDGo zs4b*F#ut0toA|NLR$g?%N?P5JpP$pQQU%nBIGcpQqyxskPLwmP<7S( zBA@`pGK0~uqWt1AACY-7n!`)W6az6Uh1&xqYfU#FKngUY+}{Z60Dgq!727AM;5rLv z7o>#oElxpt@0Q|{Ey}ZdA95NwbJ@?H5zN8KV95J(G9tl;kqgz^@+ zI#tc`6exQ#_4csnx3_X?nQ^*v2lDcGJiQtKoa3HQ;u&;xB7|~s_H2Z@_h`IUJb!n# z@%Y4EJ3D)SuTsL|=a)U*Z>A~|+JD5ZjSzl&-OrCaZ*P90Y~U4=3JA?jUD;mX?JmA6 zt_(vWOla*;JYpja=jIFJnnXyJ%a;?DWm6He!!``Fa>Jd8!Pog{NFe{&m6`>|8sPQPD9^@s4DiH8^p6uM(pUT@dX{pPcKml>k z#Dw|#bUe$`#op-8-52sG(9i}*(gQf+oWcvxEi3aUlrk74nUjoG7ZvHA6>R0>Mg5Az zGM-xUu#H`XzGNY`LT`e% zSLM=+XS7qyXR1Fv0aCIqLoS7?A*<-uu0@d!ZAl>W>roxn-j%eKQ%HwP%>jb_mO&sX zKnV2esa>%wRNl)aK!>bglL9eN6T-qBEdbTBD`jicU0;VnDMp%Eg1MNi7=1NjME+hO z6S>hz#eR=&Xiiv)BQ9gs_{Ea(bn3|~!$iH(1|?pxX2M}2^53CtM6yy_{L1+qcVru9F)r77ASTD#GSVHnZ6wF68Udf-F0uontnJB0nfgTY(e2tj8`D4>9 z%B>djop}}PACggAdk)xL6l&N0=u=n-ym;cJCC0Z}8R?ovu5u1=i}*Hz7Bz$0?*&HJ zYE{D#j-z?ft}!*B!4Sllk7Qffhw=ip+3IZUAt=g>)Mu(_Z}~-I;I&F>z%CtUG9HwJS+grR8PXXcJ}_q=YX^zU4XNA8aaP^+c$t)Ry( z{Q-*xEur1Id~L>LQ*mv14;tX>>arU$m_Hbn)IZ;F_gD#Hf29SDCMPq|oi8YDgPWV{ zp?t*J9{jk#=s2!b044P?OejN!z|1uOG&IGD()7g1XKE&pu-V;OvEI<8j zju>H%F^ph(_U6*Oeh}++k-9^M@Tb!O<@6SfAvUrK|4`MINTRU0e`Ka6q>FwXMxf4V zHYp<`CJEqH>#uYcHouM2!}`lqyl7L(x`56LPi`#Y0Sn?}ad8gi%SYR*@!?H>q*hejCO*ft3mHDzZdt}6g!mZ z`r4thBuqiPO)C61!4_u;pEQ6&6%8?-Sg8SpHfosZrY3WfAA`$R2e(Qdqnmx!df8i8 zdz6mxid@3)?-V42LAalDApKQVh0lcPoD}d%wIfFxOtca8@oL*%ifb7Us4RV}Id5e! zM~4Z*Qv(Whi&=-=zzJrk}>m?GGs zi)7ehp@ibBenchXoWH=;A|5rZcU7h9H^i6Vhh9YpR$_^>U?xGLY@BXzSvsHs;!^$_ zFSP@4Eso`q2d5GXFJ`=yfS|YaBbt45Gqwlk+BN|`bBQ3~%`1EwiD32r{q!$@dNFytw>cWbtkP%F{_>XtFkyLr88Eg@xk7_N zJoyvze%YgE}ww+601yk%jd$eYYx$9?FfLUIQMX8E$IM zpINq})bR7-5DK3I3xp8%5!9dn;jW7Kjos;n9tb8M;_5fE=V8ZQ)QD3Ikd@C>zl=h+U&n&dR5lk# ztZeKvMy*LKjlzXjj~^Im$ayj=s;G;W!fOmn?2aqc(^EQafwFl06I)-t7Wh|7bBLRy z05yV+OIGvMS^qKu11*jNM(g1Q@rI*Ja$_r6bPRZ-ChfT;?-TS~M8)R)GN|%A9$SE_ zq2migk~QNAkgWwuRTb#^hjGle<;|)VUJq;5teY$ir)krs2KE{|sS&&?X4!nuX_^VB z`Zt0E$cXsM8Gn=zm*Et0ZvgNoC;GOY796MbhAkf$s=(x+9^x$=59GfW+7}L&(8L+ly<9bEG+1RWr(-R8HjwG<^{>U z-EExZhCK|IeDpQ}4j9?%!Ej3&V*;m!cIp?aO^PY%m9xJJDiAZH)0q2MKT2hy0o$n+qvX+*1B(8x~=t|F)Z5-gtWPfStY$Cp0*7 zhs5(_TS4c5D>kqUS~`>*cpUWgrbkN43Wlr&K{ImEc5!;C$k_=e-CP8G02!# z_5*3ZH`-2jM|LlTTfD7V3ch4_BT+%m0!~AEt0ApM&gw@1Kt7;F=a=(NODe9UB__vI zh9VYjOZs$nvw1*9y8};9rX-C2*4?dk9+91KbCOzk5*0^q(x?JjcXgJ&abe$aU@0$X z8W0)%p4GS2Hj(FJ`$eE0qU1COtsiN#!+E^<OFSA|Z=Vs?y7K2RMa8 zzZnk$A>$M1Ixk5b#1;5I6qXTT1F|mX@F^Sdo;XG_e4?%zhc~m}k249=OG%AKJwzOS zf(hdcGv6h3lSl8g$uBi?DgZZd$w4?Bp{pHZFHlMWj}7wl_JayHer-gc+C{Xc17 zx)qS_`HNJ!5OVk6SwJPxOREA8KDBRBxb|XJURcW*iv_>+?x0&W?k;^P0QZ%(?6Y&z zNZ^s(cm$s>K4bo!MrgXC=ui-=XU0fj!7r~h_;e*(?gp;urx-NEd6g5GaznELZ{^MH zgBoy(Q>Xa&p^F*D*4*`Kj7@?#JVYjt@39*E)=*#3vqxg4ak0IE7%CHzUciL+tR5#y zRS2rMx0G%{EF9@1x%%$KMPI+VV#8%J4xeYeIwSa zWF9_;#fv1Vjx+IPy!AT@{1OI;uy%VCS~`#e+~r&_x1ZN@PcnT7jPlO5jJFA4ub)?~nMV7&)6KgXyGF{Yel_Dm*K6VL zb;`wMMNIf@0--#q<72_#_Q$S!e{ikbA(6ZWKbSCFQZG5rDwl=Kgi{i z*vfzLbjPa6I|~^C$tyBt$r%RZ`}NQx5=>b!tzSNjsOD_cUc~_5pXT^yFz}Q;mjFMu zVM2e$wWQ01_y-?iPpBpLuZ0~g-@vVKf3yC7lXatgNZM4td33nc zUU8)V@XhVW|M1Q2|KXeEH0shI&W?hPC{n$dpK*gPeaE^1V|BO}?0R4CKI;5cb!{H* zDGyJ*EEUPVX3{?wmbVp1 z0%hW;Sz7DKoO80nVGh6r$@$^Dw!kO=*#*y63{FISiIeaNr;MdRy+9btTDHhya*YUN zN63uw0&063Qi<7k52+|aa_Ljy4JzpQJ9l`-{h$?UZCz7DsPo8++tqQBXrr?D z_yS?yXiPSr=Js5p%wqrIqQa#;4*Db=&IpPUg9tHIm6EuSlysg@u13o<_Mp-sm1T|U z&Q%o$avr3&Cmf`p?gGhQ^=wiA88%&<4UlLroMf(aQusxnkYNN}GU#L+{!&_JoPx9h z;lnZ{@XU%oM*3?fT4ZdJd2ecJAR8q$T9Fp6XGM%N(QQR6BHnDRMhlkjl%dR4as@8G z_2SWy?Y`MyH;7hbciPEkOa0G_d(DvjSdET)U4uiQ!BW=2Y>8@ptc}0`%-sb8Fzx&8 z6!)dFfDag6C<^perXZ{y5KS^Q3H`Ud@g2Jl8j6YMmmuarE}e}+ZpTd>BLrrOD8%f% zmBj`N%}~vsy0a^fkN3|9zq_l)>uE_x>(|7420$ObyW{ib{xNhJe5<6B`{VTHc;LB) znxPs&(4eP7wx-Q$7&H_Sqk^!Tj3+_QH< zOs1NNm0)(Y2Kr#EF-T_$#C^bgb;qE!RoK(TmPmWX$ON}OF9jJKWx%*GG-I@@?W#Ya z{9;mqC=xF_RWcsjQo7HZlC_pwe(V$K3nR+%`Qc8l;R8{f`&8*%Zqc59*P0=(H z8IT))*Ox!}9T@yeb3)(BV$}nNC$02=z^NT7F$O3!DQ@@H3Xc>xDiRXJ@8bBTJmsd9 z7SVKJRh7{Er11hDlOLzU2`x^E^DMiI$!PFO+1BCN=8QQWr+5%`Amn3czJPf3J)i zB4%vdA_60r2FKLuoXN^bO8NTF9f9Z0f7(VNowX;~BcoewEwDvxdu#zm?SDk$I|I(Z zRf~D8YlUX_SxL~t{U*ShH{IRcF8oWTq*1^~9%(K*rA73nbeANlgbQ=jB;o=z0o=b# zIGQNb3RaUS(#EfTUohJ?M=fqNyygeCKShlim8V{hP840+%hO4H$J5I3P-s5_^C%k2 zYdGJEgS(1LFl^m?D*=d$Xdg@9dUVC-~Ntg zTE~}`QdQv0@%5LvZ3RkD=d-OWRBum^=p3ed_T|7Pr|ZT>-k-jWJ{01iEjxF!Q0? zOYaN#N@*usiQ`^`?~4(kZ!13Zms~Q6Q_E`~FtIKkx4Tc96E>w%{{e=8{|LjcM~1Ff zm2-p6&*R6%U2neE$EnQ`tzLMXYJEZn!9O1ET|UwiserDp*U$B9dw_giJdaW$r)(F> z5nlS!-X$a)YGjCO8*$?sDHYv$pMsq>f`KlFu3ht+ZFJM(gzcQ|t?k$vj&mpT2(EKy zUCc3UuT7+Rq=l?`#WWygI%R4pVwbkZ#^$MDHCEyC%~qa)ukGfbKM_`ufsfh4_-1e? zybm>yGDHq84U2`@)Od6-E}R%ul;Zy`xEe2nD^p5jVf}v&d8ncmf?1y~|LqB*z|7FI zb*dX1`oDwm%1=dUjzS^>%g(qloEh+FP_lKt;GN}FBiRLLSgg-CO%Xa+Ja2ztL)8KH* zoF@TX64EMG=v^~P>UmdHItIaR=byu$0e{@xWNMpBbc4RE&QkQV(_kw>*c4zAv_1yG z?Md$>fIDWlUY^6ONQ=8YeT(Hnyh?P-HYhpZLyRiKuYKpJoIL3|V+SidjK4kri^$c* z=ac#>K%!`|Ol6AuQF%IACm!+dAJTW#tB%y>??X7>Z9ZYW@Rz40uGrCLU?AV6)C&y~ z17(@K_i(Qi;{2%-Rsr%@YAoR*ACYd^Xsa zB>N{_Iio^Zp)rwVa2A3iHNFXrjFP4ww!DM}{;zQ4XI>htO(M zuqL-_H|()6qC?jS34%G}*k7z|R+@b56IUY@AG6N9;lsIe1Qd)UIQLUCz9jPy{l$7A zas_%D$IQcz&&F(#QORr5dLNm5S*=R`7!N;>%rzB>x{?Sl8vJ2~o=reBQd?Ci~iu_$jPxEVS;e`16F1dg#9 zc*Hgy*Wfo#rTdbI$NV1pB^B9_Wl{Efm8F8Zt#_i*#iwsLajxNXH03xW=1M{*FvrS@ zXomLp*Y0`5J=!_ze(SJjq3{7@*oiN}FNL`k-$XTI*LJ{+yb80ZdBbrX#p9l`qL|OJ z-}$Fl_T3Phk8kna= zpsaWsQE9>W%4+ed9t*uecD{#fXnl_qjZ}#A`Ik-a7YltJb7=hj5bRPb~H?0K>RTV$YrX zcKRe;^YC{c(i7%&T`z#z+!>kCeitD|7La2+e*81;2caLm7QRxk4G{bwN5vzVLF{BG}0Hg2uRMZyP%UXqeUV%Q;2 zH<)<-3$q;j#$O9_)p-D@-to8T1hy;fy**m`X1I>-Y0dh5k+bJ`P~Qwq@j92$x`Yo*$#nbEj$-=4R(iHNs+e_m^WI#4bwtj0Y!n&X6a zAwz+dIpg@oM(S72&w!wH?pQH1o3R#d!4m$)JdQY^%>>lz5qh*#% zT$Thi7f3E19jO!t4;nkr;v(C-6ZcfM@e@!4?driILgz)$rY#)P3?0^QZqqguwe;KC z^LTD$Eii#Z4x(J#!0ALZ_g1>=+NAx{Ju1$h*b{3iaKCDbfXnvE zA(YFtT0G(|lg5fuh>Qt!kkkgpJFKr;G^BFGwpav$*YXA^aEm8cI_f|x(At!sdjRo< zG@{V=DJ-G~fh{C7m3~9WWSe$ZON|DJld^)ZqbDAQfTBohxeMP$;W~pxH5S{&>{)=# zN{Jbo4Y}CKBM6csyYfyxSsMadI3iY3LFKkb;qb`cjRfD0>GdomNP zKb!?9MGOFxp6H~Zje~xcRmeQcaj#b8{U{a?xE}T# zdfyF~J5RA=@6K63coc^8g-2*`UC*4jo)p80vkeb+g)>(2D#}zS?nCEDi8mJ{j^dYc z_xkyZ@Zr00JP7oOcxn19w3s8Pw+JTT^wdN&P8gwe_~EyJV?HSe7&5dYkPJ_K&Sr9TumupkAM2Rb)|;M7L{meB`}_BNca zeBio%H=g`_t}aRDqT+~_=(sz~uoy5kShyGfd9c!t+TX;#&O)0H8;~QL6e#|HVv(E<&nR>(o zUijbT5doeCjkX-o)Tu1-)OBZ);oDlQgxt6)2-K1k`5lX%Wsv?~xS2HLsAXn6!4{ut zo{)xSi@#jI0TNVDF8!DJEK@zz^d2pMw3`vu#W*Nfr|D@ofMyaAxHSw`7B$)N{%cqM zen);X9o$yQFNuKf^~EZ_bIVA4bB*lx=cmvv8l7tNAekk|OhRSxj$iyXhtyD-?Q46V zp_g;!5{`Q5%c98PB>gyWTNiq5DtdoACvA;xkJHea-9qOI7aihL9YbqZCjW*31o_d- zJLE4#-JKismQ?h>rPH@xA+3D9;9*I9m_%A7=?u_@C%UTyw6`+)x2?Q%>HguN)V9Ma zn0oe5WtbN^IBGB%!i01*7aC_yj9imlICBFzOs7exQMhq-P0i2i{I>YotbbTh8t&@4 z7^0}zd2DI0HOceIWX99gUClTI41by1x1ncicWAWem#Cv~C5uF{XUA0&+P=n-XI+MK z+UI!ed{p&u48^I1aW$@P`BLd!3lwK;a#Zkivow$L6Mp#VKg)R)z}3qw-DdcWY0MHN zRviV(HCHKG++|uv#v#PhU~;Cdl5!-|88BAXYskJ7fMR^OUK9Lr`I{*TSSxNll66{| z=3mD@71aah?}}ZkU;w=gB!-~CK_*uuF${2I5knH+KYwpL3;u=&8>=X9ExJcMH3`2i zNmI&zWb|#!WvF*KoVHXe_u@5GAgh(=w@rNf=%AlL2f$E3NgsTwFP>{8S75FxDF$+K;rbpp)#?Z(In0pi*UZfSi$!bsf7A!Ug#*ap%=<9SRz)h9W``-;jM}6Vb?Vt~K^EaU}Mc;u+D9?H)6G%du`lh;Nj*WVIQQ zCcigB9fpaQh(H8ngyw7ONJ%)wsKSIZxGs4rz1K{&8P>r)t@Bbkq-9w*u}OL3)JlH# z@y@In$Xu72-Hs42f7i_b;nvgKu@FsU=gD}M_nWRTo9*hnF(8oH9j4+4jwID+>QOFm zmvGX}HmcTk$NrHd3Q_mILbUHdcAo3URe9o61G^Z=Q2-?}l#gpyA-T@u#Aej_$42`v z`^}U}U84B9MUHA>RXWs$q*DS**U6@GS&WKg0b5(p7)uC%NZ*bxz|$gt?RD&y4KBhk zTmp*#ZV~m_6RIn(?+ly_8%_(XKu%v!7Mfr`Gi#iEwRiiC{PumaVwdwgv_6utGogoo zS5<}k^?{Up`5E&_+M%`O_$A20squIp5~EX}2lVg;7+2S1aLjXQ)Z4Hv5J9nb3HrK= zr_WCkj%^X}c`sPPbec1zb^F(T>UQw26T?!0xWOuay|_@L#r20askof75zJfD37>!yw-;Y`%}a%*?Wdb2u0nHn zK$RX+*SwW7+whU-wo>e`pZbayZare8!fC~?@fpP+y3VkNkDSF*cSL(VA~1_RnWW6a z)gpTV+NLR#acQeCp1(O#tyEUQ7`%|7ujFJ3cf0JnZF_1{H5CyYo=%9!>s5V!6IBOG z&N68&A4joFVn3f1v$w8y&fg3_RI2^8Q@!~;UM*dFYifgl)55@^%^`&A4HjYPtsy!J z8qUxu%M8Nm$y6$Vr0C%R;lx7$sPxX%6*y6d-IbJ^l_su zH30z~1(cbY{r`yD6%HEZ;i0DV zSC?wK?L)5hS^I~zRU<|c;NQO=k@i}2B56Eb77ousk>-HMQlQy@#qr4!*<7!mg0(RX zfZ4txTw5|OMN7gESh1Q!_-Sxyp$(Y#xi|M@u_89OdP5S9JUo<+)c=ebNua0}aiNvM zNXM5@x(s4fR)tztSGJs{uZ+B^Yq*8qYTs{ju1dG_lBx_Nq6K{KY%&Y4?9S0oV^*jL zG92P7Tfr&7MIsK#hqL>)3TiupoefI_AeE`!6wkqEA%S`XY9VnkF5d{xhI~yVb;$-g zA$K?~pSeVWSUeC4r{!!TH@X;YgUJ;3od`9q3e2T$pOYFeKBk>HJe=iEdrP{t~5P*+VMa9|it1n=BXecmzBrM@2mAln#h z6!XZw$+FzH!3LYl&AY6i9qPPK*DkeQ)lgY;cBHKn-ff>#WD~Xo-xxL9?&=_oca6nk z=+LIq6auefqC0ebfcBT?E}JaU*C5CkecO=!nYGMHehS9FEdi}SE7qzCL_wCvV083)7UT! zEHtAtN#~87RlA3-_%}QiiOKmhfOvhjTl?ef?*8r4;C=r(QsVJ7QPKg}yy)%#yqrGm z>id6FU%La=K0Tj5c_TtIHW6D0bN=xXPsJdhvfvgc*P8j0L$%QTo4r~GJnV_DbxC&! zZuN92cBG!V$L0Wh#Euo8-L+ZFKL6|W<9>X8Tdr`Sn)f87|50#E)FZOVOR*6|kYF9d zo?{yaXSK}7rXQHj7H<&Qb(R75Wks!Yh!rh8R(=at0Z!tZh75rS30ya~YV(i+!iqJk z(gv`O!wnGW6fPw;_U!IAv#m?d}W-I#4GZ* zVPLCllTC@equ{-*k)kvs;tgIAs=O4wyx`FWK=2=U10I{#t}$RV%jLRb6#W6g9n{(V z%vjRfQXKXTqg8Fz)o9#p$3D3JeS(U{D~VW1c~H8g$~`y}vT#s=Cbcibm;XV9xwA6( z^ZCT#UGE?FGl1(HtMKwkL-PHg5GoO8;m_ZlkuD!o=P5N;*V!T%uVsk4H^6|PgM-`l{vZ46Y=Q!eh}{h& zf@?uRpHBVmh5stpUk|4P?$14iOxZlvN9Ltg)S=f}D(V0yFD`G+r<5%?+InCD`{eRZTWH1;09zIfBo6lExi63Y|orJJPjhch-T zoeIVRDG<~7Ebns1Oq#}?0mp7fDUe_%;dXs4Hd1TtcN%#=A$a$2dDM4GI>KQ36bQa? z4V2}35?hV>>!5~NPZBV7(&YV8JA4U;f-QP=!i zcBUaZ9^~j6|19L_#_Ubet2ruClpH$3&0*jQa zZ@^uuzUH$xY~@*@(%jqp^4Q5sMEOLbv)}*rjtk_N#X3N1!xs~;J5Cn@AAO=Ig${n> z9V}1|*LB65MxMh~ zfIMKuyXprRI*>?T+%fe*9D9zzL%3VCshMS#@xYuWh$cZ#uIi=wsDbq3$C{+DYedHh z%u(gd_1|KeY7qfFKK6vGub{AJ57I(-Chd-N{S%7n7MSh=*em0IFAFpAU}!pnuWNF-ogrp_-wH1uZ6LHKk(J?yG;KGx8 z8<6P9ddl=q;7vp~I~Buzeb-8gzI!$$34(L3z^lnpsWZAb^-C9GINrL3Gc`}ao_1`4XD|5|zY_0B zYg}sCkdl0pd}V`;9rKi^JJqJQ@X4^OLHhUjsWaITz~!4`>u_5d^hj!YSZrV0!rMuG zPY>k2g=PALHSQ|Y`x`gm4i&|lo8`{E&LwJejfo4HNrt72)(!|_`dtHS_j-N2Em+9> zy0GfM-2e|(wo=YNqPDRT6(k<^1yt-XaHz7+;I^xin{4CVw0gn&SYX6KZ?O z|1twk07R&W8AO-XlDB$Pb$<09QIBHtUB0zbg`{fxaBBpL7f5Xrt1yV78`(+K9*r+< z6}E-+;(vlwd;)Iwg915GV{j46eu0k-D6SIq)a^YB>kw>IcV$R+Ba5I$hcUjMmsw7C z$87An_HMRB(vWW}ss@((pn4>#!`h)n5#}``0T!JN85+PZc$vG#fg_DWqS})U+nqUk zu97~#fM2z#L`LseODXa2N{`XtKlGktrD%Vmy?sqb1qf#i{?}-@gP}9ZBEk9(5_vc_$1^i+bc4z)yf z0N;9VQnoA4jP0{Kt#CP6G#K0w2C+=mArPSZ$?}mYB$kLO68l+X{PiG#V;EeT&8tvK z4I&+7R!eV!(IJq7a(s-W?NLtTO4&zQzHSK}MVFCnYnP{%#xLnJBx<7c@zQ~LxE z(LlI=Tu}ya)PO@h-5;SPhVOIDPPeold)hmk>VuK{I+|`HtnJy5z@V_KY*IlbT^mU< z&$sW)jle)8Rf0w*JlqP4c+7O>xjO^t#pVx2yL;xqsadndboDx#s^-OM^FNICj@>xj zlauy(^Fq*>#(a14R{@nz>(5eV#?pTczX%2nk1znN-EezTzV2BDe{k&wh+yUcSpBDw zx^y@0p+6jL0J~ma16P;A4@Y~!NafEv`tdmxtGT_c_vtI{$8&+Kh%Lf}(tVeLsCm6* z;sCx3cwjQ_e)^KS^15jy3ZsFpY1v}@FUnoLa&%1om@=_>hKggSciiDf7{L(pYW zrtZze<~{a(V*YuA_(~z82`@e3j{ZTgZ?JD{pb6u@=IaC{;&TMw9HWlJ$c#Zit|6`- z6X!AvJG8Y4GrBxCs`^ET{SdJ!Q{MIQ065cpLr3wN4pbE~(KJ6EG;e^SL*0{*ACd<} zhYA0&N3$RtsX)BUoi%6@h1k!CGYl0*T4VNUK`2A0o{WIoM*FPIa8PoMaw~x9fR#f@ zP&I`Bl_GHKa?dErG3ehg5d4hMccCK;!bWh+O~DSaH@X=7ztkHxqvo2Jq9Eh12?#52DVs&xb-Y{I2-XR|NA$`-{k<65UA8}sj!1h^I;Tz zbaYl;*=;%vXfmP7$nk(4c~p4f;m82yKXP%FLF8rjRf}NQ%NS$Pe8FKf0O4!=)Wg=n zfPRMz5dw*TQC|gzTDDB8Lz#kyP*E`BvU1PBhdVlqR4Patll@nD3pKVzqu0V#EL$;yk?sG-RxBlN5IHJzQ|=%)0L6Y>p;aEfrRk+; zuW_v+HM?oW*|(VLOfTXNN0Qs;#ZHod_ie`NQ(m~0A?otEyigUM@S(7xR=A$tc2sJ};` zCZZSH5PVHgc}g`DaD%~$!LVQH*1(=NcpQ~NhyLmch$4)=tvLm}yDDgP5031g36vG_ z3vtA}$pjz=mEn+t{{w@%fLoa2l7vbjTNHTSTdyaPBI1D+X5ED*H0B_s7WDfQwua&M zG$Le7%9P#3Jjr#HQtY>qrfXaa1oUH9E_6t^nD(-FtX3!on5D7Pd6A4HS1L{J#Mx|c zgyk1vrBm*@L&IQeIBH|d?{|>ogf?YJEdU4V!@ZSW+HLf6YS zjJBqxp2``$7@0;bphz?D3|dJFXsM#*ed)tul!9&YU;xg+OZ`_`MYTQJE&qTR?;Q4 zl`9R+Y)7HPmIPyLldsEjcBLowt3Pi(?s$Mg*f67700*k6wTs>9lRlVa@6Y<+|~n;YGhvM@f#$=dy&iS!$)K2D|cT zYhlgXpgbn-7)#I}#Dj`d!y{iLWj%~GpMV`$Zn)MCc%zDFwo=nZo=c7N7 zkfg&CfyOh|a$nJH*T+*9ec=LASKu;wNwn`R=6g+ns>M8$GZe6zz|1t?{^bfc`-d3V zA~Wco2uibeyC>;bG{IIiWe5h{MwZ0eprg1Z zh;dZ8lWLKx?LNdjrd=<5L55~B`-lf%mvwj2b?WizYF;+B4>*b!0a1CYTU*^v+GW#9 zDk&qpTD2h!6Q+{R;==;1S(O@qYCdia zck$XHEjyDP9f}vOGUs4vHtOOcETN$Z{5v%`Id4~3B#1UNd0fXM@<=7f%-yq5Zf%@x zYKpGvL5y_e%KdF`)jC=p#{0XT_@&*D&B z9%*i`rWCtu?~g2EkRSf4GV?xxcbS)4k# z45vCDkueyZvjl_M@xH>$!*(3P#J^I`KoT2QiDTnMA;JD}7V{J%=qSW$S>tfVOyB^k z;Z7p_LicOi3t8Sr@-Nbki*TVFDd!`h{wpW{OfTdEYOfVUmuS?11C36h4Q* zaH6^*-?ma!esvURs!gyAJBa_ zPiDvFJX*;_i8sShISuqdGh7nHW-ZZ*Kn%K#m&=5z9|8n#v;` zco9eFK;(3_q5Dc)*T5Smhj6g*+A?LoH)6IvpEjeYP?XPyubE3cgL^7jDz5TY&`fsC zImRF5S&ZvDYUReBi+dgM(nC3=G<#u&+Yl3_R9l9gk6GtxU0*Wqo>-c$_I3;Ex0$BM z{y4Wr_gS6e!OaD+JfZdv(#63RXf#7tezOifOi*Y9)XK1w?s|QHa=`FDlE7c>cMlxT z@9h2Ks7p1amS#qy(X@K1yY36_u3tcbkz2g0p%skOx+1wzkp}0Q6t8B> zk}O;PL|De|S&_ULY5Da7%&x~2&b*~^YHsbsZlD_4?lWTTJ-?@+NT zG&rEwI$L@x;${}w99@yEbGPWir~rZ>n_nX=ixRYGi7##D%-~Q_>%O&+8#E^q4iB>A z>W8pt2xl2hpR!N_xLE7%>XwiSqp%31$;il?if$t$%hb!sRr=(^Q8n|LlV*C1LJn(; zr&{I9;48qM$XMkuCyTFxvyrY!)a%BtVycA>n#uFH+RIFoMi(bGG7-*-m3>jdN7aj% zHvwhi^Hnq#rr>)>WTOWg{$qOFck!f^V|go!GDodlRGm#qx+D7EEV?C*7GKE)jUMKx zbyv*H(G0J~bajTC%qZ33zp)z(T2iIWdn;6ob=Gj{)vHX+Mb6Xmc8EMmG9=(7+RWyo z_>pwdrriTvc8rokdXl)L@IeLB4iI~Z9bEx9XB z%3hMPXX=pPV)mS7bOKRdcwBDWo$K&+$(9HSboM?kCf&{2RHO z;&Oj_{X9``{-e(WZ)xR4#Bp|KlAiW-W=Fa5KHBKusrw-sB0FJD|3b}ZSR#GHw;v;Eauct+D;FU6F44ULxSAmS=Q>(6VwyCfg33wRE z{K?hllclJigwf1p6^Y>I+wI1d2l~kb&~=GPN%M<0)BPnqJqC~6m{q|{jK_|xMA0w0o;VulbcUy z?X9|6sh$7yC(L?D3JJ+pPy0w>(Za+L%lygxJB!lEMNQN8!B@I`E312CV^fIVC*7Lr z^_$>E4zUo(8`R^y_QgqY`&3UfVV1ep~{`7c1q78UNw%pRHO$hq; z#~1N7QOW$!GqrC*ufngwX42Ke{4|f!jGSa+9~nibkh@F5)iE*Kv65*77yF+EA@=`j z1u&8*k;J$HtX@WUy~qA@5dY~wMEHL;K175_G+YW+Nu$VKT!xUNG}{WPiTtK$yF4*$ zUbFwWeb0mScq^#?Wz^ELied=F=&@_#Wv9SNwSyp&-sCko)L9;+E zj5(0HqV7UPkO!-kc->NBqJe9;%~~U|-Es4lO4o}n1w?a*yRFHF3YT7{Igv4hG$8Z- zvB6Hdm|x?Ns)5IjR!p|6;>ZkcU`V?d=HXq66G*Q%gAK2Lk+-LA*yDE+nTHbUj5h`a ztRJ%lSTBDc2t1wrv&}#-KYNHkx(zG!?8@13ir9(JCqs|9mLj6O`K$|ZDxZk_)07!Y z!kh@-EPcDck?QuBhu{p#w4LsSQQpSdxt@g=RG_*oRbZsbFxG8j4fMbaV4sNrk6_I^ z?i!c9z-&I1y1aBbHp@W7Vy3*M>3jk7^Dsb%e$*b*_2}5k7G{!`F0P>3j9-0CWq6QQ zhKV|y;ZNQAgUmXYjkAV&>5iqgvM(7Jzbru7*n9JNQZi!S|L&D`LDDz4w2GdULa}OP zau**dfu#jmQ9;UL>xcFlVvv19m7SZCV4Tui{T17ZGJ)r%2cZ~@H4l6FWrjIuO>R~; zu?rS`_GAM)%-zMOD)AfvgMq*h8vW@Y%I?7+`63Z-?QlE(k0_S8ZPj|%BYFreM_#YI(YNwl^G$+wCPFfVIsAv%YRTNL3Kk+mQ zY25k77*n5K5NrAhmmTp}ISwcR&H4C2XE&>>mL<|OUAY@><~!7A zNFTE1@ZNH;LohhSN_(w{6AzXbUxq*f+zlc1sPdeCWJ~t!4W zn5q9UNtae0$?NP0n9LqlkG1cg13uz6&}?}=2%vLL7uoBEClRfo#)lNsW>eyD8(NA< zw`y}}UFyL@t#fTM#Ey**V^r%}@ny7^*jco5AxwNHxG_^lF~RVSNj@!-9h+xU^X)AB z7qteE;BXWfo{3ZU=r#q7e&czaqj_kuNm`7^!2r5ZWi;yL*p&HX6WuhR51>fay$aH@ zop!1?Ocj#}k`KUh`hFW#0&_5HXz5_%=Ib6UMw&AD`Ninw0A`isXmajzL`DU!R(gp+ z(`X-ot>{}#4iJfrRHYEb{YlF23o*Lx#_NuYI-9yOQY!=w9ZG><`vSVauVUw_#9B!n z@Jh8cIjin<=IzZI8tm}RRF-B~-Giv)kSgE&0Ar)Ba-w~FHPsru^ZFXL8kUGxM;dqQ zXHg~PubPY3YFlm3>-gjl6$yKP9J+n?by2Y-<&(JukZ#sESPcDfHzCezOf2UbCupVT-}lrzOgr`U#aOy{ZXqa-+(hx_RWEX z;3&++jwR%DTEh-}F%~;q4NoCid&se+Ye*CGy^@F%_$H7D?ABaAl*$6i5)_e8$(D6T z&l*p`wHmtf2C4%pU0IFFQ$O2MyvA8oRvqr2t=3w91C*6Ld%K6f)!&1|AC2~=b>0T= z$?V>0wMFRh?cOqzKj$xTImvHJm1{badI|?V5OTXW zOCJ;#7$QIl+8)ju^8jc>Vp#=cnmD~HxxQzwNrN!}EysxkCtv8)tzvPG$@fI~qpV3y zBW>3|+U(uhdp%nG&Nn%|E`zgEW>#AV@#X{7FN$Jvsby`3M@^n|F1GBuXSsbtlG#1_ z0zq=Nw87q+PGozp!sk6-JhfpIYpAqOFjFwGKkz9Fofv3eq#_b*0UnX{8m)hB$3EVJ}>ir#Wx{GPBo8BMO9|pTU@qu zem>c0JzA+Oo z%YNJ~9o#)a1PIZjAou6pzh(>QlVLYMoBX!=X&b@FezDZlbV@f-#Dmb!EvLobvwqVT zJ5Jiy#x0F5#z0miWP!muQ%!(Xfc~Lzpk*3URgf7f-4syU8}3bRdKv|zIN>XrXf5PH z2Ucy+E+@Jf`?L2lnPXui8wuOkMGEV(3qKW!_&I#f-6CSzIzN@?;na8Z>7BfGLed*W z{E>2mJDS|?-w#J#1D@Sl_xg44L#Ay)VIc=cIdsG$W7Y07H0i%VBxO;jO14dsXA@0Iv7(Zk_ILm;8K?)oT8nNN*DMtw`o zuBm^{FyytcJ--wq`6V-S{VLK0#}VCTc5n^Pw7@MN&)DG70B!;XqfS_sal{z&n^!y@ zx&{ehl7C|w=@bu45fd^5Ew+8`Syr)7#=k0$i1FD@kumz7r|LkDFjp{VZtn8BA^f56>7aY9^nsdkyPU)uR z50NF}R^kSOV4|3g1o;0|$e}EHW9|lBPV! z))alZ`Q~Y-RVTNl0@H{`Vw1%%F-vq@)^c02i~!Dp=0Sj70-j$OSR8}cfAxg9gx4~f z0YjN5&a;{j7e>@ZZm<{K8+oN|9#LBx(B0q3UxOSNv;#Z{Wn5M1=$Rg#&HtoO<=sb7X>#L*$@{ z8P~v>Gi=BjJ>MJOr{MGDj__=qR(5%b(TjKI9DS$0xLHJcq`ym^``<{@4ic)Wq*xPY zq2Zvsr!Rh==H#fdT|LltJcYJ|_)jbjlrSTK;8AVOS1uiw>tEtw;L9(B^EQu1xE9ip z_>Bc4uuXi)qg4v`Sd2!l8v2 zw%fLpVn2HH{mq(JcJAI^CQ7XX?I|vWkNx>!)o0PKxD1 z0V9Rj=vn-rDX7k`XN31vggWTg)gOg6=`B;{)X*>>*w|T9z-%G0z}QnrU62?-Ix%~k z=)PBmd7V1KgV)p?eS&t;aOh?@t1>X2sn$kI4oxFrHLIs-cRgF=RC1J56Y=LKgxZL# z%}XwEjJ~ekL+sJmXwlsr&!-QEzgHrq=wzvq<}OUdd888OrHk;{rt&vJk1x(sQX_PH zKW7HW47X~s_k!pJUaeDRQm$A*d$*O^4qQ1YN?ZFC{CxWdFd@L_Ln7>_44=#}od;N@ z>q^=jHF?i~g&=fXk=>3B5{K@tuIG!8-cz7BxjA-!oU{hOaI3RxU=D)+ldM0ii1)=x zs)~XcHea^?RpV}93giH6;){f}`;QFJa|q=e@yD#!Q}H|mzr&r81vcn9u3Qx=#?9%P zqjG8m^FKP|MT6I5(r>#Qv^8iWD&4Yra&M38*UKkTAf3c?C4 zZE)A_c-oLwbrn$_SP<3$*Op2^7fWE8iIQ<=+Tnwbpz8bFMi4x|US;#+8h!KC@1q}= zEbirsMScs3OodAXa8BYn>)OzWNX_(U%k6P)Vd1rx5X;^|PFp0ALKB)3FplP=#87hg zDD(<(&?~8^!K%a5#ECzIiNCW!)EGStS}y;91`&-1P>xr57W7^>#<4@Ksfzgm2AQ!@hIOUh>8s%N&Qo2PsnqKM85} zi)A@-6{Xs#MK%gTXQvnz&nW~K7dZTYd5X<2gEonotM{qr9|Y?r5QizvBm^aj>qa{z zcg|?BXVAC7B7rC=A#GDp4XEM^$L+g`yI_P4jny5udsg7cY9*bfU`=*yIE-FxLv>T@ zmc9Cg+5~wglc6mpv;|%?(yZM*#YeB%_>Rytw$Xex1OKW%Xf18v)>Rhm=(07*-3I;Q z53!0Ook~Qf*qkw^ZRI)urp2c{@g7NIph8zleN$*lJ_WIzXm&gO`Id_ShiWYSeQCgt zS->XaTdB3+9{jmP^V&oaA31nY*>S^5tS4=Z2jnnf>#p@47Bjpacq?TNVWUC7Dir|g zJD3U_g^_ZSF6p0<0AWUwnSZ_8%H^rdzbP$I?RTdvl>E-3=^vWHJUul<#4!`n3cSoP$xL!vJ`fb zLJalii__R1cuBGG%T!DeYlhGf^}8vft)`zI2|AaXcWpv9-gLT}*+*_!N{W`DnCPNX zRlS2ig+^?RT@lrh-bN&BI0-^@JibVmeOE#!EFO@l@|JOcm{F~pYoF6cDh?43YO8fo zSPBHxrD&f+>KPMo!~!y(n#Emm^C+*(^6aFtg4WY)4l3k)wyp;AtvI=_JC#Ibvb!8C zDWMHS-<~;2BZbw6iIzW|FPl<|UZMiEXTBdf=GO6}+jErR=xZ);Nk59;ix^Zo@T+Y_ zj0A*@7t(T%ER?!8c{JokGGOzPHv=h5j13@q5gI|95r+Gv)^$Xd4Zh!NhqQId1?#y^ zN~;?CPB~2r!PZaztJkD?W@W8jXYrxVyXuozoc<|cPkU#+a9Def1YWj;JBCk=-=J{NxN=NV=67 zoiHbMEwj3=+b@ZA2j-hkk2Tv81#5FPXo8@jIb6Y@}vcNZO( zsn|z78LrTiBtakoe9u_c=O_6_x$p7td-s62E0CI7OH^PQvz<2umMBfKS%n6MpWC+ zY0Q>Ph$5U6G2w*FM;MUO58rE&Ba_YxCprI2k>7C4>L<2&vx|9k+z11l@6-+-vri4* z!Xj;1g1LjmeV0L}%%3M6lCrd!^aP+?f<9BRhmn_YZ*tgB;$}KqBzHHTz1^1--j?BK>xLD9yw=B<5 z#W}FnM`@(;{4cQJh*#^!WywLI1<$5>i}8vlC)cx85-tHYG-RowVuPtC3cIA-wD)kj zg5JvBg2ms&VqR>V!ZXFP+Ri?yl%_>W`J{KYNI$TTw)Q&S^!#+W=qz4bs+ z4dn>KRpR}uA0E$eE?K7`H8db`#WoTnW8@+}4)5cxcFJDi!8T@OA{*SC`RgCYr63GLD3|F#nI}4axh^so(rQkF#zRiE@$LOmo^=~eAhby{ShAalc=wb8QiJMy z9gq}?>Un#{AQex8D-}1c=**>ntUOBwJ}h;M(JP(4y|fXTnW>vkhXx4aLKFG2JKe11 zujgY1k&J&pe1*$t69P!^Gew$ZqFSwSR7_sArCY~#q%;`#Gz+hbA zihX`LMv4=Wx|U+R=pz`P#>rDi@85#6d(7!p25uR)J{dPYS}9FSsnpr!(6s1U-nGvR z9t^$Or;!s$T9Zmqlt54bE-ci|h!|O^B9PTAT~b{%Sysl-l{`4^f%(GBX_r>+TY>Ds zRwYbXfxkrLtLKmO&rI;Pj4+*8H+ zyi;kmKIV8OYnc*?BO)T7uoeRgWtq$Cyz@jOS#=e#smPeU9gEM8w>d+-Z6 zMF%RfrR7iTRnW}nvyQ0<_1b(^A`SwbMU*m3R5PWsr$3r}Jam(8NOuXP-4=l5;;YKf zLgqzG-2bi1O$i;sM}lHwH7;!m%>;HhXBsWo#OuwnLZ`=5AJ`ow_EbrRd0lBXc8G4LW{R9`rsOz8Oxy8i zwZW&b;v4CyAmQNO@k~(Vo5?mj$}`QH6yF?9BxR5@;}szE|GFkplVnTS6HAxg5;iqsuF2FU- zpEbud-DPFBH^p|+U-}2gc92*#UmsZ zkv)}^1;y&xZwA!8ntY>rHCe5cz8Y6(Vlr1F_Ww8%pQ6m;jFqh~x?fafYHnuENM8*% zRz0;Fa83Ga4+tp&J26)+QY`N#b>)#6(>{d_4y^gjoH!L`w$OO-R$jHvnZ9IIZ{HdK zrShe*R4K#QOd$Z{ZU3*##?0PsFX=fq-+O6Y8kBA?wv=#7{VP?;g8ec-!;(`12Uq#f zM}Y(IcV$t{sL~p+yzircE6Mzt&RhR&cB;XWt3>PbW5u4^$MdTa;N$S_-$2aO#jT-l z_v_KrNyTf6&}R3$VBc-wN{LX`hxg0Ns~w4h;@018Pm=D?V^fp!nq=w1Coi)k$$>`! zQ_!E3owWv_7oH-h6XZ&wxD~Y3^?JR>C;##M!K}Kk4I=4&+J*ka&ZT2Y|4C>Sl%KUs zh!0IHd$z3{pZaTIARG=}gkz}Eq2Vq}%!^RbfR6B>y4c6hno9HjVFj#!CSUPRm_nf3 zY06)xlG9gFW=3lIDA74+p=X|l$jB=k2%1>|Utl<2>jR$F>H1}Z-)1g?Z4@G3KzXV_9-Q@sFPv-{-g$#t%V(G)vsID{Nb#zS3A`z$6?%=3Cg%9snq3q@_ zj6P>GqRNe0x|zHM{`ng?6||g(gKP>iBL(ngCDh5166_GY!0N`7;eRKVAeo zeM=Qse4j=xrcP|_-XAXC`F{6@h&3HiR(}9^VJSabj_y5~rbksK;=tKD0y1N$oxH0Z0Wzf{NM8BvZ6b3W zE?tWz0`<&P-;f$-em{*Cyd22_*Im$CtiY2B zyr%nOImft?j%kY*9inoTG=F5?pzbJ6PC;VxO-xq+wGWL#fpU)AMG|0ce8WRYJy;BZ z#FmJ|_7fi|sNuSB`}D3JcFk)s6}IZ+NkyXSeLf#8l?(B>7nCnyxM16;!)i-a;Eo9; zlRr>K#To35wYCork>n%^@hem>8(Pi80GBl`NUEdBjwiw(Q-l+rXdA`!^kP@ay#K_K zJ0Gl59|3uimot$WhH&Z)*ZPo>FiOqyz*UO`?OCG~ibpGOz`Cv^Uu&KXCmU^ARG@gC zEaBW}xYuCh2;`?z!409qsu*HJ=oQF^jxI-wZbwpfQZyA2i)A|o>?PB@;X|@%p=1LWeH|0R!r-Xj6xMjS6Ff*O)HOg zx-7S6#V>Yc?qD9rV{6CsdD6G2vG+eq0pW){zZ)`Vf^TuX;2}-R)}Yo<5str%!~G~T zVZjlX2Dzo<`-Vh3rV#`rrKMn}hiOL_lM6nw{kCut5G%#KW1E_T-L>BF1pLk-r4OkD zvke_cJHOxI?N_;658t-J?cbRZZdk6y)fAYP8e%P}X1?Z?O1eMQ#tiAzZ!rj{UapRb zu`Xvee4*7hkz1Nm4qQ`BlY-cp{dYzv$x{@=`L&A?nX3D_2P&z$hK{(4c7u*no zc92`z@ZwDa=|x+d2L7fj1@0{_ecj&F#w@Dm(Rt+hwt+kB&Zaq^Gnr6 za{Y1J%IH92!@dTBhQciwOdv$L(mgJ3MB;Wo!lh)AaA_QY8m|<8bWRx$Hk&^Nx?d-a zl*0Qb6LP3?!}!%_i0PE6gXeko#T|Swl(*h<&+3NXjm_!HoYJ=zk9X|NQH{e8wYAai6!o(jHQPgYw~G3w?CpHMaQU2a1e&bDKW0X%uJekgZtq(kfM;to#w z6B3ceAW>WG1XMV~x6)qUvw^jpNV66PtpKsae7726U}@~ZWdg7=9`B6go;RNGb+7te zr6z%z?_D>>3np{#-4%TrqpOG5D*AE7dWV1P)mBXlR0>jdAxshk%r8Zs`Z;&@2tpr? zUA}Y}tUY|&h+c{?#Kq2cAwd7F-|1D0j9Vx$T5Y<}(<(nzoq>NkmpoB)q3Ytcj#y8_~_-)Ft6ji=?K!fLnC~vlzt=*yxmeb z6JmY^A5%@a;e)~eXJ<=sIv~V=AZ6o8abozIoqmubBc%+bKqr7F_O|GzLSIAEkF~Oz z|MA0jZt#3(g=i*?)uoy67355lbr=T8d+he#piGq~4ffcv;l%#;nvm?Q06+@bH7)?0 zlQYFw4}k$RR&F+ew%JoNT67_yIh+Uq07q)Hug$A#tYz}b+c6H35L$p31zkD+(=;D5 zXuS&D&>&q@xxbv^#&b5443DfXqwMQR9<*1@Zd{R(_!%X$gz5TPU8MO^=yfVc%`uNF zY6E0ikl97Be-TDEY<+seW+Xq9g)m%X!@)J0_t67^fijGQn+xl2NCe6>YnN0dRdJXN z3Mr#%Wn|}hcl`^&dzzlBsEF+4=M%ymY9!dJHf%Z4aB|G#unoQ{rIrNS#-x|4Vi)7> z8r#5^!60e4G{&vEi7 z6UqttInbON+D2AM{NvE1nhshc?};#Dzivyn6mH1D#`+IMt!5nDEc7U;FdTn))=V%t z2cENGtoZkg8D8~Edxzm)HX58i3ztv#NvN7sT;k)s*4$9j+wJ)LqT5f@;c#6YH*Dj) zu&B6TYg<;c?aLnP1U42(RpVLNPSgyh=2^2qjI|XzuA+`{l1vzm71oV((et_iu8L-V zg#ES0qN%}xm3-9|>J;eBzLCiv0ujMB+7K_$CaHh5h9>@{0bMGV8qWi4$_O@(p$YKU z<67PS6^+S7w*6Y~Y%I$YEr=6zRd23xWG7Y=$%v&v&rlr}yaqi+QJ0g_&+__IE2hJO zeo-0b1rrE_0-n;v(*W6k&GRC^nl^jDlWwEELZ`Vxn5>lp>v(ts^RYQO+8W^>>M7y; zE`d&u8{o^~)~AgY)5{q8UarGzE>@5j^A!$!c9nnBJ7@MZ60 z!qMEymc~-Y#$(E4MZK9%K(N^c{ z^*dkZ+rmOdiO3M=f~E%VhIC*Wcj#9No8ZhrgW zxAyo6DG5`ap8}}xq^z*av{;}0MGyXSfqj0StZzShT>^e@8ZrJR39}H#4%z+=!l%ru zyim+1yIro%XS0I$FqJ^^sYnz6p{Eh10T$C8nc++I0uZU@vd5-xU zGe8PKN^)xaWdhYKR#AiCJQPX~G$uVqf)hM}Wq1769zMPbflm8wN z7}EVZI=r)!l|C0A2wf1bS5ga@h}Ab?OUiIW<*RH%%g z4@0V)H_#SGkvMV$v2NpJd$dd@4L>SR#g&TO@#E-5K_Yn0(T+XBOM7SXcFRH7Kao|! z40!2#)-H+k$8*T|_H7uku7Jb9(@d+a$qx65UKX}7C2EBYtE#n@nYe9vRZW)gMEU&8 zhy?+u5|(O9krhS?WSl%8QX`oyn#`VUcpD90{qBwM5#iLxz4lI(_3_fuQ!>1PW%nJ> z^?ZFhQ}a2Kkd7Z&5JQBL-{N2L98I%n!%WSW4G3y_=~3$T_PX_z-7ezEnY~C#`R)H)t)SldpYqSU!dP~QcU zTcYKdk2xUROQ^cuIp8w1^yNdA6Y zxB6Ibq=0aCww6;z9Kivs}wW0K@=sHeJx5wR30SmFu z&GGLMZO6#_;s3hUZYPnUvnB+p-}4e{`Q9pZrS1Q{!H^g>iVnZoP3(}^3VplgTvJ4q zhFz73EtX!zs;CV@8B<}i2WWNI_;)A^akt0QZr!<3^7~l5kj?{*O}`>a3?Upj4H?8l4~iqxwX}4-57ll z{s5H`Bc0}d!w%{EzMEn%Cg%4IOfd*;q2>FCJ$oX-le0t*w*nUUoaUmx86te(|S&g@%4v*_&ZpX4();I{t z;SJ0oBS-W$oRvHq?MM@VKdd~&w0YoaQKshV%QAzW z&?QP&!Nc2g%vyk?FEvoJ0hRvw8Y}Lzg@-^Mw^4omp9F;3WtkQ7;NL~tE`ytnr$)#j zCtPKgy&R@VcJJWESFbPH9a1P_WGUSZBD4CgXQMP5NG9VHit`5@F5p9aBBOnbqL)>L z88UJ5Km<1>3RxH_gT-wZX+1*A0UG=SEOax#SgP+J?>3C-oe{9UpsrbM5gFYx-<{Pu zh^yphg7#oZW!#kqLck3i;)n|1hRX$K0M6{jNoas)AW!KAhLa@lc1+R1ui(ZKZu}W7 z3{EDIYs~_SDM+Xy^9f~S7E=HJ!$3^2jX;C@TBK%A+3_U6NXg29o&$q#am|E!3!rOcMXd}VtRF%ZExQ|1^U z=s{C@TQP(!NWMK^YT@=Ijp#Be=thvED6LGh;F9N|jUgn2N6NTJm+)J7(x0!s`{zJY zn5iia=ME0Uj9(LEJ!Etdi5^Mx_v)%cpA;HoB^LQ}k-PDbTLc**8B?23NHb*%zJyfuY~{%;%=lyA9OG$5$Y=tI?_V%`$DZiQXe0gBZNTjfqBCZN@B95-cq zO1i8cb3vZvdurMd8=}jU>_56x(al54w=V_^vD?k#5zbg`RX~+$HtPCLM~k?QcA&yS z>W0+jzp83(1ovQ$cfpxuQ>QT^?a7A`QVO~_h=K9!9kqQj=6$S`Wz4wSHWvsXc`}xG z#YmEYJe!TCy?YByQE9vlYh}~%?X6O!(xj!KTA%`Ji4jouAG1I;(lAO0Llu90Zw7ozr*X2fgBXW zp6ZXC)9Z`-j@P^N#zSNwAZTuKHi9vphH*@tU6b>vTYe_HXkfzSY44(9!{v$k{ql0} z(cRZ)>C9EdK$e$5sF6_{hb1GgIb6vN}B&5z~EC) zAyu4_0lkwqxQ>46P<>F-~Ihr1bY^ zB4qW45NNLbLAKbE04>={3IwhW;nQn+-|6$Ss1*+%MdOLr*3jDESvX+=e~8jGLLp_i zx`{(v4A?n~4?u>FSpb@O&clnpkHcHBeCNVUr=>z22&p!^v}~F3JFD8_&EF~4VS2O^ zYiO~@KQcDIvh&onED4BOv@2?x@%)gF96hlT(d0kIPl>t%1Mw>*0+lrvF|gCtWFMxq z1#cI*PMVtP!LhcA2i!rgeCYx%wgP%WPPaEBBwKIrG>aUiSs?xfXFg7s@m>eu(%XMHPyHO|WD>In3A z53yXLe_=f-_M`qM5DPpN364hNJuDxH=Fu#NDiXQRl~k_4EGH{k&ZVVArgvGKRS}ay zBI5W8MDhYfVSYK8l5+d@ zbLwN*krzN;_cdx}iL1JXqsX~9?1937fyNQ{YqU&lFCuFa%tNJ|KU%8E2M7@{zcjD7 z6BXZXrP52(w2C6?!sk7aJ0}s%b#TK8p*t_oLa>|^e&zx1)+kI!V zTE~Dy9#^T$Sl|FIj?Yg(fu_-rjYDf?ugSQTTr&ca2^DuJgOC#HoUpmaX6zXAk0&cK zrEhcHL<3u!gF4ZsE>l`phwSw!x8)O$EGnyp*F2L7R+_SY1)I`DDl`*V9{m!@RbJ%u zhvs{>yTdiS@U)KL6d4}VIR9}pQ0-MOr+;?6zt12d+f3*|W~e~f2NG1YI!+B{HX{Ns zc*2UdEbD7{zd|B!*F*8o7*>CG6UGeimx6nUhq>WjG9DV`TyD;HL+rx&@QaBYTREY_P019$Fm;Bcj^$S+6~oz5Nb)++jNQPIIH^i6JS%IEdM2WJKt=&-t`J|52|CWL#{#Q12m_ROcgadx1cOd!{8!pL^petS3OszXF(*_l}+vl z6hQk}qOb;a8Lu9nyRo)kF*z{NENI_7L5^_(nqwXXGGNSbIxY<7R#mjDV?-Kko8#=% zhWsUCeeOhy>-=FkMvNLxv6+wU&b{IX4_Edl+2l6^9w04bLCL(t5Ee7Z3%c@W#a}!^ zl9ui@z%Qw&+;V!FjoSWy&C@LfC$GG+c0YqF$oTz~c&l|t?%VfdctkFEr0!xqs!PC4P=2-U3PFQ1=)RRt zUpFxe{D0X%rE8%Hf8hUV!zXLKID2@Qdw8@j0r1^;-p&Vms-S>!5fx>^ zM98H8T~{EY&HtLf&3}d%e=2AW?*H3T16lqXrYd>+A8?n}t$0Z4q`%=qWEhmuzLzzPL|UC&6LvIk>_HNq z6F;aSSZD0aR!iN_UUH2x;HUjX&>!cXa##X!{`vl^JF`R?%*9Ofq7=`rc!@dl#e0%_ zs=A_F6dUj4K2?fFmVO7X>qgz8`uT z{M$&&OFy(3I0)>7TRCs``@3Xe<3qDvrR=F4@#7qLaLfDH9-|$dH4c{L;`_BWz?hE3B zsrHblngb6&w9BHy7|ILKV*D6_LIb3^@O@iaMbNV1>) zpEu4+r@+=I#i@yD_9B*Qk1I-_v8-5x=OXz}d#()GA&RvKgvyJE)nk)NFQ_0yxoPsH`P)6(H3Pklu-{7 z$evkStwAN5j5Fo6A?KquwY|;#c10XNh{T@SwQB+$E>UVy<6V}Bn&|E!k!RnbPQ)!Y zZ)Wt*Q_$R${dK2V7YRAcM+H=e!&fz^<`5u7syy`TQY%e7Gh;ejcLl65+BIkdW5djw zb>&;AHDR#Anhx)DubPT8+|;qFff3c)-<-)_0zpdQ#-<=tZjGAU4k6yj%fC|*%P;9` z?*F)v0|I#1qHICPv;KcHy!%adv}-fSskwepNfOfDPI;J{L$7C_)wWZ}m{weTT%Y`X zoUtK3nK9+cx}_U0^37O|K}kgs;3~D+pYdAK47~(@DZ<3EOxlD&x1yecj7#M&bl|5v zf(P-mTl2=EMuSU}r%AB*t*A4G+YhOBxcpqc4dY5VvFng`$6kj?rr6WKT5rMM%&e)3 zq)SPeMs+%{nZ0D`L)I-Td$?Di(M|h%eSOHIdL~I0-dHU1$rMFkcv4YicTS402~2f6 zM`*~3))UY6?IS2LELuHA)cUxNZ~5!xzYQ`mGhLWASsH36&hq*Jv!}P=X79Zn}Tg3X#j$JM^x%%$Dj6_WD!oB1a)jJVFQlRp0I@eb>cp22fEB3Ee+eX(Da2- zPPiWMgI@$}v=BT@pH)^~Ja`7s?mSVj%HW;u@NHe~Dr|X#9EL6DYJ3!T(zXE%`YY%k z);592EUwZ5;tA(qr?HgI6kW^$5Cd`~ zfz7ZYtY$xdYwaClxmh{~+;66GWw;uNH!vQSzv`pR_}!2Lh!3ajE9&G7M72730WrRz znd$$-2-gqkAjFTV;7a&_5lMKff=~I!2ZavK{yhb(5{@C|x&<2Pf5e@J^k!lpk?)5|t@N8uI zo%5VgFW*F86c5|O5m&2LRm{6y$o-{vCo^wAQ&g6qSYDJj(V9J(>_mYEr!cRC*ao)N zCt~y1K(x}R6fJ025)292%X9u<4xhwURiiQ(O+I8B6)A&{k^wI}HRI>@S8#O@^8~{%?+==j6N{zOxUH9Xl1ZJK*qr{ISR3n=HobtcqT8iIkWQV>^ucq1l7?#=nA1Elgj%sB*s$V zxP)QxA%(xz{LXRgC7O|p^b;OH+Nr~RB=@8~4E2FD6Cc^}9Gp*T?3^f@j1X{~0NX?! zp-fo(lmi1`9%oeIj~<-2Q~%X?J3AbK%4HPe9|&4KR`6=YL@Q) zz~IQlUhsDYB?i-;Q^*-P;0f$Tr$-s_MyKy%@f-J*>nG$b&tIu}CgN>s>exU3kp(Sj z`Fx+T=k)>oM;6rC>-PDm#Pe-M$^EmN=NeXn0r|IvsRf6+XF0H`(e)4hQ!`mef@_2i@rEvIg0j1a; z%3s8sbX+-HgJ8IgQ1sxrflGFmaxi^p!GP_afHbt~@@8+h3;lx%;Qz(gTgOxqMC-n| zySw|~x^Z{c!QI^*Hg1Ct4uiYH#@%J`!QBRTw*emKymRi!d&#}Isiad~mG0C(UHx^h zwSFJKj%E!#9$`hVPqcXA{JN#Tf`4%L52#-cBK~m$t%`eaRYxb>O&rK*i`@cASV^_o zkFEXZK~u9Ir-8W-u5Y0QdwQ$VRh${_7Q9To)MR}ZY&PDykGS1Q(kv(Zf^|2joBX@c z4jHPYhJ z0~Ez+IDkBE5nIR4djM>q%}PeJWz&emr*;j_SLvlw!>e%YSMzEzDXcC>pVr26mBs)cUUW2jnGAJlc%7S7pb^}Mk33b$}v}jvQo%4Q^_yd7V zNse{@PB^Eac?0a>dJVD+k_)%2J2?XrL%=7VvwgLd%|D@&d-ul7djICG!PE3R0>1HP zKhFBm^CrHm2pjozt3yZKFMEoYDHPOM%g0!vMEs&=EopaT z%&?|ZRAmJdVGZc>wnW1^`C6yqVgLu^Yv@o38B%UK`J6XzdXJ>bb) zLCcXN;VF+)Xp5QFg7>9$-AE|ldH180^I~#);<@J+xlE~}aGkJ#F~NpPSUO>8jS$2@ zsN%$YUGBzc%oZ5X|6`)`_dWu20RtN$klXuh3T!=Ix$^Yt5T9UBc zMP*7)3YZ?Eb0lQ=3{6s6wum_O4~9fSqau>v2rzoDgh!^}EciM?dF+1E2r10B{SQrF zA_|R)K!PPe=e^LTyKfs;MFa;xb0*sn=?f0}BB4W|kPry~yk+!L+kgx%nvlUTA@xeU zdPi>t6Nj}?7S}OzXeBmM6Sfbh9vm^XUll#=hkNUHvuf@uZqmd7B1|m{Q@{Klnxr;2 zROxZfq!*{a%P5p@K(psK75+ti96 ze;=OusZ3jU4bn%k5CZ4UYZ$Kh0_LE6L!YbNcZEhP421 zbrnHOF^`BuPwaJgUt8yDO&^I4|Ln7TjiYn{Io|C?{=V3aQsnMN4{hl{x4E9@iknBG zNvv78y7Uxe^P;Hp;UjfQCN6-^p1lBW4aw?g`7jHarfBf#6c}|yJ>8?Hhg<IOmNYs-kDuGvjVC9%4_W4?Ejr7$2HsknCBj(6C1lrZ3 zPhX-ZcKy{WQ4dE?@Zir0;HgKXn9%Nb=gAn9fV}Lkwz2*HK^5oVOlYW-OKi`oa{QL#)Ks!?*5k6e#`0|OrwSK)Yaf4wQWEQv z0tCO7ku}7>@4%1!Br*T)7THrMDtH_)#4#II_yG$cGEw_qA7@-#=_aZOSm`3}sEp~q z=3z>}p<2ZkU<489n;4JQ}iKNHH+yzvpgf(qz=(HVgT3Hq(b5m!&&j~lz^WQyrjgV4#McUwdd@fujx z2ztgw3*iXPaX!HQ0JqZx+yK*(dmQ2Hc6j_b_`e2^qEck!vg8D)Q#EeZ)EyQ}l4J;r zwR~+C3?Y3L1^{FGATa70frXTS}jmUYE4gh{J&fVHgg3 zdomuC-^#PfT|HcA3U{BVcYMA@S(C9FNQA0Z+U%SD3pCPKP=ANd!1#XKG8t_HfK*u( zC6hBvs&P=>DC4-6sor9VZ)WF(G<0fA|v6 zGAbqgz#+p@VdrMeIatJpImzxEEvR|K$(^{QN8tF~_83IIHw%gUdJh|>6VZ5wDr;7` z?R8)5OoJ<}cB-eRXd7=<*q)GRGl;!b*1DLb!2=7CGQFElU#7#8T{Huvap3+g3&NI; zj4QL}UQV*ywnyO^DDu(EpXS{V-q~(mIOUrh3+EQsS;q1N$@g<$xpd0+Z~sX(h-fJk zq8ZX}o$P5I-Mp@AL+aeIu-kSJm<+UHzt`HW5&T%H)$=>9k*l4!R4GGBzxc_XJ@J?_ zq(|7v;pF>HuTN?Iw!RMZtU*WlRl5AC26P^?Q@Hs|kv!zwr^( z9%rkv05%%ea@>$$S$)WnRmX|9;^6szDh{z`@)?Y0EG5idixB{#47J@Y0T*11@)tm; zqv7KX8`dHA(uX3>LvA;6WHY$AuG!c$boAN+9o}LBYt|41GKn2d!5LF$!6)Co@ZFcD zL@C|e2h1EcS8);EDDf(not8xfw~+>Lr`<=^>AjZ-I5(H>9nRPW-|&XC_)1l_^2D}X zY;tDB>2sT`zy145X<1Bq%ngHNFH^uUszX-fSIgbM-z6KVuQxcWN(eA9QP=@#nMeJA zW>@CYOn$XC;!#sR|06mS$nxK>bkiBvmJM_$$TDv#5atU+JfxZ`!jszkN`vm(2MjqS z!ETmS{B0D2A#>HOiIW9d709GPJ?0u{6iPX?%Je~iokRF54Qh%}@L-DOnkL|zG%uwP zyn!=JZ1~EHM7JACF5RWukz+q*1?mW2&YlcHn}9ctUJ>u0_I1v$`1xx!0xJDgEls#p z#qV89$@seiYV)*x1xt-g8Bjo_tBeHHeedh@vryVOp{{&ze2}7)!Le)zEk<3RsFO!A z&hif9FG%bMNPXPsS1PG@*1Kb82lHvOg=|8^gNb7T0FF>L;T78S?H2jNUagYkM`UHr z96vh-b_%b$6RB{G*WZx&xo>jPE=!}z8AhR&sCkh#OKY~MdBKC1?B9XAj3{{vEVX7o zaPB{!rrZ?nGE^Mq_p{w!--JIhudPoL6i#;cm4&FSw(vE#jtCzORmjhh(xBV_ z7Nj|NQXTu}Q_r0K+&|Jwwr!~iF>3O^dA{!Nd zdm+Z{`qtITxa4}t)OiC;edqW4e*bU!wos?_49v~<ESs4qq$oj&(0PUh>J%?pdb@-^!&QH=<@HxTp{UaUQDE;La7L+B7aDfk|9t#E-xsG zh$rB){r`6UGoGf$XTj+33z(C|+(~rA{vE&=n8O<$ZsUrl4un=B0`!46 zz+hbj6qg>jkWDRGd^TM3;&p&#iRQ7P>&u*3-%9KH&;^)Fm+YLi2&xh$qwoWCed3Xv zt!XCZAjiMYXRq73ucL06*vp#^gvR$XUJ+E4v5w|5&p@BRWC~N>dlX}iB{~|-VwLCN z5{U+cuehOE1&FG%le1m|{3PA*tZEt_V`!XJJ{Dbwr~kxQKDXHISU&(2n`uvfxm}-g zFDopF3F>h#J2XTe)d)(%Ho72Z=-S`7>5GG$BRkeEY1m&Jt8fEfOO7Izw^Y{ST=#V7PQY?5T zuwD}u2Q-X(RJYrG{a`?8Ue83!hg~Aa9+#HES;qE^lK4NyR39j?73M2L!BEbo3I$R) zvH#c)YZNUC3do$l-iX+UDMf%PhsA6bXn3OXkPsN#NE`PaOg}$87fX#H{&?d4c{^tu z{zkIse5#h&gpN=DKpA_U;+bqK{d_tD7Ea>Y=#6Kx>DO30^LJpA+fFb0DHp)(pj@nn z$8uJ?)^P$M(gp|Bb!4F|ZzpQlL-3OC2keW4X6hO%Y$GHxp2o(xF@Q#@$A>+pp{B^d zIniQ;?~h4NbKnLPHErR1{QOrC^?@O$!}S5GeF?9k->s5ZGLJ)D(k3ddfe84l|d3hz}wI>GC>P2lWQAa`88Pu9Ni|T>#A=iinLRA?7b4bpjJL-$m@s zT9s}Y$P@5Ap^|Uw^HO9tH?$J_zA#W8lA5z?w450qh=TZ2TRhjeEqVXW1I#8ceBH88 zErjoKZtRtuBZ8=Shf=u0q8PpJaZyW^A|oe z0BY9!i=HF!!aWeQ$yuM^yoy_V|0ymZ*a7KtZ5UV(9GvM5SI`XU0?u%7=|4_jO2Hvo z*-v5SkPxhs^Oiorv31)29PF@sJ>RIMVwi(dg4v0->RRRISL}Ghb#A z?d8rpaR(@Cf|@Gp*Lf*P*h5xX9YZAV;q@LRd5zMKKX`ZWQi!P@Ss%fv{5*3J zXj95_GG`#gUd0LfrhR_k&&A3TzL5?us!C8M4K?~n*LPcrik}rKg-bL6DrG{IMbSaR zb%eTw1(=Gyd%Ecr(Kj2MOl%2@12X5`RUp~RA5?r}T4}P;k=29%S)Bko2-3M%cPf)- zkZbsUaS%k&a>(b#X}!H?LBIP^2hh2!Wz~T7v_=6We;ObO$=LzS0$@SR!ZJnD7tT6l zrKM;|yvqFkMis+4?pm}|9MG;xU%|}7Kuhe=lAm0CzY6{QyIg^1kK0U#$(nr*z96l7 z`D-Pm4kK%F?1Uh;Dw~u8YH?kSZ1>ptod-NMJDKbNP?{9s)Z9)+L6_q!r+oo_7NdpF z^0jOQ;tZvhbqR0-OeE={+^Y>B-3qRnLesUaQ#~_{1O9F>(koe*N&5WCUp`pyGJEOJ3{!MXxzGe!?_aW?zeI0m{W5wm6p8$rcdy#KJ@228) zRWWP6b>>W-fqs7JlXUX)GB@P~-kvN*3FtYXZaP5=wV`Fn*nucr#dm4g-N7I5)cd*h zzf|e=SJvlX*T)$P>SsHDz{B(9(VN#c?y<^$tJ2=OyS>Z%r?)(z;w!sFdps7PdCDTD zoE$e20YPjp@>4*j;TJ{IY5qhxVOy|tp63MhO8DcM1oiXwKV)g`ztQ_)T(4&@Fk%Se zSgg}z!6d??-NGWl9|38|ZGQvF@DuSa#4HzL(HnkF+)oCZuTX(zNPon_Sx{ZajY%wV z{yww?BRF;E+gtR&CH4)jHW>$QdNk`;DifaI@3}oRH3-nIa1b&;7ufo(66FB|IXIn* zLg_igcbz0@)gl47>1N&&78@tn#GS`uh{Z}t)pUUT?sj8;)eE2NMRnL{`Pnz)A{g$L z^r_v7{f0SX%7weYWg^AW#gMLUiOQrPqIYJ#i)Vq_47#(d>*XPM-$CHAfQ=Z%T}I~qsMU-g_~U4O zgbfX8_OA?Q zoBO>)QyM^KU(*CUba2!!fAMlT=mdEb6k(R}T#*1@A4$L!%6PWBl*+Cyfp3XhLQ~N^ z!vEerF7LTseLt^v-#2`-IRzfCNQHaeP67kU&jx!pKmSdj8VP=+S@tvqC+%eytD$3< z4`h>W72pGn=i2mmpGdHlE^F2GvOBXqUaBKYOmwu(Kuxe=nuCS)fa>%dVI+L%`o8~Y zc)@HCW>6z=|AQ3`X5&WMuHLLBzzH8Vk=16ZCP|C1FoBjrjwQh3Vzo71=qnFag)D;k z&jBpF^x{J#8XyMVf44>x>wEDcQiAu{<47rC&ewuD)VRR^!;ri%73=@obd8((tb^wu zilC*Af3*B}_rI~IVTLxxsS*F11Mq)4^M5lDZm4sd`d^1tow_ZO=DNrd2j#I;fqxIl zs+O^sLtOF)c6IxBl8=m?jIHhTp@+Lx4~w78UNIt2>i($g8NeivsMcc=ufLnG8!|%c zX|`XFiF%i=RJ#x4_A^E;4B>V|WZ`CnLR+cxlCpt1wb@~Js@?S0kAaP_$-}I8=-eMa zovs>QqeF5#=N1j-56?>DkVXBvB-)X)uN9XCl;NM3XopIxEEIn8TqB#guCBB>L8;$6 ztb{q4n**a6vVZ}Zi+ZWVTmBZhuC?0(PTYCwrA2R(1isPAEczUL>+Zt2~77 z{xZ_g8!O+c0}ptF7RmZDa(K9VV(%^rtX8`wWp2Hc+{r`MI)6X-I0wh*A(OA(V<*{^tN)$)^CO%~5fa zOLvkKI%bsk$bnm#rI&Qn-Zh3+*<#r*8LG;|*$p1IyH4a;+K+uUJ2U6qFvhwx9q4*8 z39ZA9%5b?q0PBXI#>ST04#%*mBXaRD(O-tSe2hM?1AMD2rwD~6s#z3NZ8ZBXIs0k6 zUj?KXU^vm?W@%==HFAeS-}V({F!}|DE5lTJ5C<2!a_nF9?0nQNi)+t{m^w3jbOPW@ zjC+1QNw>eT8A~9)dPF|jZ^a#&sl4X9IP2}b7EDleP|hD|Slnn!%=EjpocZZfVd@xR zO&MZ3owL#$?Ht@VHcY8-=Dp)EFsMC{z6NBmM{+A_?zVs4F&DKsg9R^H6!=GH=hiSt zca_U^5o49Nivw&Xkto$0d5Bg4F=iC-P=xtZr0SvFyd!spMX36ypDfc3;I-Ys_7EmH zlI71}`eZdICqR)<|2y5Cp~Yn6w9%l&!YVeg7oAU)`)sVX2cpIY~ali$fTCf_IQ?$2V;{}QTzuPVnW zG=_9zK`f*%M%h zvXvDq+r$}Ag@lZzh{zrO|crNitQ-)uB-aABWh+KPDa+`IK znhbS+6i(wR+j?Kj7;i4IHr5pR>is}>g8lSB@tlLP0b`8?2v=*|@pv)~3yCrA7iYGb zw{ARG`JeUJ)p~C7O({G{Z%4{6z=i`Jw60#n*r83gUaJHi&{Z{L0J&qL$ zJ-%gP*~SZa+NN*qRG0T8=9G?qOO8VmyI#y0UiaiBFK{Iv;x8}67lL&a`AxXSX|qXz zk>8RKCUcW@D5vIT3H4`7PXXTXR@)I-`~$ZvJW+f@mLoq7|AJJ^rSp!BP|J)sy6(2n zsNEHxscx%EV#@1o1~gy#?apzyw5w!1{@aRnb_Q;h{Jp4q9!K6d(}>7wyt1|Zj0DT- z5XJYhHK6HM=I^uiTKu}e3qoZjc_hp{XJx^MS$LWTdo%Mxktps%3&rs32%l9o$}SVb zM>`|`3H84RgOTYI316Z2GS`=nyQ5_mmUPmTFUjt)7M>HUkda;{=M$o zwg0R5ce%VB_=^1t82GMV;d=4-cDw1t^2K@Ibx*Aj3Lf#QH| zOXMfm)1sw1wzKx6J99>RBA_{rA8bQ8UI)22lQ#E1ZaCL#BUcDoc>&BJJs%@rn5$ye zfufvUcyWn~mv1EF8C(iys*X#Q==Rv22)Q1<;hNz*Fa+9aLvRHL(mS!?*7i$LC|#P` z1`_Zg!xRu1-O0z~j^1AtYb3P^aSY_K#@an8hv4$w&Q;dbIWRvWYcML1lMvML@a;1h zQqIr_d|>;70ilTlQ+7~1*Gi&Gc*FOaWI_X zxppW%iQz6=`vc#vyxKhpE-@jAbxm|na)xp!x2UnMtjRKdM{D&2doUD%WcZbVHFV4* zn`S2`?7oE(YqVi9c?xcCxgmupTR2k%_DU{bOI6_#gS4(kxHwcYUmgr>AQ3$_&{dd@ zXW+g*DqdS)kI*-868CjMtZv|zd{Q?>LT*&MYcgxTP9rA+mC7@O2d2b0tF`XBjw42lAOE4-YSFOmCQ>Z+1ZQfj zo0)>p;^6E_E)bYwG*DfZAvb2_IFo43#TenDFUW0iMowbLlt)mcc7N?vAA{TC9I_$^ z2jzQ9hi-T=2o6kX+r4qx=MCy{Mad715~tzS&L6;W^{{sYS5R*Cvx+nUi;S(=GEC5P z*86u1C_Mm^llnFhCX9R5HwY0)frL3jE|!OK-!{IjPb(buzN1@eMPS%RaYcJ_=G#ii z_-ACLTJPOU-J?h)dj7eWF4wUM$M zqyo~cHkm2=%p%b^oCV+fQEk+<^qsU77!p8z#QT8tW2WZK_eqqa4L=j60rKNrU-7lW(CB8FdsV{|YCZJjVS^*~Vp$5S-DdmF9a>*%ts|t{Zy7mNf0_3b?QT^` z90ni|NWty5xDAeN>k7-4?PYA(FVlNMaouq`mVUqD=Yeno?gyqtAWH7qr4yo?C%LEv zpb&`Db(zV=-Tth%&Y{0tFGgbBXU$kFu?RQ9>u@WAnhk^SpP=j1sc%xe`^i#QNJs`2IwM!UmDXQG_aF@56)a>buIcS!P?FUnmC>Ar_>ssygco(fL--69Xl&!W51zFi~#&<$Kb6$)zQvtX@$} z*uU>k9`PGVZ_F(rbTmW{E?Qb?iEk^(=Y)8fn%a3YatZ>2(%V5InSx6G3G?I z4T`Y&7L^iHGrn(^tE4r*kZX*4HD`*(S7XS^lp>S1o`J!qo07E|w6 zDdc|i1ia4OL;N326I=y{nH~rMI{<{>l(@Bc^SpcVyz`(WV^xBJDb&%zF23YxH3Ha( ze55&-Rwi%2*5n>5uLnz>+~56hmv+AUIQ;E4oe2i|HuFj=06W%rj=*kE zkFW%`+9_e~t^ieRYxFtAnfw)3 zsJ?Lz%0^y+ltiWDUG)`Gyl9mGw_}t|oxSIJZZZlG01@jiOmm#t>}Pd|-!Ew^pUl3J zsjy$VJTT;vO;fQ5LWVzDr}~II!;XxbKegle;!QfIY>a#L)BqQ`Q)T1up;&tESX*NA*(nA|NH;Hq+ zgcg&)upq&`OaVH5&mFopi>|X_7u+4p(Aw@g7hTDh&6p8SCu>0_Mt`;*DIy-M{8{mkh`j?uXho4`f~=cK$sn-zzcv3X+&qwvWm*<5)-Oqm6ypPj3l z)&#+0YPD&8AE}_vk^{dnG~<6+i%)r;m}a_lfasj6LC=PybSMMwHs`8S`Np7|h+ICP% zup9*?6?Uv0)}ME4Q-JVSxS@VO@-s#Z_-_JH2JF-Gr^J6<{xF^b!f0>?J3d+rfo*OX zMD5lA_}4tt}o9AycuSDW%B14*OWht+iQNj!F9ae?4xz z?CEUO5SZz{1h9+1<`8t-yZM7Imu6DQWWEtsDYP&7KjxGxVii3_RhIRZpjwb_;b5PHY zQysTd?Nw6c_p7}HN~sAM36t|N8y9_-6)PW|?b&Pii(o81g^lCd3h#zP-~0yq%-^Ma zoLq@3(Njyu?(e%9`_tZ?H3lW+&Zza%wpF1r#SHomsTekRe-JDp`BTrT&*D=zk-F}Y zc}P(FpcVvy-CO6`RrWJXE^Rm*1jxTAX=zS}U zOw#rI`%jHD?JYPhqZ@G=XAFKa0EVC=QSNJcdnSIyC`rkISW|Fh_P*WZqux#?;{Bw= z4O?u_`zC0zuFHuuLRI^y91}`9h|Z*{2xBWzNxgO8Tw+H-gdGfx!bY-+CRECaIm1Hb zs?Y0|Vz?Y#B&-p#%F5-g3L0V^54dw?F03`{^o83h<#lX>)P7zX&HCj<;_|er%zhSi zP?Y69^+d<{m+>9dL5CH=Wwpeb0WA#ZE^<$?${pS*>n38;^V_u-zSGM7wWaXHqru>v zF25PD_irt=L}|h79N2hX!XgGyGmac`{lN=ImdAJZ1I4MyutOocq-nx4d|%Fw>mAXw z9?`Z1$oA z;$+t;A4ie7Cc@~-cCv06svEMdy{AUnnD8_pe8&JF=rfc`x4Az2=g5`vV^|JXLG~5+ zP=PLXuOk*Gwg(FPeP+{ZQmW9I&9OvPo-DDlXS35Svj4|~e}%F)R0*WBNY-#ADcafU zWER*?m84+>m2b{>Kp(-Eg~M4R-}yw>`7hL=Y5W+k1>M^X#ZJg`uu#z{jjZZ~hn`~~ z-|57$@^(n*ZhuqkqKoY~`R(y}E4`QW($)@Zt83fzkHNNI$z@kg>oELRr@~sG9@DXR zskGI`R{MDSV~4T1DI(+v<14<~(o2x5EMaPJb3_RljVKS;0LAx4G$zpv0+`Sq9TZ|+ zV_ul=O=*xKnHRt6L{AjQX2>E;XWSNnL~r;nkuB{F8X`!?ehv1HL&Yj0I3ir^aEmhN zu19fU8^)4{YI+sMDRBKa2pbhL6lwBgWV*Sv*XOBV^93nqUNSE8T50fT(?Bbpg?x&8 z?v>V{Eavb}XWci{(yY-p6C}33!T}5GW;Raya=S76bnV9d~@8iTdT=&7~oun;{}+Va)}&=q9v2!T1Le(KQzRH zmbbYb+`8I5Y-d}iroAY{6Auf4>=e)1S1`lm9?Z^zf_G_0B#_WK`8I(kL%g-9>?wGE z1l?N`mqu(YB#ONwb%k*AMaeKQ^N?rZcbtXbIu)wl@2S|`8cfaVGeCXX+ZcQGW}`pN z?<0}ryF(Mxr9=>xxK|SmpU+HMQ3cQK$-G-xsl|*(3L(z44v#ezD%nban=bZ({!rRg z)_h=+Amg+HBwJ4-%=5&|7DE2TML2KfxOvTK{4EUssFb(NqWtA``%78tt2aTPj{Y%q zd%eM>Cqz+{Y*dj|88wFRFgijE3)XbTIe*Mb4|QM)LtC%_qM<<5GZLQN{*@qh5}Vnc zwd|Y_y&N5HSS&E>?a~@Z@F0D{x=i_Z`WZE|H<)gD%Bsin z&N(?%zHR>RwOy))C0g0#O~E$bK3S!j#O!);X5O%VEjv3*IpZCVLnoKCxoyW#GM!#x zEQry!^5ErZ&Ccr8$U4F?Q=C(F7YO6k^M9R#$dE!4MUYc<<_Ghumtz*#pS# zOUAH;eRFBcADm(Fr(NIf_^r=VvxNYG<>ZGkiV6<(H}(f(&(ws@A@6FS)z~dN}>Gzr#lCIb&lno9Yl0-(3=Jlwmj~$7J zh{Sp3e(hg~ERRhxcs(dC^6vzqYCr!xfIxmZwv33=+^0W8PE^J;W`?XuuqX#n#sz-R z{g6idClWpYgz~lJDi`>K>lSe=-@~^o#Uat(j*_?AZLSLYs&plW7g>I2nBH`Waq*mM zGlqtF4u`P~*2yz+X8R(i&9f&^^O&7hKd{>W+If$W%~)nRpA$9rct8&5hlh*}SKwpe z58TBtIVl7aVY%j9oEU{KO5m*;XqtH~6r^Y7C2kM`4ubsBv$5QC@=1tjsh`RT4&t-o zJq-RzE?X1@!1^4#nQbS)|C}d3&$8|#dM4+)-C^6IrBI~oRkE(Yvm~wO%f{a;UxCUC zDkn%kbfb$xsBAoPqeBMqVAt&XITw{l;>jn3BM4j&yn=OMdU0)uCYN-X)xuT5-{0xJy3|z+gnw_2Wj2&RG#;E_yT4F0^-7$t5gqVsm$mA|jwn`0)v!SV( zr!+%|`Q;hMwRnIjsiuqU@1!`e4u$D44_?O#^PBsVxOL$3TnzO>tbBCA&yMiny>)=} zwtIyX!>8`%+vVp^CcMS&`bQ+mwo$YIg_*Gu=k74q3U|wmN9E>cx4Y=ix;C)y zJ-ZrbBw}SK6PFnbjK>!icX69i`rEU z=;gNFnS5Lp!y!e9DQxsGJ0?;79K9&M<5m1;ZmDBn9q(|kOb1%^5_ex}=GOc|_E#83 zbGUd`gRRR_j2l)&LDVQzE9dJ?(6p4M!1DuQ>i40!{Ek(}C%otWpJ8T}@7L(d@Q3f5 zOOS6(66S1gzT{xrm1Mzq0?k}W#(>y8V9LS28Z%E!fykpnj$47i$-fHwCS!Jm!Ai_$ zK~k|53Uq4scln85=nJ;E{-5MdiO6#+JzXiOXqU%3y(rsd4SxiFr21y2-oVouHO0wf zG^9NV7kyZLSMy-RD4D4(o<_h9q<;9+Jv#{1{geqfJV*lvefEvs8R4WgD(8v20de9I zml7vT$vwM^c)IID=C~2y!_;!7GfKEH(4i0@nq5{Pp|fkE>AA#uP1Q*LZIP%n)oShk zwh`wvo}j$x=mkZeO^~4zq9>p{%m=#x=(ky5f3-YXu@t%F{-Z#^q+GCG6~-n7I~yff zflU7wRM~hHBlvyLzR{FS$L7cH5g<4gJ?nc4g`XzqI?1NJdyF9~>FRwaT9ArPO3}=- z$1U3X2bG2BV>H53QX_6yuU@5qqPq;$%GV@uGr+moU9)cJFlw9fWEBb4Pivs6sNW6k6P=2q0GRalD_L z@F8>|siQ%PHqVE#Qf|j?F6_|h@Z}GirF&-?TeG*lf|T-dl=t_OhiY5`|I`r*ElXcl z9iGUUzh;=^7VbR>TnW$G*urca8f;qKMQ-eaWlsJ#K}O-h&h&qIRy7-py5vV`c3#@^ zYyL4QpD0CjG%_^ALdxtzEC6-B#YtwBbOudvCf)wfCf{}o!1yS$s3;kzo`>$h<;e_8 z!{evkz`i_n(p-{HkB5EF!Yan4Z}p-@xs3k~w1hFrC(0q7=n8A9h}2_|UnYaKtWOSf zG6QQpnGc->+Y7%TbMu7AntR(LZUg%_o1g4uep(o&K>Y8(H!wv(n*>NbALINta0QHb z|D^%2-$WC=OnUuCC60&m==#TVldx-VOHgFV&)-M#2v%Lf*D0HV*i~O}{4BKw#lEou z=!d$d4I&UXq>rxQSYK*i@sFkYsrQHY_%B?2kY&eXf+8a%Ke88ht%%lIHZR~5ygQ^H z6hqZC+rZ_ok>Wo^LIA8oXhq^JB*t7&F_Wq*``La=!(r|is9yb}d^B*l2!mei40`O9 zPY+>^FITpRNs&BSyTrD>R2O9oIyI_<;40OzdFo6^C)!U@`ppREVMga5etbJ!GCP4) z)BBT+l^!F9DmGoGh+l*AOg@9~{C5G~X|cW2mLHEwj}8!-wV+dKQ@)ll!T-;5 zXR`T$%Z{LH5N?6R&mc&Q8l|GHq|BWTuJh?58lwoj>g!e`gO2xAy>U-9`UkSCB-Z0l zGUCbK+!*lr!C~dOR72}M!tQlO-64zn51X6Bm91kFN<^rV28ewO9`A1q!rC`;c6r2) zbvRC)xm#x-;Uq5ak*i4@AOLqKfiB~as-9*YDjLtNtasBg68TlKhY*AI49uGVn*O5) z?1F9EEwf@C2sSsB9yCmV10Gok;*jS`Y_WTLX z?ab8kKmU0CGr=#T^)JeY;z31%vb;f<)fwK%snX@_oegn!nxX&}V zB?7gvOE!#8S3EiC@1N~0r{~8hxrS;3+L^V`8XslwQQoE z#e7LAvTSO_&&kWU@2!wC-S7M8%@5}w)yGN_NC1%=<(b?&lWMfsT;_`EsCW}N`0_jU zB6tBVj>E+m*PIKkk=ir{2n|*5BrJ%in$V=!60%g%YTHu4t|lcAd^9l}Z#~*sP&>BM*{BN1}~5D9gI3hKM1RZ6u~*TuxjPvHAMA zU`eG42?^WD;w>}GmNa8Ud~v+6UXzl=4^$MN~JD(JX^P^mmx3Zz7)w8uA}^1zly)$y*vVw2OUE?yfe_N4wjtj|gQr zLsDS?PcJ>_2I<&2Z|k-1$ERN&4I<1HgE*UgvBV(x?!t9Lfg-PUran~5GM|suiD-5# zc>ix(H?zkY(dO*^6*<}Q4IHQ8zue6tdC|#8t4k1?Zdl<(qDw+s>#g`oVhZ~K6=vEo z=&IQf<;QWa=2qEMe@yp*i@TgQ)mX8^I2ks<_K-U!cElgrTkhm zWsk>sKao%ePHCn&n@IzWXlLZOk89H77AK3QwD~Cn%KZXMZg?u1@{2;}>d-HFL=WK$j zx@y`!ZyGlecV5^2P4|XU6Wpx|kHvRaj9qcpJb~#KHcM8!Vph+}#t7V3CZX7EV#yeJXduEt%+V3T* zRR4yu5_E;5hQCOMwjJ=6w<@;1+u}}sYmtKYPkuvo@+ld(_d3(64P2AP zZ8li;ZluA$2waJIUenQ>{*)ZkK@Czkno)x2G;#50O3L4%A48nn*a}1~$$!*R3f~+c zMJA>-Mq%PK34gBeu`~qHrlb@iY{yx~Gx9RQ7gM%{m>y<`BDLLTFkNZ@#FO}4{O{f^ z-H;v5WaLNmhQyp<(VWQ8idwPa&VyVfFgj)^GO`+h<~ySZBRD*e^wh%$1U{sRAX4RR z!#b99{fQMzGp?95{(m?e$#5JYR*PfJ#Cvt}wH8A!v178yrr@%Wl!IGH6iW>j%i?{B zjFB+e2}y&ME_=r-ucEndbMeAWJe_5X0Lh&WHhiPp;697h+w!*{f4-_d-hHxnJpg_K zRTcAB!3Xnu{z^e|=LYJUdT&7JAX z8MvNUa$HL4WQ6V#aZ-Q#$Y1}-t%qONQeF$#AWbw|kI};3wZ5I)pq~Us`sdHHqc9Xr z2)E1#IC7GZl=-?J!6OX6UXQlfY88niGASq)8@-?f@-4!Q;@}hQtadn~*(#(J@a(X} zWXo&T!H?OMs?0nv!**11@XKtu9e3)(;o$># zdbwFEY<0hgAK)gnt*__iFx5P+b+sg9=c7WQR)ZFJL!}`EjscXi^^c%4IE(kGnqbp&ruP{7hbE6gEO0(zc-!+6V zvZ6(rAf&9`xG}K3?Zs(=HvbkNoACm(h`k{dAn0(4G6glDcGk{>V3_6El~@&*RQSrl z2EH@YqmYT44ayXff^ZT_}5NG-ryc5YAZv+OiZ^(q(v+v>I>%l1o>hv z&=n%6jg>j4G5a&Am?+*-HXVFl!BZ_=*Is~Ii=Uj?T-xfrpkI5$oK}&8U^)#*KmP74 z6h48bg+fDzmrmqCSB+fR2i-^!Nkn|uVNPMwL}UZDEc8o7Gb3`%9pFAzFgpN}7&CJa zY+Xq*2N9?DYiL`*<_<7=)0kT!O_^Ro!AP)h115uw?J4uA(>)vQEnzt7&i8`~#(C@E z$)0KX!}|#alxgIBP;X4ymP3F_ka-qG>l{R~X7d}6qYi`extkUe-G7{d`g?RlDN&$7 z=MvZx^2ksvMk@9L3{GVAI-_r}+;PN$#)BIL;2?$<%2`I+>{!4?y~m98xrB1kDbXl* zX6*5%h&mpJW`YG_qQSQ@eu5z({!YGRhvGO&0qG(ECDM2^LVjE7;$|QRf!>NQAgd&k zb)HUwFDvBluwyxqMX9}4V_g3n8Aj+nkyW8J74)p3gUPzA)u>@~w4En}E~&4qW^vL` z{0KMwIkL1^=n%J7{j`2;N@%!ew5K1vp3u+r&`83`SmFf}6Ap06NKC!!LAA3u62MW* zbzw6fffC$QWRZ?{uoLhnT@{Ij1pcCSL%7-mw-KtLM7_3Et3!)5+~v>n7a3gqD1rkplhe(glnHk`g3{w!LVl-$7N_7(bZOp z*PJd8Jb(-xmfeaa5^UEGV(Oz3)5H8F1rh?GL_nr}6SJA)V+$zUb9{d{BRmSat9rh? zc-^C@HR{!Szgk>fzk4`X_4NpNeVnpwm;0%i!Orhod_sSN^4#q~<5M?Xyxz(2cBas( zcQ|{_crq)5)m3v8`}-2(QYwG9mm(Ud;@7SRUl5W$z}_AfLPnrq)+BQ)zk?!8BwJz^yL!pnAt6&s4Fv5;4!Coag# zoKjOg{Le7^9*2DG;Dp?%1@%K?vagP8H?X?cP)m*FTSa>6!jW14vjH;u+bpXl>Eu|HIWk07n)!;iLE_ z*<@ndwllG9TN|4jdp5Rh+qRR9ZQIxw8|=;ZeZTwv-+QaNPW5?b-ma;ds&o43xBGd> zS2Xl>UB8|i>?_Ovdw~4Mk#r`Qas{rC)QIYZwjur`*ykB?4ZA@8?}DT|!IrDb%ACHW zJLv!CeK}m-67;S1TyaOEinaZ z8HYIxU4f9?KYpu$;4^wmBhtTximG-#n}XC#ZVd66Gv8-R8^{?n=qGTZw)`3dNqNvG z8|)MJIP}~M+xF69O>pXl(?BR51X21|!l&FZX5USn0gx~+@$Y6?V59aCX)3l1L?g6O zO*C6KSjWJeSYsU3?RtJ*>`pizdXQ26&wtbX#E_?w4YH}0phFH(8jT-iBP@|i3FVi| zP5L#Zq$4a*G_Bs2h#_y(T|~pIZg446-u0R)t22kNNHtFKAKm^*GV$y{fO! zKu+6xkkl7POsX<205cWU9|t|vRR}N%E@Rj#Dhv>Tp(U>lz>bZx2D?+NH01@0R_M}D zLw8aNI{f)^pB=4zc1>*gh3vr~DI&iACj>e;3tOu2F#=60qskX+C|l~@Fvb^ys36*R z5JfA>$j*uCDa%-3%y~h=_sD)M4jA$}kB_*a%fN2Jfbet}Z?Kb%6NB?>o(sSTfBp%O zp0{{mt0K2Trb5LaEL58|{HB#cB|}AV(^H0wrc$=LD1uGDU{NL$wY0`pCgFElH!w?{ zmB}9CA7{7oT-To?Cq11DC;pn|dKYF?kSh+O+XLGMG7ZZdsgrR{Bz1VRoSi<}3S`I1 z(DGWdtFvEvZ%dH!B+5fh(75R-84S~59;WszfTEn0_p6y?9e+5EJlh;eG%6NZn=P#*K#UzKgwE8YANKjL? zTJ8E>GfX3O+PVV4gHfkK^c-EcVP7I-HL;#e2!G7f=xdfDr97HC{cKSptLjleT$;n9 zjUx)L=LchDIm<0N1ABQRK&!Ak6UkV1$}~sG+q#;8Dryl*9z#RrS(H)b97vf?5+-)C zD#w>o!qHZRH&d@I-@S&92VNHoVjT&wBoI%X_QG9EotD5QMFW8GHp%0|8)D1jzyE3j zt{k&$j9m6B8~s@embA<7c>ud6XhjctP^m_+%jUd*KN@N;*6Emo1T z;CBt?ob2`dYo{V+wX^S4E^;52ev01>++*;F_whhtKVZ@{(dc(AC~1tD@0V-+ zA0;cp|q=SowPMjS=wT@Av4Sex-KG@G}45bfVnsI z8@|9w``T6{mV2th=l!2Im)G~bz1zX9qsNgyf|E}Mem*ZNTSt*2?t+`WZ!LzeG!BfQ zj`!EQqgEiEdur{U9Y3iZP=k`hN(p=7jA=6;dc2-w2y52Uf4KDZf0RxT5%qe?rPj{> z*#^CT^4EOa-jX<{=z($t-YyaUA^w_6!NVNPvr4*xVa_-cO51i0T;RZ_X=qYpiAJA_ z=!3&8kxL^#S(Rurr%%PuC+D?Wr%4Q6{XRK~XRAmEoQG!9h`{BL($$ z&^6|08+9;T=`#b~V0y-K<~gyGD%(%}(o7NuG8j2i81!?D(neG8CNmfm>nC>geDk%n zm74N>WAv5U%$PDj0pfW=r}%?mG4y2{5Wmswc*j^rqsVhTV8$XMvrTcR9gc8&a%e2x z&?ktMtvhQxaw4eISIQCRF!Ny3A_+oil=qX}__65w=asZ|12(JT+Y22kZlDpt8^G=%O# zZPIyPMJxG2wmaf}J%#8`NDMBXOpQ2OVh<<1nt-~af5%N`3It2U(7)ELh)19g%4{;H zjyhwmBgp===}b@)Y-sTJ^8c%YG7YXt!rDBYxfJ;NyE4~hQI%Hs0EXatUAAyU;ipIr zZb+Z9oGXY`L233wn#IqaGXy0muUn>%S`H|uP;gtPELLkM|1=V$$F2#)kY(LkS6r_P z6$P>P^xJaZz->X z*D@8H+KaIk(Zpq3+v!}BcfRZ~yH7H<;mi%K&KdX=f76c9F&a?j{feN7H+fu|%{P(Lfx4>jW=I8|>1p-3WD0|I_F ziQ0bM!rfwWmhnWNbXHI=ZfQWDyJ@W2GK01qm6AY{XsTZIx45M?=A>!8}o{EhB~T5O~3 z!#a?3bI?5a_Hygv8Tb-%J7B-;!w=5M(ph#tZW|&~dsGM(L> zSEiobO?}J|&1V{P{9SVY*VWtU6OOVe=;I;S%jJ~ocg5)Y@8xz2wDI308}1r2*l^K=IAGCie}14SAQUmY5LJ>Q#u|T#t74_FUo)^4$^fAU*N6SZ z`ey0>rux+~J*}HH${!R74Mv0`z~u3I*epCj;g3D_6q_OQBAj#f$Q^h?-!8oo2!7`7 znh6%!k0U2XC=W3uX^z7ra6t4mf;i$zDXi~`4gL^j1JUd~F)_X6&={(9hk3%vR(1Y^ z6jAy9`+q6e7XiGH&{rzBQ7wJlv0@tA?WKQ*jmrB!l+7 ze-+1YXyi87d%~gz39{Y0w<54wB*(qmpFZ~sS5tpD!OITVSQ@3m%qd$MT|oCongY80 zFEeb@AT|7{o_6)ObdCUNyn%cBr`KZ;=Vorrn;AIbNIE>mHT-Z@KzL%mqNE>mzp)89 z>vw79J|e4dtUkgLg5uP|bYE@k>A+`aqkyIHTMCHnWzjmhJLqRE1duB_YTGUGFNg%s zKd`U1B?*X_wwy!1m>vW_}4bD&!?#4AU71$J9suy)R4=9V5HZH(^`paH`&-TMkaq-R%cU_ zTTcEe&St^Wro^b{TE4PAF0#sZ9kMm;QVIsTcTUZQhcQ#i+~!X|yYoJXJ--lw1!{2L zP0JsPtIng{P4KH}BQREs{c}7iB;X!!~4(^)l{jAYwcef@5FICS1 zK|n)weKCTXExmv{+V8;Tl3h5i@ajZCZ~e*t+Xk5T&I2}W|^NF+9_!|QBDP|Z9a*7pQE`qQCR=_y}v^IUmhDYd%?HN^2 zF4irUDXFo}SiWOb|Km(_+ph&CQi%bx3r9n2MmT$OI6M}#@O zY?XGK_3j#HVe01&#Gt){3m%l;m7v;*(PEEnG3z};yI0TAvqS1gVr!P5FCcyfz|qz1yI@tl58^YL&>y19(o z$>hTb$akFe?%6|aTd~1{%EzP5x6vO4S zgdf-+X7;c3`=@MVdPymCy(|vrwyh<~RZPpF=1hdxbc> z`T4H92%F77l^h>ll8qy|OW`i-J?uPLl3wE-#0l0S1@^I@Kj&g&*H zJ6TKX|DiRr)UCb8hzro4IbSNv^wkT;ZGZrXYimC|y^qED* zaC@HBu!C|TCf<0R4;p9xpnVZzQD_KrSITbQH?1yd8f~kQX-z|JBik1}G2EWzUHe&u z{hCan*EBG&KtmAV+@`li_8tFs5-=q1W+!@pq%P$ zS#Z@V1?*nYFOArCe-&`B3~#)$n?ojwfN1+1SFEvuhnJO>ugQSg3_60~j2g_Ii_-w; zE)wdr(s8ygFiJNMFJtf9oO8iOrVz@gFgPPK)aq>)$*X<1)qS6J&~upHQJKf5{pu&& zls>oUgfCAALjm>lnPu%5;BjGLh|58PDnJ9#ZN$Qc$Rd2X)-C=y6Frl`a+Q{=FMnwv zL2^rEC9yId7vF{8l3d)EREGs&6qcSKRHAq(t$mQ&CFTkFcWKIm)9bE$V@@F+>;4X* zl0?hP(yRM5W2rMh4M5h~IWEb+*ttvFphGRI3_Dwt#ai4`M84*_3~ut%XZOAsYL9*Z1w@EYTe18MS~Z@K zVI8QE-#D=UIt5bjvhyeM77b=g%?I6y^#F>{Dp*Ws>$L-u$p~ox@{f!KM(mEpO2@-` z%#B|ZDCED7)9F!mlBrk@5BJ)F>o?6b55@`+Is{aKZFo{&YOq;D8R4UdCQ!K~KY}Tc zfX`5q-y$J&Z{zmZ(oy`V%(3e{OS^f`H}pZl1hK790KK_yO7F-uVsU8cW6L|qP3HGS zD9V#%Lt>~2vov!AQ{~b z#-Qk!ozy)W9~G@(ibCv-m^XOBX)#4WN=FVNIF9dmh;t?V7KJ)i=^(8ELY-YZT!;j_ zUKVc&+d;&FCL_Xj>2M43ufA?&ApEga&x5MIoZ=wEuQ1q{_{Y@i9{@ZAD?14TwS}KO zf1X=dTT(F%0EDc~`AF5pHk*9w4GRKfOUDmvT4@it{re3C#a_vp+TOR!bGDUtb!#n5 zW)!03tB!)DQyzP`a|_Z_fZ>pa_gLBd=KeB~g>IpP^neXU5n~)jxbT z?SPd8n7K;KX{`L1Kt;(~bjaMT5lO(`8CnHaV2S+*p^E89(kCQ-w3zLG@Qd{)I^LPvyb46fkbR?eDH75}e+g}Bd3jO94%w1MH#-`FL}f|>?pn8w_qoV+ zLQ%1Y?1JS)cl@#Cc1F3zU1pF1`PJ_X>_Uv&&X?ZpE~fqvP}C8lJv{FAWx0YY1bMi% z>swKHnY=@c7~cnDp{PaZ_$l%F6mH>Q*>-FGAo`yT;9fAkHeR?@|1XmCP`qo3pH!f# zm7#)9tVyNRuojLc zub(z`Gz~Y*x~K#K*da;MpY{vKIzD=%Vpjf$#njJco9RvRc&T|X81~y$(o6Yh&?{%o z!gbsc^uD^dPlFl!2=?aD#Bp=K=dtEdfBcOBs&zXQgMjAEKl}fsZFK}}v6MD5KhW10 zGP6a}r7=4%ECrj3stz$s0qvT`;mI0b#ZZzE{OKJ`G-Py*uHDg>O@nQwnSb3 zv4S0OqS^kf+RX8^*I6C9ry>8Rd2XJlQ1~mYyeO<;2{^3J@Cg|63NSjzlB4m!X@!$E z#$k9D0VR5L2OGwHHIG8~4Z2Q)%b}$af**7I&S3Zr8O!8<0eiQHZr{b_kVZ21N8oNd7=Cpmi=&SQ&18!b~01dnrU#dyCNs;(fi_uQ;M;-k=u+&FlkoB(2 ziyzl7MVppFwdwk^HZCrP*`XJP2kxY_{P(9Pw$^=>nSv;;vcde zSwq3aEpZ7?zRuQ=FcR;>BinUA&oT&l{4q=H-k-65F?WdzJ=r0|<}ZVcf9nXozzDMBAU z((VJtiXxT7QK;>81fMGts>8R;*u@PVQndu1weUzMNM4Yba&*Vyb2d$uKfDB;g+(5R zCzP2?TOwE7q{IgW)X4#Bg&R$LM2h2;=YRA?C4^2hSe~=xk%(8R%#bTBmu%aDZ?F#t zhqsau4mYsw<=i@^;{+e7I_8ApODNB}==JqMAfR{S&0e1U>!>b{oy`mK533P3IUDkU z+9T$vCzV0StCuItNWbuTrBDE^J+-7MVMhhM#1-rKhHI@q;sP5S_E-KwMorpo1mpFc z=Fq`TB17V~RCS$V0=-Mn)$fF4P%P=oR_Y3@Dg---wG%BF`4_4+A`2k*$@%)IxFSGC z2=$LsW?&eC*^k-DoRiDU|NMR*PNvye(?j$FFJOm_brici(OC%%U(BTBoX>si+Z!OQ zbBkS~9@4r9X=+?%$YIg5txPK1tjCd2SnS6QYd|1XzFol&%f2CxqrWbU%I@;v<%3sV zvl_A#>q65OZ&GEe=OFc^ftX+d`9tuQNJtrEqy%yL!y`bxk#TISzeI)nEGF;{ezWda z17;K6gI{42rR|W~T7$Wa9Yf*9i}^47WLi=u4;!ppi>wkN+7v95vDLWlY?MVFR8Gwx z7#>e1V-m|1v$+O6sZ`7e6!Se!7!5{qq*X~lSJ1D@_QAn2ZO|NXn0LD)dm6v$UNRmo zwA=z;^b$;*qY<4K(mv&E-;&l=9oSS(xM!S6IecX(H9?eEr4G7aL>9&rx0sz!qeVLM z;VM+HxJ*NPLoHL;z!~#VmE};t(q@493=hfZS=0@=>^CA~sup{Di;=hTiT9}C;HfBq0= zt**cW95!D}YTNU8L~1(q&YE=2_zrCb{>ei>`viYuu>tWL7`g6QUxgRPR=T1$1bT|E z(hyW-^<-+>me?rZ2DqMJBc{URrl*2 zLC7t@#S_%$`bmhK0$~MZ#~stsBGGibUVvJS%fQom3BB$WTewu<`nppmVN^ZhkzIgM z_<&tJLd`F6mZ}Wyj5LXwMqw+p8dpbRBsvfhgaCtw%0X^xxjI{yZzMVx5`ut$hsy!{ z?*hxfZ)iNSHl|ce$x87`N!fzpIovs&>Yogtxr#YhJa*f~I^{u$vT#v(eCvHBw9pK$ z#UU*A;1Dk05I$LGMjGSu0B$fltj)>rKev@Bd9$IoH5EIuL;_{A_kFCIJ3BVzI%o~% zAmg#Db10y<#6d6-UK7mpXD(BcjJ?}=kKwg#^cq#}?Ytpv zNd@Wlcihu9%dPJgGc#DmxlP`Ew?4I}%8q3uOjTHJ$R6v8%`l(qzF60 zv-vMj8P*1BQ}#UlDyi?O3e$e&0r>que0D2}pY%E1kpz`ZxGgibAbBzq^P^OOY!u5O z0XGJ3wx?9QfSrni;+crmbYWgm4+#_R!w6|!D0#;PW&Sd|;i#%=aQ&IU7i#-y%YaPL z+3%cu_j(F}7>V*DLt{n_+I`>ILVv-SBUe&dQ{#RX17WO{l4d29oh8sV@dGGj+R78` z6r~vWiGK}tJr1fheti`Y3~dtK6j*jWwK7TbEp)OQza)b#WA_*tNXO|b!bq6E_{o=V zxSl~cG#NnQ@k&(pjy3%tv>e>T?gnzcd>k-|(ev+)g+3-yjfdY+R|g-sl{uc*o!AQf+Gy zU_tVPO{C(|=!V~=jQ@|~W6OUOACdo~`1l52^v_pNg;$3P`r3SMjiB$w>52RnFJYg_ zipIH`1aiOvj{GnQYWY$PX<)c4MWh}jkGg3wdp~d3q6y#Y8Al#mnNamc@OTSb+wO|x zTVxU|lx5!fNP(78BW}6S!V(D$B#6?Sikle=FB5Havon#~G5)aV`?nK3GPs+@msWPi z5j@;Ak&+?>>ruVmO@vO@zrjK9?WVaB=uUP5(Ojk!xgl7i-G6}z#7S9r7^70Zn{df5 z(v}0z2^WA;b|$!o<%i^@#NAvbB}yvK7&i^U`abE-)a|c$2l_H3?Dp*W-Txp%{+!e0^HT_@!f8XhtZ$6KpfN0Tz>PB{qylbHx}sY!yT1a$e4Q2H7NfMFIou z+M?hOlIPiVWHOgomoOA&AOZ^}jLejg@Il5FxKp|CFaxn@zK&Nt79DPrS*W^~l3k5q zmzClrof>R*MXeII%R)nZ9f&VpSmspRH&{o+fls3>|Dw)C%~ zCux&wIKJ^9-gE$CglsGheT0nhtX`R74fgyFg|ook0YS$u^gi!ab1%aohrg4%>+=uD zesFK2v-2%9bFgwoP~hc$M_}{g?f7QvV!gk^^ug$P zJ%;-C31VJ7kFO)cVxIN0UEO-iOD`zLg((3`#X^Jc*hR~9XIjIblUutCFdr{j9K8{T zR;q`?w+=jZ;q2rtNN-q!oJxu|G~z=0ezKY%jval&=sk8E1~MNv#{%jUKqd~L4i6BB z0>ehz#fEAGf3yDbK@hhuBdwS#*bWGU8(F?P5K<7?gHE3h;h|;FK!X!rg=QNCGZwEC zDnUhQT{$hY50yZ-+%>`kN<|eAKjr$DID|<6b#ka~oJY-ztZb2!AMjmYWe76Vw9CR1d^DBTI-V09whdNIL@9j0Q3<`@M_KBT z+AjHiO9{A1;!w;B(G!^Y0GT#eFX`I?A zLIk;ZuT6;sCWw0r0;VWT1GBg2lk2KBy<|swGA_+H(V~5ILaqN3t^}nDD`Px>54%Cw zEI7L-)fN+&Qj{BbgqpxzqJwi3p_5v-$Clbn-k3LM9lnEOXgRpaM->TJu8M-eqp|pP zcis8>(`9tCBMdcM1~> zgsY}N8AX<5#eT78dm0)qvg#>aF^4!Drt_c*x0qq2pVDlm2%Zi>W06*P38hLxJwa+hf^!Vb6 z=IZMCcqHlis9rbdd3$|2zTw|KdAi<9%w7BoUb3zDoGaMVOJGoPd$i*K`g?QT`DPH9 zDdyjB755_^v&@y@Yg3rndt7TYjJ-zgHzWLa+@_z`ok~qg;*{!?>QqZ0%HqU~i>3A- z*%#_LYB`IC%2csDo{M9J3WTnAmS1N!eCvmEl(8J1r}(ALS<^qga5?KwhYHXl73g{D zAHs_j34QNQ6D4!`{tk$uD$**-P`cu3QZ0Q&)v1FnmYyr3M9Sc^yxZjtJb}+)^O)XU zhzgIOqRlDuDA@NuztRA8?|iX0t+8%$idnUDrl-ck|LZ*GGZU4Rm2!|}ypg7n(NL>r zU(WJJ3^!l4ao5+q?>P?m?R1-TabU?fhtoCREEF&EH8t79U~w+kyT(|M0pfLbw-;uxdml9w?qsP~(CHy)H?kX!X{lw%H19{r5Xsq$%OJg@C?3ycUdG4bPH6Ds1k2% z-pVtNjJoq2U|F#>?~Zhg@*Z;$ftXrD!qR}VSl~6p?BVv!r{%(zwVRHcO7V_}Ol2gk zGas^ViLn8V z6{RoWxALm+JP%M8FUE{*tOkR@5ms%*l4|c|>F32AgJp((cf#Yq8dtXEk0S*jbiM_( z^@b^Zz-p`w4hc9EK0RGC9d4On-1;H=SdjgOXH~f(a64zVgHWD(EA)kk3I_b{zeyw* zdn%aCcg)mrSHJ`~wSQ}>8-NS|oop}rm#Ht(JyjS66AhAu4fsXaoG*<51ZM~SS6(hv z$PEP^H0D2OtbPjy4fXyj;TsIG77sa!OWct-@z5$l5ytNOn~!?du~dl3Bk>}KVQhuP zXie>f{-us_KDr9=yX;Gq!cm-!b41|bZRK|cTl5+mT=ZbdwQ_tfw9*?mvtIe%SnUsZ zWbCts#O>cz2;S-ZQsVct)nD13gjCe>-=S>NIN8KN?eiT4e^ z$C3wU2OHZ}n^Z%cEoRdTtNz5XM92t*Z-yK$jYqDPxwjiG%J$Wr%WF12&~OY@h=I?O z0SypD+vY0~*?3bcCC96a#@`Ax2dOmFLYApS)&>X26490u;1bYUDKQo~Y~luwUwZv| zsQfS`57lW9WI_L7^OGyi=}MGmR#A4J-U}{zo!HxQvPE7sU`fpt6-upa8#`UJa{WUW zv6{+BMMRNQ!TNMDB9X#n+Qbe)|6FTB1jGbfewwY6l{DJweiSy=mf4IVkjp}CkEe^u zLhVeiyi(lPQ33z0rYA4cCRzazuB~ZpuO-t4QOsvaOzJeD-igQZ%D+b`R)=(8lR$Rm zN93M-&RA;hun0xisjFZQw6>lA-lTP!Dwr^7nB#cJp=tvN(*(O_lB=Wi+c7{tKv=#` znkw!%3Bnr$4S3mz2d-3VPrOkUKZDp2)&(-Tu4;DlduM^ttRdjy`w&oXhhtM`!(RnR zJOzWD{}v!~Kreg!wg2v(t_?U#9j^ptoa^uA+hX z+eMGI(M?eWRCyw3S{CQQj#|)QBGujlU)HC`zkPwM9=Klb*ldSCe?F1RKLmUpmk>VR z{`o%;8l8o)Fm%{SMPQ_)wo5J>gx>CjvL&RENseFi9a6^AK4_?ly~D|&s|G9J`73_% z;YXVh;0}$HnG0F~p&#or9xufq_C|TQFdCSVXlP*ROW@$44Go#q&QCyn(7UrD;>EaA zu3VTw2~{*5SBqg{9RL{vD>e#_=UuQ6d7G3~MBzbXIa)8_!r6@Llqu^>mZvGvV;qIx zI{IBAvMe1kZ(QEOvm32$8Ff0lwq`8`U(!)6?jd%`T0Pb#V%|+%4XDhiPPAd;v|q(K z^YZb!zFjVTFctnxWJ4etSiVsboxi~a z{w_l2bbp>)O`Yi)_H=uD{CUg~ETnn+_y~1(u>X*~KA8CGR(W}PE+Y^?|7{dTo=B=bgsF63vkEac@?O`sG{98cVr9+NoJD|ODEcJXnEK5A%nP|M~$-&8({;c;JVFPx%sxDQ|VDd13U4zKu{3%@(P zpZ4u+Z2p1we*zY{sF|F^UA+By$ zTIIGLp#wkWV^A20gMuNyX$xVh0x3UU%^|K=RRxz$ucLheWNX%y5ZE%bZNqpKu1AOX5 zc4>2W{Tqb0jI?|D?SPy(fdT@yt*fS>CWi5egj-Y-6Yl+f#ehK@BG>Ul3O7=K$;dv8 z-9=Dfn3QX)3noZ6W(DX47TC1iPDF_(t~i1>+p1wy9#-!p8HW zS)xC3NVgTCYiqX3RM}l_JEuUDrZi-;5oo^0;`!82U@)76dbN533xq=gRK>*6q9JVP zs+QQyR`GQ{qm6k9o76(TsW)h^#biDoR-wh@X<&83Du4`fDxDp{!peGwxLgJz91+(QjT65^{OGBv^2vfsnqPxdb?9kV z`d(27;z2>i#h$$OqG8(k9d5sl@_0D*Y#n#?IY1teSxhAONkCJ{W@=a4aa2gQS^l0Q zWLP0y`JLS~B{{CQJ$kV~^d&pv??!RHKNuUP#K2U~Vz-dF=-4-uPk+&dxA?`Gvhq;ZpMji@^##%YEh&HMs=* zeZwrHx>NY}R&U4B&;&%datQ4Z{X|V_Q5TFPe4ePoiq`tNv!&NZ$r3Cl?p_Fk3slb` z6+k#tEt36K2aq37BR&;JHna4uv^MR6;1HEHlG4AAdER5WrwzIC`AWUwEYtov<|818 zEu1p%!KYd?xDh&>WOf%T(zN6d?G$z(G1^+vif0B0LPrr8_xn#9R{2_aVPq7mYuvS% zK?K%p{HwXdp2POGIh(eudVA`n<`n}@;)2XXtWLFS0voo|Tf(j9wencK_ikPg;80u7 zAtMW5{`jD$nL}KgK_vQDJN1B1%4{@Cvt;V>nxIsYASTFS##GrEmydpvM@oo{j$14z zyRUG;NHIufTedtGL;v>n%SE=yEvH{+5N{$HNXWx zfpdK6b0C7Fry7R?=0WgYb+5IWf_gsQuD2tQ5Cdf+^dt#o)Hexlk&3-4Oue6NXxv$``^8^)CZU+gGUD0DbV(Jad zj;p*NzV&<{i)AxLCG@4vE4>J37()V=RDF=%2F@0OgVaDn6?I-Phn6a2k*cq zsXrC|UG^cEmTBzB?3%vb@+kh1+A;5G*EIA*TXWU9DzJU-VTTuS^oOV1&ZbKTBTt8? zxwd9vzvp#)Gyvp?TObBu7&$uIIzY&wV|3tw0o&>Jopd3l@2^$0_dI0JsL$RYm7ux1 zb4&u*EuU$!U*JcV_$iv;9j1nK74g20+-a87+BhwvEU*xJQc~$LE6Z2HGSAB?B(^H6 zTri2PYdxN=35R=-y@iOI`yf(c`lW%)!o$VsH`XgmKnTdnm>dy0LfJNEgI^>?8R%`W z*opurtz5!Ts%^h@1Q(DliTarQ?{Ng^GOEW1}NKF-Jp3aY$!RwrWX z@c7p7lQEUzc|p?*wLKeZO~TbLxSsW2uZX-_$560?W@6ym88iu{npW%ug!qf1btPon zD&HIg`&{98R|Cf4r1HMMGyAvlMge*Ow3K2VA|a-oBM(z{woi@668DoaDMLG!qtMTt zb+}{g!}cy<$NvCBtT@#Fg(Io)*Qgk&@;QJdFpE~QTtF-gjP3Z@zi;bJhAjW9oPQyZ z+cX^7|43cKfpc)C`p-hpfTnb1W548Jdj2B^GbYRsk17oY2jOR!_zlL;<2lZ>9v}$i zk77c(3iuByQFE>Dj^R{ATXBJekZY`brs%3Z$c5@45Q3G$Lwrx9ZttYFJU|nGXfj8!i}la{ya87T^}_DJ~O#Y z2{)*Um`Pt%>Xs4!b9fL7uA*ww%*ENb_}7P+200HthrHN)lWMFSL4P#GtD1EzhvzXk z={roUwDq~Kahx#-#z_|w4@O8oK}Ggl^w@ZnQEytmJSpgJmIgNr6SlSNyk|pRyx3ws z+;=hwG$xZ^5}>q<&P3MltR!4s&dacdDU2KXbt`S*ga}4DOO?tA*c6wCaCjXfGda_0 z^1^b8fDzUogwWRJzOd@JREgyj;L)tQgwWpBg$zYS%C@Ya>nx}_y{cBA)(KkR$*F4% zoF}3-vx~gw2<#|P$IYtWiZ%7rdbR-Ior+sX!Vn%S+um4GW zOg-DTphE??V@KazwHJ6BmbYYAk)lkgI9cU%94Ngs&I;vxp>_BjqD-wx9`^!yi3Yk? z)FP@zVG$FAQu$ShIY6QIq{v<-vyTH-@a)h$&6jeO{7_AAxF0dHSA}xU-RLT`o6Bhb zOmi>U7S+80(a)T2>ZZ?7Gg@k$5A9}brad07HD)egoh5q*g9Gl>c|MM6L4o!Zs~#c2 zC7sWL?>B#s6BPvn8muOEZ*GK6r8Tx1$d_^uP(MJ1hxc!t?q_R_E?$V-tmwY!clf^t zpc=JmHZ!qvQ@s&A<(26*>!=Bt7w?ln062kI)82%~PS4^C_d}cI$IfdT#!axRhoj6l z2ZPNX+1mND38tLVg^3NKonoPnJA;2+!&nCYKAw&rxN~-&uD3SIwYRXou#xNA)8|K~ zg9B(MN8M@r{r<{*2lTP_5qp*_`lrz1xy8|E?YE8N`(K2VpVfx?ls;bW?y;^0+1Wj! zx;~#WV>01TX2Q|Q^QdYF5dr&o0ijSx2!yzNKo85Cx?Q9Hry8!-O-RPby{&sUVtP5Av?%paaWin)r4_GFQy&enfusj_n>dYKNf-r5R1vDb7R?G z2pKzz0J9Z0i}1WfhjHK)b&>khzZj50s6}2UWf%`RF;iu1{e=UD-yF85E(Co+&#{>c z7S9enoxW`By3W(K5v)CWo}U*u|M_EGw$2_gHFU*7;I1Q$7Sn8A$V?z-A<4fD z6!->(`U#Ev<;mc6qlU8@8W(?vkE8MxN$65UK7tDG!+&MwACraLE%OZ-dK&{c!gv@y zdBW01&G#Ua*-NXvZi^yx0uaWB%GO` z-v!Uzs>;sQnVpiIMglTI{<$d*QuuLr6BKULkn`|>`2DF5e2Ti+-_cA`mTsniyjp~?ICw+}f1ZE-myb@={qE?!6$+U+| z6ORgV2hTJHaG9tjm0{yg3H3;hTIY$i5w>UO^9RX3J%?GWA#+r$4-R-{L>r&CduQqO z$^BVD8fc)E$BX=>QC%+8$xBqqZib@#=p5b?R)N*wl%_M+1lD>mVvDiTl7}Z=lcPlZ zh!I&`FbpZ!rl}YNwOOr)9*SHB8(nSb7MlsO$kf?mj1TtHd3kn}N1YM$7 zx~ZE8I^jdB(q(AWsc-8yZjGj!N%BEN=yFGOVd!xRjE?H#`qWp1RNvd)Afq{yX|+8p zLSw);xX!e6nT!f+H!>vPyye&D4DWRHU3e};@d{!gr)wVS!u!nh8Tv(t(_!DCac+R% zLs)71`3-veJfq{HO8qZ8oAg;-cd|S@3=o`@#AE`-siVsG+!!{_vDQ?9KWq$Ucb$9k z1fi#H5?3P~vE7!sBGwQsBniwVdPcm27kJ+t1!cIVw>QwiV;F}QzvRt()4^dof3Zw# z>%L&GU9Qdf2hC(oBa<|Hcjhv9iTQynyU#4$B`TiD|8{UpOMtxr@2zeW-vkPtLf} zqpRP?OBC(ibLDe8TrNL4N)*Fe6uzvx=|vo_RP4WYYNiLg6;CV?`!bvVzx}|4mGt3d zdX z7*AMiLNfHDth`_6Q-OiKCc&a2)Bt&y8Z!RJzoNKf6m8v0Wtmu)heGhA)sFi z6Z361JG*?+#(RPSHznUvN8Z8U1&qY@ah&lqzowbnfuQa^ul;mHaxja9rMs3c2TfNN zku@g&5V)xsJ4-i();8REy6#^_j|+t+eIDu3vztHO+dAGHHd&JZpEUz`D>e>ExeIC) zvd#OYXK^TR;drJRX@uF4pE}Jn?I4$#(JtvF^NZEA;OxVKuMVXek}(Jq1fY%7df4yQ zia&&@t6gwop!DUf1u(rqsQKjnmkoq}N91r8mI&%enmqEji)- zUw+EPl}geJKu_gp1k8bR1-8O80gk{R{HuSp-ZlgNK!e$*?)3mDzaw)NWc+UfCopxc z3_zR8q=E*QO4^7)mnvj}^*vRe3<3@^PJK8QJe8;k85{KM8JSfRkMw_0^^U=rgk86A zY&&;s+qP{R6Wh9D+qRR5ZJQH2nM~}7Cpvkb=RN1EuWDD4@&_xTt@-CG)m z!j*s&s$|ts-W<=@kd`Ea_W@&oK%z}5t6)Dv^+PIik0*TzZ(im3V9K;1y z{cQp2aoL*K1-{fCNPYZm(?Mfnoc$*mtXWY7410<3$=})-<6yvjK@5Hk41@+ZxeZU6 zB6jf7^1acWpZ_^OxRhPFETSnAAe%0NI13plHd6$HIE@KcHbXVCl)+ihu%_JAAfV}3 zl#96JTj{MRzouM;1jR3jnFA8Z1L9Gs4A(k0IS8~pVF{K64zR_dVxVW=;}?C4y|Xy& zLC3N}9v7l#P}y5}ad_X$-K)iBK-=3$R8NsMd_wMo)gOm_Md+-J0@ViRZ1DG#Sg`LA2EhOrL~!6eIJ%>;7}IO7Q7SAI+_iIl9p zhjr}b4b28wC-_Kv7J%ny>kLji4tmX#=9x@oC|4pNnf%hGRq_~2@1gAE(#NPdWtaEU z@O?q^ihD%H2NT>Kc1^vjxNXPZo?WGQPFIuK;SSZ}FuXC^;Zy_pQLEY3lSK?p9E zTLNi1aum58l)AB>n$Am?TYh~tTuQ*b;S9`FTc(vdC`1F1?A=$l5}whEYQEEF>A{(% zUC%9x<|Zo?og<%Ak=xjEMR9=W#C@I6blYDx1>i;suRXWLF_fzqD*{l>;cAvv7m2AQ zHsZ@&NBC*-7k`n%y#7`C%AV|(es3RZ0@XMdLWp^GwyDh%yx!kTdc^QH7#SHw$Ov{lAnkkqe zw%;_LR6fE3Vg&K>EekDZKOaBfW`Woq8w>u6YNS6(pvRVL${b=7`g(1}sXARXMZ57a z^NuzcA#NzxmA)zr@`o3;7ZA#C#kfCS5`a)G(WhG_y&WBI@6$|2&3g?t=OVLy8!4{I_l*d}0e9HwKRE|2TQzXGFhir8B3 zsY34;r{+8c=F zV>6(iV3D1DUhh6XYV=;jxqJOSNplVNKL4TYey+|M_PworBY$81i>saCip7-#(3w2J zZ=w3jr^kEa+56$Q65;dq8u%?m7A0gJo_RJ6 z=QN7RD@)d&Vq7FG8Z;<9S9P5nzYxs-=XHKql~8e+-0_EZ`M+*5G4c7y-yS+HQ3hxk z(Q@A=HmaVJ?&fPr22vgb8~^_Xx)aHT;14fw!u`L_HX-`|S-Iq0cW<~bUK^|nF@Wwy z@*w!1h5tI)lyoCGS9NoCO4n)W*LN5`?-;&s{oYHTZdcUEtLD{kuRf<=fvrYYUt4_d zI$q=GuQRA~P3P3vbx2iAv_!|!#rr06S>TZQ&BVeetNeTAXOcJ_=z$Fm)y0XDJ;aip zx_VZy?EOmsrctS523LAo@z3CrOqIVS_-nR{@W1f!ZG%h(Ha@3#GiSHpGJ{dUumK`G zq%gMQnUvP#BT>4twNH{LVLF4+_0)2-XJ$xd)LVU$)-d3hHC2o2mC-95y0!KO7i;yx zArjllPl+7Zc5W2KD8Q{($ZqTQVE3YfSkobXD+0s~A*}|)XeqhUT!=g5nwYDbZbw03 z-!tsYY%JJCJOJ=K0y5e1Qt2$!AC3-rmh%?w{i;GGwLa|GM^4Bps zql$kz5l$F-g-;BB6!X7&&^Ouh?)Y!II0AeNP9iPHwu+Rz*j#O0NjsG-9BQZsMuz2)RIh2TK^ zX@~T!{Q&UlLIAh^wu%iL52cqta2}>XdhacBulC6_nt^)^b&dXtWgIVV^4y4m>sh;I zKSa>^3ADAIacp}qRab92Y+P^xM_dcB8$PAg$zEE2h5YS-5;qVNQIKm5hn1EG5DbUf zF&CXTr;>mNII8=f(nuusd*95_*fx2J&52UCvM-9Tw*__)nDQ-Y2aA$)p^dFBrAwt$ zTa3E|HP#ACWsOn$^vf^1)V&b5Pp*nXiD+nC0V9Z?kPxjHR{Ng$vbXKU4r5u7R?|YH zFZH87q<<7UNlNi~_{JNH1&lS>FYCeea z;-gDx<&7;AYG50^FlqDq3bd}?MA5ZrF^by2^Cegc7d7xKs9ek|bQdFF31|;#HLq|| z21;3N_V&+G_gzU5z|VFL@<*2!1F(DdV+p#3W6d-=^VYSUE)7CIT&}3`CDaCHoin>A z%Dy#M_fh^fAlIJ35sl7z+f16+zkR)l{dRELSqQZEv3 zLTiXA+#ACGjCKAcR-i{7!Eu-Gz$S1g{8c#FJs)?YGXn?W97Y zK;Db^~q%BGy>ZXoo{XSa95dKSNk{ zyW5Mjb1I&zw3|CpyEe?ZQsmentw@!&$8c~A6j|*WweaeB4ZAmAIO%~sKbkVw0P9XH zV>w8yS@KNk8%ctmq}qMC|3oS6h$f7uLEFQA7YD zc?AS!7qjdpSlSKg1*o)2LtJ}c{p98tYs(sjcJtyBobK3*3CD^dD7&M=%&F zk>CxU%kkjavZid#{d&Eu-{bGmmE&39mn%A_(cbQ^fWEyU@bkb#|LgGZYF;bH@mlc1 z>;B9>_)F%76S(#6e}A>b&sfK~x8vsp;}}J*36lvgp@*N#qq$BCKfVj38}lbH?19Ny zGr3>u=JGVTXMI2WyhncadO6&&FV!~va(y|kp?iNjwCY%1FBFj~p@{B`iz%GkGz;_n zooW`mT6jjSP0ic_gZu_uMI{Wo{wKmsg{F8CNv&)<(p6~Z(_FY} zM&n{hJ%R?mx&bDsTdNJ^^&PxStc?^SL96`-DJ6%>_$tb3ZEu{Z%$+vTNfc8yf^R*l zfd~%y19}(^WgZ0lzK*UKHO{WBOG3@J1>@{;HF%pz*Mq}^IB>+&drhLYY^Z2p5p|o9 zWW5zm$P7M;q{@{qJ>M*Rno2Q=f&NF3XGp;QI|_CJXv!LbG=>^*r^tlxyS?p+v5#MQAJH`-}~TmZoVEJF}#Z?UX(g&x90ob|2oV|H_> z_csN(0+x=r;7am$4P|gBS`9!?k5?+Xk?S3a=Nr5q|MCLucDLWZVWoh^V$HMAj=p{0 z=-c+T;C6zkZ6K@0_MZRe!@+TYURhkuSI_I+;hW=i0HT=xFA6k%$B+v9V=JTHuTbkT zdUhflN+)C(SI5D^*`Hxyw2Dz`-Oejj$LdCvKVO<+h~F;e5yQe<2sgaVPm=PaJieR6 zd*Tz3Paxe}{bhd>nX%MBd>{cRAD9QkCCtbVtO6ZB%e$=6|Jzt_HJ50e6wQg{MeriK z6Q1)|C)5bm{p;w$JNf<<@z;TZD_^$-5r26wi6I^%uIjLh`4?HAFy>~%d&^p;eK#Cz zjs5CMthmfeCN0K+^C+T-ia>ll-P3Yr0;hB3N0x$tXGPVJ4FS@F`CGfxkPe@S&3;`% z=o0Ku*ET>ZHZIjuQ=io^<6l^*n)0>PmUnKjsXR(L69vKZ1Y%j$)#fHv@VX`tD8;kN z7y<1*k46GTxO|5lhoZ+H+A3K_F!KGypX-18vNmf#r&W)W|zLo9Hhks3~93Y9HBLUt|sv>Bj+(qqN0b zSSjzT0K;MHd&t5#?r;=_!RSu7_H*qitWkoFHc{EO^9aVGhuBX1w56JW=bse04s@4R z^c0loW{b7gmaJkts{vqHTh2-AMt_RqN={#u_~}ALCqhy2Hn)pFDoGD-Ke>&XEm7lB zX<0%=Fqvx+VVs+vlrIPVO(Zsu0x*~mlzIve)Jr&4@kL!}&zyqYl!N&QA>`A+fAJ`U zZdTJwuZuK6EN>RW>3j$Se=rReWoY8ZMUDO&cq-H5+x!cJZ1tHTCtxj#wwY4A)oUpMwpl`_ND<`SXJ5%` z^9MKlWNGDXaI#%p0QfH5^W+3q|J3E}gH$b*;zQbi|KmpccMSPY3x5~-;VCTEV6hPG zWHLuHfG~{#72k#PX#LZ$;i;~NYSgEx#d?-MSPK0&SVUu~9B=FiJJbwrO~utfs-TAz z6J@T17A$wF4?(oS+M@Nt1? z&FI$cPsSU3AGfmcR&NWLBx|)eonQR9&iY!}ZH{7Sg#nzB4|2fLd_(<@1C@-S6lBMkFX(*}Z&AE+L7Vfau*1AV#mF(zq1eKT(c~f1(UK zkR_1*MejPM713(HQ+bd0C%&H(#wUYwA$ibz$R323{OjHg|5+&EPWa6qeNR32zYR)( zlE2{N>+*@(|7*r;<8|_++zD5_)lXFZrN|HYW_x7Chrh!qjl9pj11#rg*PbXfb+0Sq#&t(b7#3qZiftQ8SA%Tr!+W!X)p2PZ zHf$AmWE)bZ*Vp6K!{2Ahdp_jOazTkEB~h)E#Wzw_CE94vY~(y+Bc##xw~laLEwCqg z)iIiUQqN$^1Bw-|Zv+iD8U&`g3+1NJTO3#&tOsf5=OL919qg#6)xJJ0-~JM#rHufh8FKWI3ExEUHVhe?DW^K=EQv5+$iRx0a@M4fZW##)TMax9U?Xi-z>+%hd}?>fje5gc62bp|GsG z+6Nz7nxv?^?D}Ywwf|mNWNQNCe(_F@#^W0d*rwWwJS|hgYp?I)7fnS#cD1**(7*Zw z9KwLVDnA-Cf!R)vRStyjqzNlCy?QejmLK}{w10+Y8t=Ga$IOO=<%j`sgF>#659z~> z6|TaBv%@b$WMC>t>0NfhiW!aD++%_`@zZB&D{SIx3RJ}&BXGvcU7yBa?kf(8YK#oB ze@Xj@oNLgJ7i%BLw>6-?1(Y$NZxwZuzGD_w;Qt|7PZzD^yV;=xTi+(B#>%LwKS53<{uy5RQqH3gc@s z8YcWaY$fK+12R&SfAGLgi7Yn|%*mZHfty;Sm=>laYEz^p|8`3wNFw>8V&3ty(;T}j z6v!Hi$!Fj_X>yd-E#_621p0T^8f97h-S`&y$B?ru2{`*}zi{zSE+DK`54K$P)n-+> zovNf$?y{M}u&_If00*ulWXGv8N3IXdEucUvsSzq{=}S%GleC9fXbk>2&}RJd3|0}x z4IVs0oRm@eht3-dt2PVnXPs*lx(>Rv?{Pnkz{v1I9~@IX#&HE^G_ zb@V4|9nYYxZT+l)B|(GOPhMm9yjEIfbZ^SHm2pTfb%ETQ$1Rm8!t#OlM34zkSaHIu z%iwyjR?}bDe*XEd^{CjxHcg!FXWqv!9$$m!cxui5*&226x=Q;JQ$=(=ito-K{0&Er zRpA#(G3WgF%7HQTT_2x`0(dHTB|yLC1ndUiQNA<5^zzNEmDnH~E#+{o8W&9-sQhfc zeN1h{>3im4I@yfA7PxuYc|UkfMT;z}!(n$Hb(~j_me;SG56lDMlLf08c7k1yoX=Cx z%DhyD*QJ&1-tNblwb@OF796nVx_81R>s5}f(LiK?@5-$>xgd(Q=}}YyC~(_biiZWv z^F+pAvR}ZBWOW|YD;z^lM!L6MW6B2BbWQPFtQ;FPLG0c`-$Q7Bk>rohis&?~a z&~}HmMBkozhR_>p_^dz5+~MYGmTH+O;kF|k-0c}Ac5D##tgyIaO$rCIr*T^ zUj4cHst{Y#kG(S@-VA(S4GgwNc=O^yW##f9+m}Ga+A^SIDUO8qdEdQah0DSpy5xcr zy8a-st#_?JLzy!_2BEZ1EKV}w6SzcEle@xSuJOl_6V^U{+pY?J+3~I}=x#DC|F-c8 z!ZG7qJ#5A`YFs$>;hi`)UJ0AQe1%4e61;trW=}S4y%ul&#ia6j?uu;9H>2Tz< zD=5fJp4aryQ{CH}94A-*6l`O(JhH%Zhxvb7v;;k)z^bvRr)tEKN!-vb=wJf79 zCbd~DeOJ!W*ao(3{N3^(+|`(N<*Tg(n@RAGz&yC(t!Y|^%HjX~_x60SQj%hA2d zPgB!wjTvKyO>|di>h8dzBnNYqHjHzx{!KZ|cD;Z1_VO}HLJWTT3zb&rx%CQZkAv?t zA#LYR=Rh@hUcHu$HuD={D_rI-QJL85uwDHpMS)w>nZGt?Pzd2x{O>!qyP$BdcZX zuAleMVcq$fyifD{BxCVIyEHBfOZfboqx_K5VFpdX&le6?W&@SmT@RMD59D1XBvpHY zUW6XKIVQ8-t=3@Ctu$b38KlffnTqx#?;8P8CL3^lPg(-F znLGDp0xYkCC3uaDJDuZGK=x2(`YyT1+mnQ2kohklYXL*~N-e7v?aaxKoCJuyR1)~( zLtu-;NnMV4Tt%3*Mq{+2pkVrvFPCXRKXA@sgS)pGO$KQ_?zu)KtP5h4FJ)uDc956e#c&7$H(1~=Mz?1)G4qE1@p{* zio)mKe-=ToWFx7}2$=pEPa_9^IU%j_d@s-YQS-OG{ntqx=?4S2v=6Sd$Gj3QN*vI> zc=t0k=*U5 zHNq7U_R?#U=rLI~lY+Xh6ZrLU3Ke?p4%N@n(w5WJjYPI5c$rdn?Z9&>#g)R7f9*ah zA|BXFCWPIdYn+d^)hp-7#EydRISPa@<0UMGIr<9rbsD4{UOh7uo zw*;cTk=XA;Q|VxcgzOC2f}i!@NX_CBI5KvRUti)9J8?Gy?$BjadQO!Yw$)_RV@CS< zsb#nS6>@8oi^!-ximWV8{Z&jM>Tg)?MXIJCbqE=8ayX)$$c!74!n9K#*TQ6~O_(}z^z(G0trf=Ms&x2yx`^7IMQ*UJrg-V>K9Tn#HKnP?_&V7_;NGEVg>;l6CMu||Sd9KGx0#M6 zaMUxB?zx(dHb_ag7!@w=sa@AoU1X`}1BM!fllM}!N}TqR+s7>PQGD-V=}v?6Su>ZP z)|R6L(8F{!Z~7#mYVq-JRctXqCC1}Jc zIE;2x6%5Bnqm1d7q4b*m3{3|@p*Ib}dmM9eqkJAKSR^KIzk$qgJeE*2mMaPZ1I<

)R6ZyV694>U?X!nGm{t;eVpi=g1bZu-M_L;sS~rjO?N;xEF?4w+aW_h5w3- zn>PfqK#jrBOloUoN}kO^#c{2}OlK1MibC(9;1fV%9?N$Lhs=sH_VtYS|Kax`WFB-NDVIQG)}N?KSQ(QBhVLNoau&8?`I&U1Oa)WXV|1G?;vJ_ddoKXo2wwEy zH=*kn0OI(2LxCb~M{2@YMaFy{l$W-`ICUZFb>DswygmPJfOSg;_c=LRo>~zZH~qd` z`Cm_mv;Fl*-x}7BgMU};ke?Mjg6~JSYr`3Pzq~ql{ro>Zx*r%2xIDvv0ydMu6d@{{ z^pKi4Vc+6SrTP4_;c2&*`>UEQw-?%vgX<4Z&zG0+t(=+8MTEgziO=--BGnSXA_(4{YQ3TvQ)az|9zEOwC)J)EJyyfCK-;>%@c zkBiu+T3?SwhE~`H2@f8C;fBU!TF!wBa!GqAw=Ig5vJ(^ThEWHGe2|AA@KWS949YhJXoA8d`kVqe^Upw}0Y<;2rf z_$k0O@+ckb61P0ytm`BGsPpe=F_g*y9T9;G@Ap970x`MaOeVKf>^8epS7~E^j(`J~ z@@cxJosKgt{-6^LP=^dr5LtdChdDl70T$ zz((oDf@!e3y^7Ra1BTX%stU%Mk;)g9X8MpZ8TLAUIRLVRqkZR60sxAj!0fQ`oE+0$ zdti@E-AbIekT;@=+9tkYIvOlZ2M2hAq3rO?@9v70GVIO(h6L#r6YBQ;7O`645a zZ~l9?Y;8*gK8cZro(bbnS%7G%H#u-8W#JJ#7==6kCJi-{r=(5VCFanOU<_lTo+>)y zQX?R{<`rJ(q}i&<JgaI^j2fzO=#9N7tquJOi+H&1wjsl* zimJE-8{38t6u;U$^%w^X|a>%)AEo+f> z;07m$tH&Rd$Jd6jueLmT;s!|nn8vS*Kq!vNkdcCB;)_=zN5BoZ^<0z}22KrG$lYi) z|C*r4Fa_v0+LAs)+e#`SQbnUIR_Y(Lq|4py>=X9_V?QrK$tHU8JVMm|nX=L0Lj?2{ zTn!}iO~cMMobH5%fVbo*vG<-R7LaDwH)zpef+y539pnJt**N44bseV8jz5%ydIOBf zE3h=q0>%bLc~;-Z3ift;@Vp9!&&j#tmGb4HJi74df*~7_nRa&rzWxHDr6aJ71e7AQ)`a@y z>TfQdMst7$Mg)B$=XH*|J8>STnZ#~ho^PL5&ugCJyJudn&lf}ie)pqS^VX*Z-9yfL zf8oGmG9O2C+B2cL8~K=s5VktOL(3Kk7t#fRZ?b2lcB=MenUtd`$uhG#UUNgPSc0>^ z=_t^HX0j~i=v^(d_NLCZ`c&QLRH@o|`z!Bbc>5P#!}2Pl1}MRDVC?E7=$h3UU2Z6&n z>NR*qN(snn5vX7y8r2gB_P4|wM!87G@Tp4in<%#70Z`{#e~Gg(#_khuA}Ya>#b--D zRsTN25Z4myUC})51i$>kT_*SrS z89-vR11YC3IS^z-_d|>rbq6cXG?^63{(a$y5T|~XL5UXp$Dj33el!t%w-NkBov;%z z#sCrWnZ@0B-y;7^>21DhXN@*xhbtChJs-Yx>ca;8AQ+ECsf{~&;x>z@-0@xnpb9w| z3`WWCbpXhLn@t`gO>(1qvUKSZMtg{qttv+T+7k#Gl_lXbFW)ouLkO`>87s_;NRZyBgUdV`nRv*MyGm_!b49Bdjfz^G@V~94bTNIFfL#R z%J>Se1$2{M{f$28e@hqaWa#^L$@{EMX_9G`c`eoK+ES|681p^Z&Ol#0$}b6d`y~Pji+0r^~_p%!9)9 z)T0iu+aU!p=xn+DJEwUl%3k%tzCht9rZN5tFuwz5i(V1YGm_C@*1l;}8*~^F82Az! zK`5&aBFY-8&HwEB4x1ur{+7n};B=S^9A$55oXc zQcO1yAaP%1*AFhfeg~*C>o^i9ikp5x6OkP3{O3&Iteo5#pc;@g8Q-?P-(z5G8KA6i zbQygp&@e!eLZf7`BNy&r5*--O+ztn@(m<1LVf0}l{I_g4=Np8xSl+L`c_&BjbP~B5 zFaHbdol6EI!a2Mj;TW)(E`z9oWC5}z>!Zm43dQB!F%*O9GL_3F<&u#!(m2rzl<~Fm z$iFXwe5SHLBsaTDueQ#qSM115PG?$^PE`P*(u+Wou4QRr68ppCj)~<4Wfv7RE>(kE zsA)#9%vniDcKV$b~v*GCt8C(`8XPVGPJ@+UZTe=Mj!aF#Cw8IVr zVk)p{Ha%F5rxhxSIAsA)dde;xf;2{*))>TX;ozm_LEFi|hFKwt7*edKIJOu3Oo8LF zzwqlt8@aP7P$m@1VyPgA3$X}V~VqdHLDenVRi=}>in7M)8zx-E4}7gPXmNv066 zK#rw{`H}{|Y?r{}A<53vA!Xb5UawUZx8m zT$e5ryGsQ5GR_r-mL8PR>YePy&yeA5E^rBR3)*qRq3!=2oZZe-39WzCe*&BLzGFx) znDy;AbDkadE*ZIYrTe?z-Mzm5BwY9BTm?|;U>1M+(CiMD_GJA*^}k!jU#!S_{^sWaAcX9}$8d%q(x;F%y z^_oL-bjO1|5oP0~^p5OOO74_O&ETcZlnp6(R>|v9S;3_< zjR=-YY2uVm z7yU{z1sFP^o%sa9+VJp(>qnpv?0Yh%9RVoRFADO`(S$Qf4@JlxkjI0Z12%tZHV(|ji zrfl?O*K{3QZI=wu)51jcK;K4QU1~!V9KAsN6K{bsNDD|DQB)_8kixN4f4U8l_mH4G z-8kf#gDJvJ#}hxUdl9+uNIX0Pclt!ep&&>Pf9FaHORe z;?jRkPrg{WoO)mVF?)==4u(cOb}N*=fX}wkLyzvxu767j*l!;>vqqd(IY+WeLs&!j z8A+tc`CfF`31z?vob>JU4O4jRLG3o1fG{%Y1x{0=;M{Fg@l&;GDgK%Bn9`M7<~CnG z>oYHun)FJ~-#n+?1K11LiC8`D-jz6`Th7qMUh_Ua?K^kc1iTewgwiTj0!KUpS*brL zxN{SwO1(l;V%k&UeFtRVE3hXOEn5D?o(k&jOe(6wJ?#Q#T=k!ebL{MSpd{>w%Xx13 zJcwh|?aE7E-~)p++V79Rvoi%|<)!O~y(3vh=Wc_2e}@A<9-4>qbwni%v3H(!a=4fr ztZ@y(BW3dzm0cYGK+oyWTlB`)9mJnKdH1=KCEDi6CoSZmB;JbCVCbE`6Q(4IU9wjL zmQX@5OzXhq<2c=kn1JP%MTc%j+S`d>b#&8<$I84uXhHrB)Br?xA224m#fOn6MkS@m zU4@c$hCo?=jMns{TXsUCi-)Eb6E~lxa*Xl{k6$&1l^}xrecQc0T|oie-+6jc4qk2E z{hmy9IWvbD{SI^CHw}HW9>A4&m90}tfL8Z+lpc^%D}rt9=}3rP^`FP{E{Ch^Iwo1u z9w~%>SRQ|Xca+IYtQ zx9yFd?;e0}MXG9vTC+c=a+&5z{aXEOnH^8<6vLg?!zTA?RCJes5x#4mRaBa;T4IuU z&J?JHQ!CCq9x<6rVH$Q}e&s~}Hrue$x-ZVH?h?&SBf&iWYu0M~rQwl(X>j_l6TM-O zio6rXmU6bYc{_RT8CH-5$>4Pnh`vj8^sU9QWskY_5FD8)S9mmX^a2QpSA(q>%RiK* z$vgaxl%|)F4HANRr*T+5Ox1R8E4NANxnQ7_3oI?fY~$%9?c0Rp!yj#=+@$C@^lrN_ zzv{F_JzQVHY>Gp@ZYt%Uta5_QEw|#0h*6|-KV4k-(LF0)Jgydo9J_6y6Qr#vb19Iu z$xOGzf3~f1!f5m9)Fzdzq^u5;!D$&KcwwBgX=P#eS`O`ld-A8h>dAa?a*y-di#P)1 z%j;FIIH@fqRaFr)S9%ivOxp|BZZ~v%>ORTZts(f2Mo`p~%(q-q+(>U6lno~RzEX8E zFQsW*|Ij6xI%6AyMS^zJGU3A)A0qdLDa5l6mJNMclhWt{7|~}ccRvao&}^JE z0q|AtRv2^0q}$%!Jd!J}NO?Kql>D_G%R$~8hDYDZnY;o$+r{lJ zY?F8xPr0UIkP)&8C z|J5ixPD&8tMql-;(Cc`v>92N^<70GnZ*x=ATmRIz`DP=vHy!3jjoqis-Y^TRD7xu5 zqTRSh&$;T|TG;c4BaK)(r&+C1y-ANPc7nWRPwlVjYKU4#+9eft#IFs3yLY04x2387 zz|Qo4@R%9jsYlD8U>W_4FcaW?iBs*-OfZ*_$lTES4lX&kYMR%;4;RC}|7-_i|DFY7 zL_h~;`39(qYY4PJJ$uJ3PL$7UqoM>>l;%Ho8rm@?Ojm)XI1TIrf~67%BeEB>t!jEA z?VtY$BxKUfWz)&FoD=;b8EBU8uDzc5ds5^>lt2*!@ZSAcyzatdh)I*cF!i?~0AK{T zLx{+Xl!F#8YbfS8MjtJ@qegX>Ux-qL3NP23effPA`uYjLlrz(S<(vSBo9Pzrw5!FIRh3}IA~8nLIz(V=mipzON$Pt$>h1v{1UVvk@&z_&ykwj1*1rm`Kyu-;lHn zNj9W5rP;ZMJs#Z*aU%5|=C`<0J~H)ck(24u$M3kHUkYSUBg~kwAZZ$`-MBbEw_}|( z@+VP>iv7y(*(;N~EdVI4@2NQ01!kU3y&XAJ*G|sB!#^hw# zXWM3iDdBI)@vzi~&9LZaMYkDPFir0F3F!PV0qn=Ed@a5o6kitU7)< zEYvahluD^k;v|z-kmNA4HJo|{PB6wx*g9`ZTrrlHX81di$ZCn$8)o7P_C~Qt6)11uQT2dx6NkjtUD4!=uN#1|T zP7*8a4^Ktv*vBa*l&Vh|L1=&zrJHzmEdCl$9CI@B;RqkW%X~wPiXdO~5LJdsC%&Tj zts$OLHb<;!uH16V3Od!tu7ylny&|tP&qLOkzI&wcl4zW7QLzPk6ZNf>pcC)v7W&a4 z$^%deM&{8gb}?dO0JJIg5WHM2bC&eXrsPg%(U**3N=*3IDSZ zimMB0_3G|mJoE3lkSavP$xsnruo|*(2q}i`9|xEnhy~2 zWOpJXwkQO^D?MClQv^PD_OYHrw}LBRrNSt&D0posMIqT|L}+&aJ5{ z@YofT@daRa${B|x%{bTNxTLX-eoL|XoFsckNL~-E2ma!QOtHd}dcB9fNzu-@y?gF#205Pft3izyuX2RbZTH$oD){1nwU zhpL&Bw$ZR^DeDVqW2!De=;gdKB&qS?Kn&SNQ%FQ1&GBl$sT6uhrw0?uC^_7HXLm%m zx$r1@#YyAEhw}Q{JY?>DWvNTSS$`ekO*_thz>?0!W4`*W`1qr#IvdhgnyxoV<88>c zH)@S<&|L~zV-4JEl-NjQkXjSCV$(k9F;Y5w8!?FgyLOD|zJm*RDn)d9*#Lp2vl@^M z!KyP-(}SMeDha1}N5M)6*NH8=NHs&PZ357<(!`;dACZ(?RC3GlV1*QxLaySJR3U6W z>q_RP-Z?F4igWYNXWf`drk@o*f=w%g^zwhOVpN0O2<#4Uv#^*vv8ezyiZDi%E46J- z`f@dUwNB~1nHiNB8b8iIpwbmU+u#&s0c_Yc{y06-+ym%^91b_TIrA^_3+Ka@hOrcT z;*Jfw@-vl+{Yk_#(diT9|J~Z(#I~Nlnx~1+Uv*jzp@nW#oIg|6?j4T2og*%GO~mvI zcv#$DPcUoU{Y$!=`~Eg`)K?Iiy>E{yzb6m#!QEv%B=;}rPJenWu}TO6p=o`PQH~g(qpK;oBgfgyE5511+FsZdjVkA*daPR@{ zWah0{=bF@ux?-)gK9`Kirn?vD)rIesx;w6z>|7>EFRqQ(#N6f(kfj{&1#t9nAGNHNB z8-n3vVrRtOe33DKxK)IJ{w_y?Oot*8PDW9D``9lQu2p}-X@%YTK?E-+TlC+T5F6M3 z#C_9dBs_jIB^<07EWO{f$rl&~WCmRa6g*I)N*1iS0Xr80joDU+oF(AaC&IXC2Exer z{^nle(ORJgq8sly7koJPe5uPXS=RlvR4q(KRR*(wLF1aln$(s=C%MaSO>GJAOImY; zg0V`j$3o6bS=y@(Kh3*TcGZzM`dL^-ctLvUROL1d6AAUJTRYOq_u*7nw^(*D1O$k# z)3RVgTBTB`QoLHMYZk~j>T8=^IjxGt5KHK^Kn1Q8$zfu}0w{x!mIGC!77|Sz`C-0^ z?)h;2Tbf@|xIH+^EYVSY_rM zQw(W&wHh?jdf1y;zVp-t{le>9=1X8%V5udCvRUp=+d?Q=1`4>?>=s#!0W_MpG7u^W zDH7RVt7h6IR2FG}jZ91zZx{qNVop0ZR}XXvuu8FRmwL5)BEu$T3g1bm@(HjAjy z$R4KPv{ik}?-ZP2Y5*NgA3^jZ^X;wZnd+FQ2Av#k&(E$} z(1(6aJ**;czL1>fi+f=U9Vp-)p*Tj$@&Zz)NB8AcGXq_afijIGVwV3_JoO<(5wjd_ z%kT-O|5H|a>u6o&j18Ak{&ue6`^jGW*~8V&&d2va@qL1jf8>{<7lr_f%X zua2?9RLxR>B2du(t7&X__H2BMi|Ch}b}9lJ$mrpALs^H8rtyMFXA-b*yZvl3#my&Q z5!eHCE>ILI-RqT_ZGZLzPAvabLLhH{Q%R3Jh}ELDI4G<Um*$VK2GWQ_ zK|VS=Z+c>*T^(2%hghd<2D#@-?YoV3g&A&_qJ|P3O2Uy^Z?A`5@cAUZ_shCx-oJ-SqVZdd~rQ2^knQ)7xElczyIXMBzbb|3UPNkXY+}wzVzio<=1ziFx1V3&MqlTe{)5_bDPamS@hC}r zZf>ya@DI?$3*qAZvggZS7cjVV{Pi{Z4`jNN z2i^60U)##x>-)9!RZFQ-E$GSfdJ3X`{AaZhuyXTPrfEPrL}BH{zYeJh!FJDFJ)&et zIgzqi^_Qts<8`|0Xcf2F)?6veOrmo`rAp~yNs)2`Wp%YgG38ydiBw|>mv`YB&h)lL zi%=tbX7}9uMx`)qQ*-K<573{C$l;N~dd6)F$PpZS zfOOCAw(mO}^!KNf!*V0e$>HZ~6XDqaiNI6!;${G( zcC!~974#kc?rVD+a2(kytWBktBaey~hR85AK5?AuIUSFcV@%zyKX^)lf4`>>>wBmJ;x&(i8`0&y3e`l z=nhDR9G@Z|3wW>jw(8MT^s{v7Od1SZfVCmTc4A>NK`ttOh68T|IhFWndho`82q`h< z#7}(x&IJN{bLgNeebkV97q^lJfD!gVjmw{k>&D8FL_?$bRfE(o^D)k)G~aOrSGr>C zTAHp;6@=Z=Hj^^ERbEdZ`|tT)#O4{+dg!=+lF#Dvh*Qu0Mtm4laXzT+N8QZSU)~VI z@YA|yHrca>t>|pB(v~ukfja5YsY@VUu*Q*s=}fh^TtF-m+fqsdtI2!>M1CGn;2xCP z912Ds3;=(JI$j=KV2kq)^D$fVaI)n_5^xZ2_MrP8?BH{<-{SKkPkW#Y~hK_>`k-}Y_{9cEtY2mU~ozH;Oz=N`1k<}v9;XB zFNJdhjT=FcZeWWV$J~Ei_PndenG1^Cix44EVA}h5GP>7sb?wZb*h0ZR!(j`NAiC8cg*$R%r5Wn0s!17 z!S4QlX&@`}f1J*LwTOSMy8mhsX&bCi(11%4@bs*$HSS0Vi@6d31++4fd_*^eF}AC+ z_-c_vlDTLX*HFOg9;DjA9etEGQJ}60C*Iz6dn<(*# zAV7>WN`~MWoAFV*wTxwi9q*RSk=M1yKe56LY_E^39l5$pM75ZlV(QU)9VE6PubT4};k)CsmxA58eL zvC1pD49xPS9iDtqAoYm~=yUqWXO39%x}pknE3}79T^T>H4QzPH3{O{PdLUsv_9NIouGb7mA<2=wc%oa2icyh-RIj4lVhq7}c7Ms;L)NcZX*>VTDUXiAO4YB-R4C=Yznq9Zo-EafTf zEXW+UtpmHw3>0`);9Fh;1K@HzUD3!%bBSaZ^_2EocHm`=sz7sTk@i?><lX}8Y6OO zj0cpV&O1d3`$Pi7_&tmNh z#+ADlOj;BZjY@Bls{^B@xInJNxU*&2B4X5k(;kMK2TJunqs6y~L^`3llj--g!@qsT z&2#8A#XZIr4l5yjJplQ7rZHYA)u)4{^h4DwId~{)6w6_eiq)!+Adb!Qgv%v^m@jlI z1$;v-ffZthoDwlwqc(=djg0bCV3k>ril2LC`Y5zBF|3p`wK6xI_UEGxdX98q9sz1X6y84z?F7owL z*B-$b8ROI{1H&am^~tFV?2XZW#VvSZ)ZN0(I>Kza5rT&u3qqqQS5+|H6Pu?HhY6#A zdfn$kXbs>+!fpHw4lJE(-8L7}Ws2{?EJr!Q7xkiWE2D8$YMJ#AW-imi*psYKoqbjT z4fWb~gCq#tngi$!Y=4%s11bn4JwY}q=p`)!m{ujEI7lhA-K$mbVpXcw@G20*D*Ge}y z2`x$>D=UiOmQ=61`BSVY-LuXkMcOY`tW>X7U#zO=IRHt?5$Xn-l=%oIqWYU}kD^Lf z9j>$IrYj9$AEDQp!GB;S%HjX#VcXTR& z+tmJEP;z+OmF^lqmF|X~Xf?Z^e@nP}_H}#Bgx%*zz4%Xr)woqiJMRmt+lSqUS?cq~ z39EfvQVX-LI;-IYsC!R(N-wGcSg?AlPQ`k$H^0e9*+}jJ2AC}a8scMxY4HkB`1=WN z3Xd+iJVTK(Y&?&P`q!3Ezd_^PhST;;pwU2BSksWs{#AN+hyTI2E^wgW(iml+2tbI^ z(v)PN)BxAlnoN=-QA57S!5vX?Xs5Lgig1H>tlNJEi#um2(-@l>%{c;N_;Px&ySNB^ z@EA6+V$wIlNex_GJh@+QBgE7_eq===>d4DZvdq^c!r9Y`-oJg|RXJJeo*8vI`yXrML4fBT|Oc{En1G^H6*pyg| zxc|tQZLM}9vUkxa@IJizH%77NRssU6PyV7c^$v`Vboi7;%?xjT4hw9N*a>PK&^w-L zi(mrcDS{b{zVpaQlobkr=EQc(s?>9R^4 z+?EoGtxU`qco?@rsMJHiZhVuBR_&Q5uK=biGcdckv&r&GU|SQ_w^Rj&1X2_gTH>!3 z6p>v~IFstn))}Q6H|+}1Ro}ZQ(ujHDKBWf3a$#3Y=Yb3nX{`Z4+|Y=ohzJ`@aw#Kt zdxL#8SRSVR;b@6hQL0lcYG9EMQ*ksDu4%`PB66fq1IIjT5 z{3ds?rpgN0u`kqf;S*FnAWIvD^qk+KU??qN`4p`6q=qW5X!_dFqbpNg{lAt2?1<^#2D{7cM)5DQ<=t7In7#6lk*?WOfBl`I_||nyeOv(j&s|;Hxs_T#2yA z$iqz;W9awiJ|el&No-PDF9O;RqGEZiRhZ287qgbfs8yE@IWuZpFNWfI+a&Bu##6FL zbLf(y`TB3|a%psP6wpgNhGtWd8sB)Q<+|a=Xu1ZqhW(Y4w*GK@Y_&?R01%dJI~=Uq z$CYjza-(6dOxE#hGmIT6-na%BEANW17#^M)%SfA4fS#P#t)I3<3LskR>tH$R<-NRC)rbwxZ-rEiN7M^G3an$p+ zEB~(%d-&RFoX07p3F(i7-^UybNJF^yi#FeYP>$U+F&-tVLj!!Fzp+NzNMX+2E2)25 z?J_cQhWAh%TDM6fv@3P=M(+T;_WAZYLD6ug6*d!-KYqjAu+KHdi`06{J|=dUWunN& zZNOBBtrH&p9p!wfhfsaVn7&Y@kdo<##H|n;XtwKvDAsF;Ri~}*MeV}_H)cbS!_r~9 zX!_&M)b8fL;Q~14rZjV`xlJ;vv@1)Q1{ar=-{8VQny(DOkZtwy&i39x7Lx8t*0`>n zEi3n%p<^|vCXhJ4DYkZ>fqTy#kx$JfqlM_%a`y>i#a%*lLudbF)avchy=XO@sA_iE ziMvf!2#!cRZS2b(xRwLCH)#*(;_XVRQtqvhRFNdrBv+|TjaeO1T!#^l+smc!c@4!o z&8M~g>T`EyRUX$ds6B4UGrMf2u0!8jO@eF|;^;o(U%LU;Gb8XCL$H!!fY)fzSV;!* zfcf~*TYcCb_-^uo)-g}JRr)8azP=JCEh2j1@BBP^c(nr?B>SEO@6(7kL8G<|tL=%y z+V0k|#VsG$`i6a3q<;NhUJuH~!jM*942qg|CkIZGwxtYJ3IaOV8ma;{3=GhQ#!5zAqzd-C?#FzY=ZR=-h}X)wT;i!rA#fSM8e-H=sbh z88KJONjP62Yujs6a>ZHTkUIsB@*JrE(_LpTx=Q~N@|PBIR+i(bqbIf|Z7fO7#dmf_ zZ<#&uDGVz4VqR~Vfb0Stco`5;h4}ccxAaoMr?M1Bf%?w_3dQ+0^3uBCQ&I^*_I&;;Iy*R5V-t82_I;PdfOCsuGv~wRFnlop| zd!*rXQmi%4EBXX=X97)0fE_bEMK|l)y&&|RIkpylT$ zMUdWh$Iec)m9@?BC*M%0kCQ4WnmN_~Fa=7+TGT)to5%jwk~;jx0;a3mX5~I-uO%47 z{?+o2l*~b>rm2T#+l>z+Uag0-XUj?Bty~dW>8VCW;(mLeWmQode7sTxeM4?=qS27U zQg!0{p=JtU^!@sN2{E8Ob>YL4iL$2jfn`?y@b-aN@}W=$hxRyw2nZNn9IEbQ2_aC@ z(u^iVKGT6g7ATztNfucF4-N0nIKrQ^3}eE~7HyVx9Jq88+6o`lSr?i<7b2=3j{=o} z1)`L=j?9LXi7*nHrH%>p>c~$_DtW;DjIVLQ20BpWRAH`W<0!%bAwwSIQ=&jHO4mhjxVB8V0R@Q`-_~m) zwrtb9t%(SQhR$*TWr776**vYeh&cXlb%D0}C*=aIj>epGCM71_XnW<}SChp<76jBI z)>!mST72`K1r|WMwA4aZk#6f)743+%g#?nta65@Nv)Trp9Bd zc^}~%z$c{BZhDQOpzcSV`d$Cj;ZSlh8=VVY-_nnx>dka%W$Dv*y1kY&PjPxJtysah z<<5WJ?E0FNIV=Hmld;)qX>>@DtYL8UhI+!|g+j5YFSuZtzCZuPAyFE0WIkl41n%zp&P(CQAaAJ! zlXr$LPG}l4wbYIR8US9lxg}AG*eCHPCzLYsyQ}bj2lChIw*$#E=UG4 zATs?JPRctbfy4${P^)<OpGapcatEC7~I+f<>}!#)0lF- zfQtOZPd!L*$%KG4LeSDaqMQ?!#HtziJ6m>J-)(Tt5h1tVQaQJEz%d`VupHG+52b-6 zEV?54tj#UqJz7?}Cvg8dFrtru)z#QI$>l{)WZqn?S#|=X_|BF$|8*t%uDYki&iY!j znj+JRlqD94Nm5q$T(8o8Qf(a%zP6@Y%p9yEsAgMyDMt8;Pg9Tp95XTrm@~Bv z(UVYHKsrx;m%Xnsn3JzaFgdg7;F*v(UnaX)(pzyrG=352SnL*XgT321A%ra z97f=lMzlRSJsplO?HvKWeRB|Ywl_Dob@B9kKJV=GevY=LdutGOwt9Zf-oL0@nU0?J z(gmdG4>n%ULkBK{v%+k7NqRgzV$)n>)(<>M2H{?dA*qc|Xyx0zfJ~a< zI9qhGq7$Vy2IfAT@cU6fo$H#xK7O>1o3}H&`#E+2lB1@4s<}goKf^LLq)3xq1YqU5 z)*##5piZZsUKkT#f>%D%Iuo%FRQWpNlgd{MbbR~yb+v)H^0&&xly|uTfe2n2fW3R)D ztPDow@h$5mePpmO#SlLf(Z4R(2*EaDNX@Eh@%R7G-2hlBkI{(>OavLz;V1<79oUAeh~OC8Ar%M-EwP<{D)$I-Il<;Ts}(0OlO6lWR%=PwNw=53wA;U%NboNS)csg^UP|#S zNeeJ@O7ZYfDfPrAT4cRF5|)Lwd_lBT3b_U18#-Aavj=O(Fk!LDKjGp;bbfFf(YJVx zgqQNqW0MPd!pn--AIq=%A4i_{;+Hrc9gs$DD7oDadh|5a9y~X;PyZ(1Nw*$10?!!0 zhgvCnbif&~UcAIpXFIq{*`)%DL%PxAx#&A+c2}hGJF4AwqmeC^CdN8C4~Z^;fcziC@Da8cvIXLsjCo}F=Q z?6ra7S>-RjL-#Nvn%4hoTPekd`<790SPE*cs$?@L;R=vxFeT+tS)z5G5GbP3K1P#R zwzlA2K_XCt;MZ2%EVgP>dE_hq<@WJj@uwGCr_xxlJgKZ;sjU8gv9?qOShG|)V&V92 zJdPn>SXEi~|NjxtB-&m3FTm|#w=ueCmu(rP5y5zoHdj<qV;}P1ML9_S# zK)&(6s{rkS)h=&a=ZV}h^O2*~IGzcv+_}0(LF4xvk>b&2nwO*;zCXmZDO2b4`+pXM zlZdnq8}4kb%6YZSSY_a`8{HY;CeS?$V)8fL9C`3#+N(A193CvjYGR+c|QZ&Bl0V-6jINojp=o&l{2(O0WJIc|3st_Gkkj zP=kHMO3v1nUz`Z1vGjD1Nj322qwLiv^|CwKT!IPlH1^Ts!h78+OLsZre2^f# zMsKMI5czjG>FDyBiy}WaI|IrHI6CsE&!HEAju+&Ii0D!0A z2S0BZ;yW^OjX`FEx#^tu%1>#7#k_kNjo9d)f6-c9tD(Qw^HWrzvyA zC`3U69~K<;SqzF?DmeK2|AS-sNF&X-=TwLVdI}|-%;Uzo*1UoSLmp^^GDVcKt5e@H z5NZAga}cSszr}`|p5}TzmcyF93k`$l&64x0+xZ}MvIStas>*e(fpuauOv0heA{XF{ ze}@((D1L|Z8S{ub{Gd;7?iT*PlrF6T2MQgOiIX#p(GKOGbW_`YV+`HzrFNGjBsi(v zY0Ty!zD2S=N_3qZ;+aSjt%;>YQ=v#m$+4lg$DFRqibm0m%>lU&MLf)zGtIuo*(@+9 z3kdS3?e*elII1-ol2Xd}7i8K>Kv94U>JSQsj$L5fo;@{{kn2;2<>GV2YfEIA%m5;H z^9;Y?$cknbK>f&h<6RG($~xKC0BVCiudWYJtDXSWXl>DNXuUyM!ZTng0xc20bd%Pr z)79Sf>LX}i#6jprj2oc>ad9;~y5m?E@T?CKt&s`lE@p+}Ac&O0=tCcfi22jgXJ?3o ztbr)TV)h=B4#xWF@b^_uS}FTfe0+~y-iVsh-sdJ6AbKaG34&kVG%?YLE;~Ta-mEtx zQ=gol-q)sf&#z`QpCu6J-g^@xlv)eYQ6LztG>)=@4u_9Cq-@9SbAqivOk~1U$$q~>2#xQDeLEgMRbYsazg$c2Ahsw!f1cBM%C_pMF%JmW_&tefJ=ZkJEL zOZM~>FdQzOjDjMP90U^Loq@vRi4DhrPs>=yN&8u$H476Vpp+4e zXev&eFOdmKf=l813122grl!4>6EP!LJ_1Y~fY%tY?#&xCsqP0q*XJDmPm|S%;IC zZgf&3v>0w7%hGK;F;zMNfavhlnj_dDvU1QO$v0Ve2;0bCc4>-wwAklN^SPgz#g6B4q43>G~(@$^AB z)Kq*4e`+{QB>x+WM>yJVxdZXr_{QfVfOvnKjN+8{4!(|c3+A{;wvZjy11-N3|Ge`| zU>AeET{ky!sDfnfkXMgB>Ch8=TUBkAdA1c7)gEJ zC$bbIF{O(S0v5lkVFW1=v(%fxxiHw2{8W1!X2G2%(ih;=ogY7dVATJ!WY2#QV8hAD zYx?Wi!S4MFiOv^h^36}>;}4Md47H<=xPO#9Q1)=^tKjRie_}dOba1{3l$Aj=qXd&H z7L0=MWhz8~e|p*x4FR-~tUy^eZADcG59j+zWO&_#v^vS>iQL-6pBg5%Q3+%S1Tvtr z%f6Ml{fY)#UHu`Y<8yjed6QkH;73ZyWx@%$^Ru=1e@hK+2 z@8LM+N(hE;;pbi#Y?;j|S)>3f(5z`x(NPAQjrZ40M9i{vRtk>9r7rj`0t;hdl(Ow< zM~LNj7cs}C`Ec3(Mi-BswItLltfxrzk*i`Aaq3td2%i`VqMS*f40@s0hrx5`4dwfGrl!HvUr%ZtHxD?7Ng?tI|2=FAS?w4=Ui)4I@32vm_Dr}&AIP$Y(DzYF93zJ{=r1Cuvf%5@zz{YQRgi;g)YU#2nhMvQk`NXL1 za=aaj0%@gB5*K-Kqa)X|Qtw^E0!CYv0EnQXI&*ohU-Z`sK;;mrITkTJv|1Rnv_|f{ zgWmc?&Uxj-ZAWv+4%U^~WdZ(aLu!AoOPTs^Ln_kYA4^q~5(823z-jrAx7pM&8mvTD z6YBBGEgQAUQpMA&wwYMW ziBPK}f2FmiYW|j)T>=t;rMmE}XSfZ_^cU89+AR3e;Y7Awc z9vg*CqELy4rJhn9!a+`9p~p#o$crf!7HwdMmBjOON6h%bs#f6l zN`|a9+j^h$y&y+Pd?vyMoX~&H2lQk0Vwu%fW_GzU*VAsXNFPb;AFkY0T-#NSu-Z3f zG1r zt?H5aXkAT)2=KLxFz`Dlo$1Y=5B?gJn3oc6wXe12U-2CTXd;n_+lnI*{=z!2Q?GM2kN)%75#F0nwlWCXVi75XQ%N~ByGnM{f?W_pYaA7P{5Q;QamB?DpB%C{ z;O8$iE^%yXs|EK(3POB^sSPCByH$6F6;ucGqnL=NB`?=7G)Sd z;V-p7O<*vy_F4>F_pT;LN80S^oea8Q5*{6)_dy(tyM|7~9#CNYu>6elSE~AjVSgW{ z>p2vk^^3u?f%Q&LyS&UVt&6i|K2Fj_fD*Yg$#>e7`$cQ}mQ|)Fq-c%K22CN!AcR=D z8K2X+lopo6TfC8+&5aalW=RHE}WiDC&#GV!Ev>d)PI! zem@T*6_+>L`n)4&iUZI<(AV_{U1>N915Iap-WQMJL>LKPQT6g7#NR8QK3CoO0HIS! z*T#enL`S?1ESgaHEnn|#iV4#bw83JaS$M?2F#(diJ@1+OwSh|4_($?!zJlYYlGFQ- z%~H8cLaDd4>nu*)sn%rgt)<~OO0}HDlSeZoMh|C`P#+)G$2LAnpn##z@zV#fydtag z`XkQ5G`ZFkYsD?fel)!I#*npCz^1Cx%%e7pkHv2^-Ur-QNm5U*%Zby&>s4rO34~24 zKF;3I;1bU=JRY!9IPD=+Z6GjI&fD>Clc&d!NN;q6W7$=bzppeQdHK}h*D^sqJUt^k zhj5qM*@kQX&dpiqVlP~EqpAhcsyahTfaW-c;OxknC`|M%++>lzP@2vo174}JrXJ|o zu;{IwG$b^a>29{^I)ehGs$OjFwkbV!in-<==! z0xqbQPK$FyRmh<3Dd}+ASZnZe;ae?NHJ)$#;1+_R?MiO!>*%W0@qQvm9R@`>)OF>{ zAJtUaAIW1JB`jB?*d+^i(#!!-g3Fv#(%)roxY_TsDRdkLE1Ex^quMLSXbE=bU|C%l z4Y4L7a^G%QS85$S2NF~q*y5GHk1b!1D`y_LOl+Q)u?Xo&p!{!8!C(~#Z4(Lk90 z0kUwQr~x|KNgFNb|Knk8)rai*Iqpw2Es!QnE!rmLj0feowP{VLQ733i;%vM<@d9~( zf-8|WvwMFUSxX`fwfmlc;O?(&VCQ~0Jg-bP*7lhDn8hck%+RGVPjD6_&m_-iGQogaM7lo)BEe+ zE_?7P&kT#P(EMhrY&se?uq^S`oA=}C@`PDOAuLM;W-dR`Af_pJ99*YxLir6sc`p^9 zzz12?9}~7o-?j(w)7B*1`;KqNDvm@oiTpzeQAh5ckl2A+7c)heFjs(k3t^0#G4yS8 zl+OPJWOP{=Y02$RGQMgfhs3@aN1UMUI8>a$3Neg96K}BO)e|u##DH@6d-@z}+6idd z1$UZ7t}!wmH=I+WcF79({GD$4v(^>R5l0h88O&-~O`onxq=@Q}B6ds&W=Rq|H)iYv zzwJV(zNmEGhjJ`}BGP1U2?m%zQ)a9j?N5I0jw}I{_EbPdVgbF?G8&qK>V+d z0mi%DR3I)pEN8@6(v*;~h~d>X&8b79f$>xzKV>6Qx7l8Ra`444ZDkph*PA6kBLvF` zystnJ`1eYEjN2H6adg+2nTKqNTm<(UgQZD=8;p=cK?9S3rJOxlzR-D z^){RnYdYM^5T;-dUm$me1H}QT({3vSes~n-;584LEyH9D8@Tza;Ts{!^i!GiD{{$R zMf{Tb+z-bT$jm}@`IDrlS-6>Ps5!hmow0kR5l*S{rvI-o+Ua_xhSAS1kqO0yOasqZ z+lJj0NJ57W8#YzizIdYB1YS8WkvQSb7e$-xUu&ofYj4RL@aGe(IxZLhQpJphWdvkb zQ`DEfWY+w`-?%ZY+R?r1(H5#4%97>pX458`SGD(u2EQT;AJ-0_x&P^*MfVEBo!LxVyWAZAQeWnsM*1X_-PdD6lHrU+lu-bbqo z6CKX8)@o7Mw8s+>U?~ZRSLuozC`1wz?8oS+t2CVsA;%gp@aK(&h5ChxG(%YxYE|hx z26abB9XCuRLA@P2CJd_D+$1%DU5?^^Y%)PuF0x}28Z@XHb7qu|R7DwCw%ZbNI!WU1 zqqc?+1A*4%7JC+Eq6pz6tEUWeFionLboZXW`>)GUCxljlgd7G?i>Ir@NCj^kfU=na zr5200w5>%yte@=yjkO4Ky*Tf05+2w)ar zQ&F?OR6&l5xbR84Ho9!u;7YIK*0mC*DC7J2wM?kWvO^9xr<7VP z_3MI~`bowTDU}qURW{(u?3JrHS&87B4?|-e%o|OO3qePqh=GRHb7yvt2%`9no|Om8 z&&aP;0-Cd2^%e*i?t(-jK_n{BrY}X^q$|TkzCk*x0NoQ?>pR=^A4$bjUm54?mQ>pa zCxQ+l1Y{`>W$>7Z#Rwj)n>m~Po=@*+%L27|Z*}`c*CquRdCc+pBk497wn|H2-0Bm) zb>C-4^tZCkE{pED@@N!l5=|6~^xA|pbWDN=Y7zozjAL21ZwOi`9Umy^5~QTGX-_89 zo`Zh^|AXX)e12wY=ocGdFC|MQa)D1k%q%9`DduV$>gwyWvp+m580#YD;wy^HCXrQL zVOf73gw-wJ%skBj)28ba&JffkQ!GiqsI`M?V4lBfyI8X-nxTuFt;2|GhGG|As@jho zg)V@|^gx+G0glK~MfT(jLrSGcjtK;0{6Kj3Rp_rdWPlMASmbC}Und;KFc1{lAfW<$ zh=3FSD?{wOF$8XqfVMN$vsWj4CRNc}(XSN+@7Og!;-PGHJf67SV|q+b!aWiA;xJlX z!m*@KXJ0x62muMwk!c^TxWjvHJhR%JtwYCZ!pZ92<5-_g5q$i*!Kvo(%`-isn&uP< z(3VxF)jT*v68}=dg8YNnq$e04Av9G2+RA6xSbSnHAdJcYnrqmI^|mUB^fi!D)~MWq z_(eQ`!WE|=GetI+aLb9Oh2_W1PVvU$Kec`g_ZdRE{8LW0M;$aLyi!71;q2XMAISz^ zwG?LBoD)>SlE3=Zmkc(34!CMXx-8bq0`z>d@uM>unBYNsosaRg%&P7#Yd=z40-=As zhv^n)jE5{t;vkHQY+}g@?yy-w_h*K>7N{N|k0@HT9FpC@W1nYMt8^~QO8yr!(4Xie z0fcIIC=F&?Oh*HZ?QC$#Ld5zaR>aB=p?y0k*r6@AIx(U0!gEaVX* zp>rmj^wr$uSXta>L@I-S=D^kj6SQ$=jbC93`w{pT8^}Lg_!dgM5PK9FL6_Q#8|le_ z^5ES$yt~3{hxb+Z8GJ#|`CkHaBV`sXNW&#F!t+y!XA#;+VkO1 zcQyzBq=jmJByYoOpJo$Z*GDnf*|vL`&wNls1TK*WPY1P4+-ln;aU2iNrvCnb*pN!x z-8ww9rYcEhURAyvhVd{1DHU{K#kF*R71F^C*z?4!k|0%_T3 z2^8C1bTF62m%PnQ!T99$YZ!Y51!H#YBU$#EXt3OASU9Ee=N3*yQwz!+eOv)_u+3pW zUZahYLk7>Etl*cHiT9;_^XrhBf(%I04isJHHnFJfS(x?2sRcwlRzM+P+D?MFPZ;%f z(|XJ3GGq5qH1_k34Gh0uMbRxI_B;Yh76^f%{NaRbBUFWlBX!B`x@Y=0Ve6IL?znMV zwfA{+4f5v>bqO91oZ8WeLof#PV7twf1x$IncW!?~z0LpRz5Z+)n92XCX=r`O@=3Y+ z0)3P1kbQn@@c<)VPgN#gv-BlO7P3+pwb6WUiDMfh_=V>^EAP#E$lnY>msF{HlSMSj z67x)9=I!5FO6#wYQ}yWGK4xEa=iAgh>MOkm$5E0gYoX^~h?8?=Tx$c6cD%31QQ>d(vy`|0`#$IA5r%eb z0ces0Qo}Y+dp2v(`yc=m=Wh~JPBkExt)V*~eV1F!tQ&3JZh;*SI3sx;jSd zjenYdiiUZuBOSdPy})?BPxEBi+EX%ohqke*aqSR(5|_TW$Xy|9&8flKtq;am)S8<9 zLdb{MDh+LdMs+uge`$TeWDyvwLQ*NbHdm_Bj*J15!9?VoUyOtC)MnvO;ocvU!%(O{ zzu3WEwNJYpwYC7}tq&RH9Z1Wda1`lxIJf4z#0kIs&LXdF?lTsN=fZH>nw<^6(`vf# z+jjKQSgncD*oE5iHvKfJ)k9n&%~M;~28Q9UYqM1O%Fjo+rP1oF0O|Yx4 z(t~Qxz%*m7vdQRp%h;$Hqe_wrB#=zpxg^`DtzT@DHfAij+HRk0J~0H$?J~%&G{|(g z9fTGb(OYS}K7 zvqIwX?MG*@zTCnNGr)(jM4?&Ii^J(o zk+IjfK#$LpZ`EM%Dep#;XiBFU%;|0Y0B`lNdjFs7gd=UP4FxSN$rp+qV86kE)bpW! zYEj5K`2rfnds(P!g9y$BUl&#a$(f1=+LEo|)Ol5VbGj#zc&3qjINH%Zlqdv0{&t+T z7Y}M^e{OhFyM43L&3=RR0>_jnb>p>9c}`h~yfD>?@16JlgHUz~S-4a1TO;~-2ST{Q z<>$cHfxELmdguMl2D@hlkgEs&&=(hY8A_C`yZLYDq5~gVa3jA9eLcG797#!F#9RcX z72khy@zUM8(jA5$5MUT*0=g%Gb+kq2mB(jn4>!Bx{cqROU29nxG72uJBH5PfP2m0W z=)lJq4K)QxLZx{hO1cg6UH^1TWhq%NXNMlvt20?;`n0E7Lla32m_TumRxPQD;Kwgz zF5lsmD9RNPW6Y5tg)k)PA`;xZl{pO)F={p@4ZeqoL7_dl()fcX%#|UyeC)mKpDqNz zl^l`ULXN_UZDSd}_QQsYP*ICu08ZCbByN@gB2^pBTk9k7f4j+Y&&1fqVTwQle@hO6 z5dCH%YkOo`b*X0tq&lFuF{kl967Bc!7^bh~OxP+eKovKk2?9wY9nj(08qp$Ns4t8{F%szC}O`}2Y zf-ViWYR|Ad4O0ZKr-F|rFSfL|Af#sbJ?(A8ss~EG2sVQUz(u0N{T-zC>x%^Po=q9H zj%P`j&qGB~GXq-%Tf}6a8;vQNHGgEo^Sm4QT2n4@j;W{d3`DQ6BSF7D%XWJNag;4q z;?`)Qnq8~3b;+#75M^>elLxjy+Ks3D=h3sY#+&}2Q`@NpWues+(5`FX8M*O-V5W#z!;o_ki*vdQw0|Cpq z0Pj=u&tcI~E$e#E8?I?DwZSyUU;~LffaQc!?$Ji#xDM;w-vnXuk9eXlqT1vapC7-? z8BQZTC`9{Q(xI{Q#fd{S+mu$vkg~rknz+U!BK|x)fbXmo0lz&mwcN~!34*$g8S>>t zsQ6vwJ@Gi;;VD#3zn`31L*$#dSL;mS@uqk)c^khG7 zw9&z8Ff4E{;YXKcb3#X-yM%bVR7QQ$l>=df?CazwG7Y^u6c|f4*@j~XM|5WpR3hwi zuFEP0P^N3ek_=*)d4wAney+AT16F<|mbKYD=N44&lACB&Y=_PsqEpM2G`|cp^=%nc zI3s3Ykx}OFQ%@Ll8BfG!+p!8vb3<9ujQ~B;_EXszP;&DRN)0X;mB|6beHa%P3uw#QqJcLpeNRmxyH)I2sc)XS~y3_?!lExk}i2{ z>|ZYt*O2)wl#AA$R~@M_k{tPmY{~#n>Z$*g5L!uzeOK7pBtsBp;dm^PYb;Wkka{bj zS_(|1X&q%vY-`sy{7_uoePQ*~t!bHzd|iQ>oS2d?ud#cSW6b z!)Lh+lmmT0N6=+ zB@=CecOln zs;yP}oa2u$FzZ54r*#j095rPDjX*VY;5DKcvqhjcqQ&y;CA^*j~+1He862b;(Xbg?L7w=b-7e0^(4Fh?ZsJ6%ZJOn1-NvYq1=|2hOh&&PeAD#p5P| zQAz)m1UQ5@lh%c;H~VvzW0ixQMOb{HRb~PvlpuaIihZ8v#;YfIwc_?u05~_lT~E+l zynw>kG-)x}*ief?`25qj7PMY;OrD}J14*cI_&f~10wMjyC9a(%-PjHpsq)X2oA(La zzrP5v8PdjF%m@aSZ+VXy2D{U@9>+$FdgF`HW{FOj>@>Y_{KQmUY#oEWRS=Qif@(+ z>;Roz?rZ>C#pPTUAWf17AKotYEPppK&80s_DB@d{OjwnZp@C%S%b5{qF=A6}qL7kP zA?RaAWkCE5{+q|PTt}fCT4f|qY8Z8yOR1kk^*wpUyb(=;t#QT#TC<}`x+UHfgKO2q z{1jjU+deZtkLE<}tC|@!PeWU!!Rd}*P_D%7*PPEKElu5&(gD^4Ufm9W(G}d#bx;ua zgDtlQ6!Eks1r3zxYl@DBAyvF*?dqErYOmTkqXg8LQ5ukq4yn0kZng*lwhTYOuq-vI zMVc%XJ8`R}McqSJXb^8hVBOF1G^_!yb_^iXf;Fp_2Y%B?q64ieB)?D=cui@qg*DSI zc7cocUcxqU6`o!*9~`JydaK8<%0dU9ZZ^@?ixDzDcVM6(cQy;9opV~LjcQJ@)3xiI z){!EF{U_OHlb|6aTY@dUlPs{)Pp!)&eMnkmNWT9p%W|S(S@2JiG5=Lt4ua^aS^^-) zi@YgboC;CM;dRXAhx877_tDysGx0^tf(_MD53RQ!UwjFAQ|75%WO{9EvlBd^%mp`R zP~B&G2&+cX&arej81dDtA(brF)zQauOK%eHOX)upFw+qP}nwrzIVQ}4ZB%uLL$iP&)>BjedtW> zek7hScO*krfL0mnFiKK;>0i2S$=WOxzM-&`ySh2HOUW$8_IKWOghF>2Fw5$iH^ZAm{H+ zh#hNz{LM9OJN}P*+=x8$+P>eOU7YfzQWkR$@(h>h`&6Tx+dx#5W>tfN3NTHFm50iD zbsK74`97C959Z_`bQihK&Q&fgq$nVU9Z74)pllMo{u@JDCMIlMDxHpmNEiGcPNP!T z5;ZRM2!xH+G6?xHZno%L#dw#y?6JSZUjhdV8eL~x`m`V&hM~);R9d`2GJ5xKJC2wx zWU6_Fi3WzxM>_z*vX!0v3BdmG?DJjCQ?9+|mfIa8&7MMj3od*N z>cVN#`(B*3(gWRcRh-ztQ1pxvk8t@Uj70pYveKQy&oAh) zpKT>Rkb$iWXJgw!Q<1g2i@c4L1-3F?BD|&j4~qsNQTHiU- ziZNE>A3#fq)szaBPWWOW@DviRCVzr9C|~t@neMn#y^XlD3y1@a5Xfr5n6apbjz86T zppCucMd^spf1*5>x-ap~G$Dt&;XU+eMf}w6McMba23Da*K2S3f@fKJpn3&+}dnlFT zeIj_Ze4=!ZeeB9g%%F*y<*BAjhTsg+Y9cF!{`p%w)yH`aZ;? zN>ua!Q6>mp-rzw0T$CaJH)ic|!Zih5*;d*16&tc1g?HP1rix2ZGBiD$8+D3Z7zwN@ z9qeWnp=U;ESLEb<(bYekg?ZdC*_;T04m+LsV0F%6Fu50So8F2(wqSKe zeXNNN+Ylc#$2qM0#GNoMme>D@kMmtMh#t0=roNiH;ChmP@ql@OB!RWu^W0{qmodOa za=rkqCMf|zXn6kI?&nhO3uuSPnPLCShmY>}w7%w}5^W$~VJ2G+1!@lt!K&m)Q$y&F zbvvBbJ-n=d0N@a4gmRYv<~n3Yi(@pHlsD6P)$_O~Hu{g|oBh1ReciL~K&&cvk8^75 zkO6)~UU>k%>6nfcUQ%fy^9{9WL>WLn7I=mVor74x&WCw4U@_0oZ7jb7jYPODg1D~; ziVD2Sr@Wl8>7W{nCXMdzbcKkU`v=#b=8ioLCJ41CpKt433-Kn)uHV^>`dm<-tHWNn za>LiAcGP&iPT0&(z?q};Qny|sMK+B=>Psv+o=QvT%;PqqYckpHjN0%AyaE6=uT%F* zS_>AawCd+ug>T}6DNu~d=Yew3co6Sj8nc?axA{*IMzN84_d-i?pYX{ep}b2YwB((I zT`X>%T(`A)&2g@XGhvrtLk9l}QfRR+UH-A07|gQtpesON(_;?ZY+VU8EX?~aM?j{H z%hLD*#~kJj#y8++T}zW0$%O%S_IO&}|KG%`6 zS#6+Q@kDrHh_b~B^l|>Ybsf{PVuKyX&kyGnMhQv$4vA-jCzTn&;X0mW9O0;MbTGC! z7@Z%ED~ckP`Yo2s7ENP=qoIlAl*lOdKLaH>&$_iZ#P6*$5RZBm!3@ z{cm>5$(E9*iGcQ#*w(Q^Ql<2ILm~ks@}!FaK4qRC9v~rFfZ)F_KV9cM@3ZfE35d&J>1=^TKulN+)4?zfcBQ^^ zfY3f~&sSb~Iy=(8aA3>kKWCoz9uJY3eRwscP3JBi&PwdDqmKs z5r8v@oIN0p?}tq$WD}Ci1;z5}dYScfn|t3To@K;|Z6wBlD)7JP*iNb8z#OC@1;I2G8*XJlnG|L_$XX2g-Z|lk|an7#-}Dw2};Qb*tcfInpk~4~66~ z87OEYCi`lYD;jJ?lFN;W1IF1ASm*x`6{JR6kswn}`~Qc^G|tC3L=6SUAu^4kg%@Qe z8MQgWT9E!BkVyNU2Od0JKM-f?;M^|_CZ?0=Zqox7B1&oy4Pc0*(Ia+&)h`%MLas!d z{P82PO80aaq5afSzc>^28%iA8&88nL9nX;!DrkF?p+4ocCYto5fN9F$oV$6WJEhby8P2q`^#WN1F&0M$o6I9;Y z76jTK0?KBtdc$rB=yV~ldc;FBHdP9s3V^gX6#s!_RCb3uESLZw+X<1RY7Il|DGa-; z<k@Ifmu__Yo1phdF~D-@l$y<4S( z*4%=c>y-0=`0H3UwmdVA7z8sXW!f-`-2=F?>u?R77-x)Rf1!C+NFkNv_zl)i;b3K#}{=T4kWIi=zA`emLt*Y<$yS&TwtuMih#?FBr6MQ8*zr=&z3Lf^v)J~K?+FZ zMdeTc;<6a(XeA~mulNz2xSbVp1||b2i!J7{E+PEzWtE{V3-To@!4htcNMOu3uKxnC z!=$8xW>eqULLSRs^h9(M3fhmzCaLJ%A24UxpQcZB|5Qm4u89G}Eb)B#KP<-~Um^?@ zR7#b-Db56%(ILFIoVk`--^6Y6BC6eS86IG_w(v;&u&t`Ns*zDkopzem$`^i*Gel-}G3L=W1I# zHA04CbT}zTvbOVZofnYl90KQvqA!ujA>~Vw3cH*p|3ILderDBaQf!jiLrQAsnt7d* zLd~AalE9f}RhLVI3bL+fC7b-keH?%`(;6;V*-F?*lG&c>=pV<$7D@TvOf=DnsaKAR z=z~gVg`tm_hI7~G29LsxMZRfG-iZqhe6vSr!E2`&xffv-kMtz=r1;hh5`RLUKjEiO zob~LU^2vm9pE$zAv9dUM%;9MAn`uj0(0wXodo)Pt%m%fv&W%W?=^U3Aah-sjUIV=x z9Pjtqnk=M_G$0;3dZC>^D}ffAH*P-c>9Xv~RCapo|LptL@-Ex5&bDh4T^6kU)WU}> znr8)?_pIz53C=y{9W%(iWgB=))|O?*j35LP+0#ra(x*mILgx&Bb$jdLn+AEw*7MrO zU!~2d#9Ma^nJWa(wXGIf!2ko+lP?mS=m^PrJ_1j1=Ze;6RXVfQ%Gj-O?Vjz6t*#3g zkPyJaN1qHR_x|iLy>ea=6Soj8jLM4hgplC3jhTUDCI<~{&}>ql@MJY;R0qOeENIFw zg|W8~x0xdUb>M@c%L;O$Ne;WNM2JadsB9sF#psLOJ(x{ipf{IJQgQ*@U)03oO5|Q# z?d~T+H0_6j)D>%l!@5jNK_97K7vFP(VOuEF2{jw!R{kP6x@M>+STa;LVJGl*^#fZh zc-;HgN-y6klMdl3?8|G_}?X*<3}m$Hx|{8x)dr5Fbh+PfffvPil;sV93Tvp6o~ zi6Ro*EocUO9lG0w1&< zD;e9|nKb+FUvn^>w>U)tG8~fLp<+lWVM6im&?V*DQkA*zMun<;(E^1k$I-56%O+4s z3-c;u0L6rFh?}q_?L#Iony6ngS0OknEl5M`*?Fm?p-js5t<8Z#PfPD6Mjb@5h|NlG z6TEgh@HT>WI><%7DrI6}!GWdmZ7Dd;FM?&}BzY2qT}`1f7{Ya6Um6on3Qcr0Y!Vmh z4JByb*^tx#dnutpf_R9BL4oqfFR}yOi_;8HfP!xMl6=A=ZlHWA3)doZ$hb>hSs+!w zNH%G1N&$AR>P1But@2TkH3Dsvz!}(q6ifo<@GzS$qLyzFESfol5lcB5T$KwWlCxiB z9$Yf0GYFP+*}^>Gs^UqJ&`U&l0ED_yO=a=aWZ7dL+|y!Gay_qkxs(Q+q(vi)ry?FY zV8c&t!VnYFS>z^URA6JCur{xhU6_%(%J{r;N;r4TxIvGufEX=FQG?4Q>(AXB_3ymJ zbMtxu+)AR1Jq>260;~)IiKX)Lvhg-r6&c&AwDsVB8uzC`T}6%QRM_BGAe~WEcbN1| zcBK?>YvXEoR~bc$zpt#YQKBN@hYm+G0oGheK(TYjQDf$QD{KZNX)A0tR8F|6xeN)D zRvF9m**5F!WppN$V3JbY%Mm7+=>8M)&k7ZeJ%67rk8j@q-(7GaH8-d|q} z?q3@r9p9Tc-EH4516L#L&A>%1Aw4)>9xqQacnItvH?}(fXuHM3N+^4lCA`tK~a=WC){__3aXG|N%@B}Om z^p1FpYj`AI4BX%nc^Aa&-Q{ftR29 zUNE;0?e*R_Mv2UuAM!_yx?_(LuzvR%njNW;;KI+-mA~gPn9!@X6_=w59vxQlfX8_? zDpwRb^b%U)N52+_FM)(NizEl8*G|kIsUnYmN4#5cYg=(YIIx)i*TrmaEM*`7m$@&2 zM#7NPUD16|X_=xb3tW^=8Xi1?o9(pyQoFgs2sZEJTnpopHT?#7hEuZ_phPhOtQKQq z>(b7J*N+{VCxA0J_dyMw4f>qIWUcKJaKWπ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ÁgQJNB;4>k2J`u&&Id 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

13FB#{;8`)3(X%f~&+BE9 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%0A*5Tiu)~TxfpPac{J% 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%0DJk)@UgkzkmO^p7JQLs8l8jWZl!j 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

g$ucO)tVHSgVjp5$&>VRk7@>gCzaUKNUxvzG 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
)bGpR;%bQA|2!cx!t!QTm5V!4Q!}A*|#%F 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


R^*wNr;uq7wcH=n^;745%q~VTpGY`t$Ag_0E3Z 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�+JHA|}Jh<$;FP;cS#)5sA}$ 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
(q|J;yR=>$yZ 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
E8RFv@;Yt!29G(D4H0~#o1!tF?uo_TGS*hM+KwO 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≧cTvhW^n812>*)m!x=!{h_9-otU;i6)H6!2 z@X8I2sd2(RKcgyN)o2}-<)EU+*eI*Pe1$T)L2*c0;jTSZ(vWQB)-(1}fUl1g`l5Zd z*-<-HOJH)fL4N87&3Qq;mcWMA&w+DOP;4bAmMBpfb40SboV#w>U~fI1%FCzOk6ra;C6-&TJcYzYtN$2WWy_x~HPao#zi6x{ zUSMY(uLYTu^;yg=%Ccuvl>dFEz7ok@Wou39yAsczZR3ei6CWd9mH6?fWDo+190Wxc z+gK-P@x@p+c=VS*iml3G+#(W+gp&d;#j5;JwE@urE9>}i-bvX8_$h>~_dI1Kp1aD* znp7VYsL!Ec@DPexWvP!@l&Z<&U~Ju)%F9t~4hrPC71#+1G%t%eq$N4*Jo&Pl`Mkit z!RY#6vel_m{8%vIle^#H?{He=_=82d~O^cfPYFoxBtgK~Jz$NNMf=4j`{q>3-j z>ndQ6E_^Ll;jx_-CdSPHXD7=ru1-&%{m#SfgYm1F-MUFhlQ}Yzo2%=cgND||3&Gum zsDL7Zobtt{a6Fe*nB>lEjOY#Ee=~P#0-Wq21hgd@T=g$QBCeemxPndmuO{$Dy_QD& z+lBn*eL^gt#Vi5W9? zXcjkdSo_O|n71dvX583eZQKvhI!qtlo;;3xK;QoE-^srl`p0Zu;NL9$WB31L=^wlQ zY3aX_e;NA6>~C&u|K$Vtue1JN;RODJ<(+Q-Zx7(VOI?TCf9e4KbC>$Wg(m7 z31_Kcijx@01HC>ePMd8eZvO7Dc459M0b=c>hMYa!B!gXMd>dyL;PQi5-On2KMNjXX zva(_S{+QjlLI>-FasEl`26zjD*-F>4u$}f~AGdoyOYieZIovC#SdT0N@px5_b$>rQ zR3ksEGTBUf3d}PrR#l52=1UAJ_gL@R9CqUg5SE`IVU!;Ik&n}}c2NwW%XUq&{73eB zdg@rmCG5p^)}%nnN+kaQR^<@as|N_8QGjVbm3y8KrgQSJ%Vhy+Gk9%fI%U9&yt%@N zNKfXg@?H7zo<()mr`S?EL5sJQYNddh2odL{RL1|L^^p-Zg2=OTaAz*xQkzs^WtzLr zmb|?rL71VhB$*^EMc67?d+?+6ai6eVbT&NjAkqYyE(63FU}zoXX6tEGeOPHsZcrP= zx90Dsw{te)zxLAJ*5Y%nz4}1=+wVM|g@q_jPYZ5T?4yRVg9ra=IaitDm@RdW=ajyth`Rbi}uA|9;IrJ0&B|VKf`Oj7q_rXWG zkbk^j#hchBgU@oi%~K3DKYr-xAzSl((v~t-$vm~(JA{ua9&bGsc+37c7aJ2E1Pt!y z_;X>o`{kYpk=xm?c+O<>dPL7{KUZKePbKg_4HK(lemIaNGwi*i#!J^lY87V~^8qeF zzPr~QZ>aw~OwJH%3ZKcRFe}q(BQYC_@B0v22BOnp%X|R@8t`iJ)^JlYCXkYLPzB(? z$xq5^o>~fpc!KY%>lU8K-V6MFV&GDrOJh#;)PZi#)dVY!ps3?{Qq+CBoJ{j4E1n$m z!VP@fW@Bk@ho1R(lcGE$iz7B-Kj@my_hZkY z@-t(^M`8Ij8C=#+-<<|{=0c`juu-pkj2EN(r#&UAEM4KY!wd|= zq3PbA&j^ppE>$6iRTW_dl~il`KvQo_QlibLKH#iY5ZBhA#iM#SLGMzB?h9m~qr9DZ zw~+xrDtNLr|Wq`qz+tbZr7G zhZc1Dgsu1HDJp#GIVx^Ue7&Wzu4DGmhwS?l0|FK{1;z-okQT>-lr~=23UgnBaR&y` zYiXikv6D}Jwqs6ceeO_>L&%)0-I&wK5Oy8VHvQ=5uu>ht1I0zoI`Sg5x`w#qW#=5B z4S{Z-gnAqq=ze6DbMT^y)#QNnSEV{(%qnY}97upoRj3TiI#a29idS*eAzl_{jn}_N z;W^RUKMhiE+9x!o>du_yWl51^m{|#GtF1TS_^EDPEPe@v0@YlXXS~<&B#m4*JKSRSJa~Y

m8%ISu5?t|)i$aVbaLdwg zNYFiP)&q$<-y`4?)AvA$@w<@>-?F%^=De4wcCUe* z=6ttn!jC3S71u8_Op2T?>RvCB7bSWsWoJ=jYXXR^qiXlXk(<-o!@XB1nOciG$;s36 z>bx2=)UtU2;Z`-(=#i`!Lj8nRe0rW{&Oje(3z4U|7ar+r_(UI-m9WJQ!|}?^nv@mmX6>0zDMj0Na~4}r+}L(dS2^Nj#{;Nd4EXnwQ770p zs%XV;@Lp2U4E*-5bL~7BcYKJd?+HU)V_v$C*Ssv$OIWqeKI%}rB!lNgVx79}90aV} zG`;<~;>#*9;EB?PcNnp2_sdQGpihaw;6}6~y-#UjliS|UOV`>R}94KwF1YLnBSwC-GfZajWE7FJkM^ZI-?x7)P?&0u*BJ?`IpfFKpu` z+CbH{x*@5>42^WjmrZj~v>!vp%d(a3;`W(uLLnOgpjW*!4wMc>2Re|KtBM&}oaOVY zibXK7;#b$G4Rl1{_v`+#nG+=O*$NIzA~)nA&Ry=ryS$jJiEon09spOj8PvI{r~H#_ z>^-?R-#=KARbcczmP&c%!+v(^9~dv%bn?!xf;evuetg`J(Q9MRoAxX9t1II#{)e>Z z%oMBv@k);tWT(DAchXeyoRu|Kc<|6?H8OrycHVoi3F2j_P2Brk&go&4 z>WIt7NG_@wZc46(g%aT5f${W9Y_%`FzPs3{lbqi;Si&TpNEgL7rr7LhKv#n4;7(?= zIFrR2+~i%&0)1f(5{zM;uN*PP_=P`v-WBc$Js+YpoPLCHde_}3>W)lSwPdH2;dFaQ z@8h~q3@_D&ETWeYF3ln2pUzRu&2ez0pOCRYnK7ywD7Ru4v*gZq#(W_TRF>y_!^VKNi%Ou8RGSP`}RB+5&cFp*7-qmHR zkdOfG^dg7HZ%xk$2+r$9e%u}X{-C>-n?_N}=4nq*fr~V6AxBYhR?_oAWyM1IRrS_; zGV6tjWUpn{J+Uu2?CT(xn%pX|o;cG~zxQ-R#P%=X$B*iNt^^T%UY(ZC#($ZaWfJ2- zpzZe|(&O#qs=3kS#4lIEm(gW06`TzNaTT0MV@IJ9W@%?PEMOvUXi&9?i5qD+DZ`L; zX^!ZQ&c4na>}=c;QEhA762*(=`%p?Ikxuagw(<3`eP5joSxIlhuCV6=Eyk#4gkaZ z+;oWn`~`MHfRbXUN%nHB;>5T#y?K$P;qkPXSkfk?+toU9yQ<;Zwgq{#e8r@6wRdR= zN84=WFE=*Y+ib1k7LA~wW~U0`@QBgY``Lw}ckj^%4&w)9bD!R|jcA3wpxb$qyqu#v4&& z_i7bP)55^*&RK+G9D^3W4b`4tbA5Z;5#0fYV=j^N8iYOSG;pR&CPwMId{x>m zZBNaH-Q|PTF(j{x=c(;)XOS-!*93E&Y50da9#ks&Q$(e>C_+a4gJs9P&{rIfS)v+U zs8^{@0i1M}Ru3B1Wp5;d=93m`HDp%0@T&3wCHuS1e9uKPGnLqdH^~PxpZel6MhY*% zB!|pcwg4h4iWN9K<75Tf+O2-qfnxlqvdT-t1 zGE{iE^DUJFtgMlxh*bL4HooP$0qMo)L|X2RR?Ond$C!}qjY~AetJ=B;r5&k{TknDw zFeJ0wGJwrLz?z?+T~tDbTDr|nAnic=IEIywI24~3sFSLe3&3-aRJSETz&rnP!bk4R z8>v>!GbbWRI)uD!yhdO#cfk*rZ%RlfdF!6rR)K(cDOYmS6F}vd;1rd?n6m@=#C;)C z?R4&~@JxV0&W=I1aCbnkO`}U%cu2HYh7EMKbe}#+IA3{(l6^jltV~kDI8?YZ0L8k| zMUi*(mSaYm513tbi<^(9jpZ;iKokrYUe-S6TNVVp>Sa2RaO?32*MZoDU&#jst90+X zd+~HJY>bvy>DN5@|99TJb!JAyu~p+>jw;s-g`~3V+-*d(Jj>Z>LUF6ThzHN3-J&nh z2Hh7#@TijqUjejn?=lH|V+HIQ0R}<8UpiiWbQAxnIb_d( zPC__O#&#;%=UVNYDdGA%0q1B`v!0%!CaS&AY3G~26Q#twK%A^oRdmM`wF~8Pa;@I# zGZ?iCG}Q^WYSg@$acaztMRB`YJ>DZp!=2AmQ_%0zunOQX5~<=qq`X^QpQ-EZsc*PZ zuyv5H;=sr!QYsEtI>kx(-Qvg1v@BkE<8_`bIUX~3o8UnZmmrYCz9(Mjc9~4OZ zZB7OOHvoP{j>Zn$e!c@cZ1Hcc*c7hoK@Ar*L2A%HI8lUU%rygQs+KqV2gFPhFqSz9@_)JpM$zoK0l$O7j`I z^sCoJ(QgRx?%P(?_;YWVGJDBs?cyx&hKTU=d~7(vviyNrn1>B7O59R6Yq z_x^*m?3#Mem^Bc$o0m%bDO)kr15<(1b&K9IQF`0TRc}AHgi~WDxT3eHn=H6jc*Ciu zXI0&Uo1BSn9R_!T>u=(8t||29eTI`L!1~H^Gh=@UF*u-@#gnoGV9+;0i=BVc5McM4+V-lb{t6b(ww828nCu$87EF?{L z3n@9(D)^5&QOc=SX{2hX{Bt@s9g9^${usxQ{d&*STsIrLUVKH`JcTs1g7}r7mzB{P zL1QIQ6vdebbnE;wp7-uJV3d?rUGr%m?gWa4A|UEZ~3nU&BH9laf@%*uK9SRX5t zbt5bcxn6+P?Xypw{80+)VNc~za7$ zXVZ9o_F-8Gg!L&loW?l%d?ekj=~JxPfc5?u;)FG|wl+0ipJtry931@qy?;2jJPvNx za(uWTDRv32G~eGxnCwcnV3=p_og8c~*Y&EpJe33*nlAUR2M2d>I+x@}KBuj-)x>O7 z<LC+-z*PCdgDLD zC=)OsCs?+7=@JdNm)g3C%oL78H~7g(G1v1r;JI(oq1xz5ABGio7fh3dB)uhglH{g2hOOHs?-_WEJV{CtL#Oi0#BDAByQ6ozzk+Gs$XKucbOH4 ztmM`qjs5EQLiy<(;^yZ2TwSHvC-+Yhv zz0W7^0!_iMZYB`JE8gn;Ia;sgLbPE%61%If4%PY{*H_icrSItSEvaDhKk@8u%US!n zd`miQ8K~6vL$jC`RjTUpMX}KbcDZqR(>TSK)}$NL&w?z81=7wUt@L-9`!Ki3`^M%I zEc^W8x|-|4^CR#Y&ZyQ|Tb^#u{b1bhw^i~t$mTgDk4oM}>oY%ArqEb$O=Z~OOJ8q6 zi2d+xxnyPS`bb-uBz(Y##3B9IPn;ax!44J#JjiV@Ee?VyQD7JwISwqjm1+e3ObPc) zJGX{N2m1Y~2&4n+z^T{mMd@#=WCMe{mrk*1mfTw|754B~;dsS`$p}zt0!u6C&n3{G zm!LnFZ6J)T;-HAo=c1Eww4^7Rb!nIE6mbg)w)vN6QE<>qdn7qXg$5{)x1|e0%-dQ5 zV3d51@m%b2>yDHfpOX->hUqL4Rq80joyz+CC7RNxs-KXDDlhSJ9zpMC#$f++uVKrn zVZBQH4R7B1IxW{6%+*3$W?l5~{Oq@PeitXnC$i??k+iV$+x67*ld>@)b=H^;uo_XN0jW_ zCSnRRzh9Uo{9S|$+A4uXh*IE46ThVJxlHoPi3LOPmd#YsRjs@w-?pG_U!b6=_RJti zyIm)Kf)&_>cyRat@B>w?@lN>*NkYLyqZh4hBY~SQ8kh0f*(<=h?gXr1s=9mx=+7~#d zWt>37%On=0?$N^Ocz3LgS9#l)NBC3pih}_jN4hi%7|{`e1NSd!u~F?yZG|o-2#JJh zwRzPP9IWCBZ>p219C}4r)g7c!pC2#D$2?ED@7W)a0>ECMN#OV%fsH&xeaFF z>gD2TD?OQ%-5Yq0i$gdWbvKuP3i$q`VPHjkB5U)Mys@d_=hX~HyizqJ>)7r2xntHuF)4Wo(V2{C5l)b2Y9g!w*qT;~MYU=PoJ*c+ z%+#+(o_%F`pfi4+Bk+U7K0tl$LD?kg1XicIelC0xXT*+hC2xpcJ}EI|+Ugg1_81wX znK7$42{A#%CPNB0mqxi7v5+gk##zn76+RHRiA((2!}!U&xrYXi$PZt0I`u{RR7hSp z@Nm^W+YR=C?K;Hsa3wU>@o=>}Z3p?d5|m12GrDg%^pGh|xu+u4iW^27yBNm$OwuippV-IA?9ikB{>L1zb* zlQQX)?iPMW`kq+h-#0vc0xujnC84`5{ug_wfS)#Zyhgr)ILE0n{9X8<@e z>6|nh^FwDZh6$Q#`mNec*p?%dHs{`SAg?DBbsv*y`NjWUs^9z}s5|CYV3y$R@~!af zaPc&K?bqqT{vE&;Uv<7@w!){sKFMI8;x%<{vwM+uymKi1@j@`~{{zV>X%W^7Z54 zMBQ8JxRQ>}>vC%-my^=HM#31FLvtKh@9MJg-aKa^Y%Gj44N0VHO^$}j+Jd9x-IG*3& zfS-MIg7s!F*B$RKI>N|Of6l!2Kkb4A&?k+DIsgJJ2Ds4dpSR9vgJb(PM{jj9;PJd`hf94wk5_F@@#M1I=xc0de*)JCyMN&4^hf}1)= z`mTueV+~%SQ(+Ug{K;+icp-_gtfa(uA&CU99eR z+tl>W8oyVD2G!3+zl^ZO$1@|3W}YzQ4g2Dc(wqJ&68>Iki#fM;eHsJsNJpjyq{FB1 z&`nxJ&o=xlY)Wk@=lbRYQhdY@o$wixrkW5_7f66?x?hJD+{?UlKqCFRLTF5)Z^5`M z8c+#L=%V2$SLGbIY4JNM7+<&dshJM22${WFwpm}Q+w9DOa!Iz)zYc`?87eyAS@{)` zh)HuuG+*rhYVtyFrD2v+8W`gwU^Cpbd0~UTEBRxJN9-D*ggF{EwL4>z)?cC_b%Ayr zDB|b0w~O*#aAmKnI#H^|dWDi9Rl8{p1{g52toFtfe5`TnH(XdPncH!BLAE-{v?^GP zn5)Z}z!Gc~nh9`g2+K$>C++D6L>uZG8vWdnKF3GSsbm8XcR?Bf?^epysITf*HIxJ? z{b2$oftkg6S!vTHwLV+dOf?VM1}BQAm^348z-{Hze2TNOcLM29^=h5?H1=EufZ@+H ziQ^rk0dKTYZG-2vjx$zuUgmEe_Yccb&zOH_d7d}iNP_V?x`~ELV=kcr?|| zqBZ2E<@?CpkeM@U|K#n^!j{7bN|t;^eMr|nlN4YV5~#v}7ZR=YDFYbNRpBB!Zy2L} zpuEB+n&rBI0-ouVQ)ex&Od^A5^hL5VpLP(QpDhUz{``m>DuV$BHv*~*#Z%i{W~b5q zCV8~Xv}904A493k%R0D3>QRcK4;7Gox#sU(^64_Z`}M|p2i)JPKuiT@O*ZO5^J=GFc#ltY#hJTd#3(*^cOx<0HEQfe5Q9*S zq=iN?vBC$v*$V;%(g$=re;~$+YxkpwaN@HcE<;Jh4hkP-0L};mxV?G|E3*qssdhhi z)UYdOk7)6Q4Z4liOhAO3M7@O#CwH2)yZ<~cNq zbL46o0Qsq*%Oj#AIvF6GcOOkZX|f$*(rR1m><_?db{==h6K zb_w6`xe!eu>$;_WC&yYV&UsQte;JAeYz_Pnz1BOKL5@DiN5&~5;&`XbYyGQ{dO|56NpD8C@g7OLE-Cb%1bkK zHv$xfG9$~ZHH0#QQ{F!G26kOlg&K|3iON1Napy$25|uFkSiDEtopHzD;a5Lu$JwRJ zH=Xut>!xsTOLTUy73dBnFUwfabrGR;(xN|mJF{?KHuqzk9OiUprDSl8T{cz~M@4jp za&lrk6+~h?O^b56yIx{6)-+7l!;x7L<3pq4pZ0&?8m0PD+fCEV!U-;-YtOciCdZPucHs1_yBn=vli6a1b-y zde)%C)Xrdtlnq6nVw#lCnO+(b48(Z}d=ccC{WKG278r;_CKOqxzH4AOU_^o8AblGS zwqQ8WOxHeJtIZ5gP`EEy9d11<8%7L#P_%6hc;tTYd$d{=bnh8aR`*KQdxZlcFp4w6 z^AA6#4GA5mh(p*JB3V|moZf_2(;>d1PV8Q{>WNfn7NmQ;Vwcv`{>7z^fqT zRIdDm(#mJ!W7Ny1!~NKlm{&WtSJ)nSD8;K@*FRzrNIa+yIS_b~@l+Y`>(3L5mQ)LL zHrk*aMoo z{9<+4;`360Sb~NsmnsOM%dQ(*em>~EpD!R09@=uNFHn*0Y_#Jkz1|?m`5(yt1Tp42 z;t$3w(Z>QyOk&y^sJ#DcDni7=^SwT>^duJHlZ5k)* ziV@YJ8bXs69R2(g?U1grIJLW&;S@5G4*y@<~#lBik+o}8XeiJlsUVKj&d1N=j zz?trPhB25^H54m%FiKurR1g{+&L*1by25W@JF4&|hC|k7R3FF+rbrzKz6}NF`?JE3 zH)l(u#bAF%g8c~sI4anmxVQbu{#Soa1ySPVI848e$IBF-i~Mi^CyV=N?#2RQf4r*1 z9q7qF)6dUTF|~hmXVroG-`z>^TlyK-uHYcmbgvs2xvZTs0AybBkqGj><23UvhGGoo z@GXKEN`H%?1WX`?4ucpPRbTaZEl742)l7>|EL+s%r4-2d4@Pj%{l)kPeE%^10pD9j zqw4X;XF;6P0`2qT%cJR(0pxU6am!z}Vsz5P-3^&IGlzklw}bF*r%_H@~@{eYm(2v}W!KO=!n8u<?#dP2`4~ z%_$|>2P~cDfJ}!2y%}&IH7=eJ8Dk+l%6+1sskG&~IO6?mXr z{TW6Ul_9vikvgSJQaXauvu@2ifcK+jl%l>N)>Eg0*vV=;!!c01gF{uNYusTKX>nG; zX9h$pbuBoIOG}*7K9;3^9(TfzqJCIAxd{ahbIObpG(X7eHUoDY59~k`Q2MsGM`Xfw zSee^Bh5XPtG}t>b^&?6r)u-QB8~vq}!9efE&>fC2fXTDr_-k?TW|=?&aU_$-$aZhy;!oqNn70knBA zF|;pUp_s*~>gPu-5`u92zyKNx`Yq!t=(jX>&~G8P%vN+}B$)bBvM%y`dn5*PF29s9 z|AFKJ$RrC8`Al6eQ^EWrzfEKL>{?}d-%uS2NBJwK(j@(rQ@>4MIk^iDWg$V-U3f@0UGc7;cr{O2dI|A9t_-1=IGhOxn#vJ@N zbIgGB-)jF(#Au1B9Nhj|WZK;6AM{8p4 z|AhSYtiK>14~L&y`59g*dx=Ad zi9`NwZtw@Y4B#K_jp>&r`bT3W@swBp)S>)-wj|A8%TmL&O9@9(vLwIxyEZhiBV&r= z2GjZ>MGuL_)u```!wYam!+6xFJ2PI23-Bpxexe?aO+8Px6ESH}qs}v~Ne)x%{xcckFgVONYuK}t`^je4!(#dwzKIx~V9uhHN)Ul{=bf^|O`_+A2wf^b%F!uI0Bk1k9c(A08f+*1 zZ9B8HxRH&SSz4vsLo-~qiX)aD%5F@K=e5Szq;@NF|(R*88 z=!5lzF{!=L-r)}g-#Z;c+6iv<`rzEd1e|-6!^3Yr3ApZm=uq`8?eCTqA5hg{4@(yi zNRQfj)tL-TZkZb}+*>lhEGs3_#@#j}U(M^ZGS4P)F`jRcm)J`@dMB?t(5PEmJC$e2=0owr=kUFb)j- z+A<{}lbxCR~}qm^i7U#nxMz_M+XuAbnj;}+#QdOo4gsa6JvG$_QU zjCeXHYx?RjMftK>sXO?v@oOqhDL@^0rW7*R3t*0MBo$4}qr7@^>=O@1+?&3n99XVE zt2FZ;dU9mPN`Oys7Fj*-r({P6ie zCivShU)vL}L8bKExMvKqyJ`=(tJW1i(BKIBsgN;JIo5CGtX5E4;>*xj8xJF4XrwOK z@~HM3u8w-Rn{PWTVEIrbqRuJxF^{O?6ldL_CU6}TqbA&Qm8Rs&PR9lKWw^bWM z)MzE&vQg$GFJB3xp%3W~uxD`Z-LNc`u6yTVp|D0eBT7jv*LmtdFt^jz9~0u-cN(a& zCL3Hw(?#7fpK3Keek}VLR!7k|ell;rroG@-ycsYzEfCn}_o@02KQ8&nE)3`RWzU6B z7F)I-b)$K&g!S479X$_#!#!_X@Jrt3kFYw@#uO(?K0^kh-L)EAqo`+fBJSe}SE)l< zxgs4qca%}e(Wc^7(P~)-dzgqJM|lso)kHzX`HV( z9Xe(Q`C1se^ux<~cbH@q%hGqihu2L3$GgCsYMm-A4b8#=FxPUq*MG5nrn(?`dAM^j zg_zmhS!gkSoSh(8CpmlVeR1hAjl1IvG~AqA9qA`R>XMRc`)D-nD}+noRbx|Qi`A+H zWL)_(iKE-6F(%?FbzJ!i%@=$9=S&jUSBQ??m968tQE(w+XU5G!^m_Bjl>bRRoqmd< zrF`#ijvF0-t0`7^&?;fojWAoWLtcM6^{D={NWp5AdJivp_ME~~O3CGvvUpav;TYrG z{<~c=#?^hX8Z>hWMM-@uEk1J=)0ZqvRw{>l^EC|9W(1cxY^8mQmVFFHu?*-#BF%EM z90V7tx=4%x4#^y{_fzjQ$&IH)gtv8)Sfk(x7Um@mcw3%Da0R?c+~0mV(b*dq zUq`?BqQd??U$2k`0#<#Lql@+3>p69X!Ng#VYjrw#Z}Ty8->fk#;PRyR!nVuZ@3^yf z{bc;gI%c;(P;z&-xctTy@VXEaTaau9>PjJk5e~Eq;(^{5+gB&%P8ShC%gxS3xuoBv z>$ESI@(R^Ln(^osN8|a%W*v`GJ-*%vp5x&uC;JxG+td3v&!mU&|D6oK zgb?G%NdJpq<4AW5aYO!%48MX<;k@Yh7oniQi3*dI&dC}cvbBXkC@7q4fghDG8NMiK z6|(-rJQ9jmoc}Km;QxxUvRD7r1Ng5p{$Jt){)6Stum0a2z<-yzomc;<1NhHf_TO<; z+M(cJ6VMvF*?e7==kn_Lufe>$2v4EL#Okxu$8@+*VXK%NC^?jB(ml*5`ggvIo8gl6 z!s@%v-Bhk(0wU&mJl*O?U(%w7lUv4Jm2G}*t~sAucWYP=%x^z*KKJY{|LQgn_~MjL zKrApcqvZV3uZbm_UR#v@qH>_-hs@L@tYoHX(*@WC6){{il2`728u%E{(f^~xVfJWC zk%C79~An8WN=TLF)Wykyx~^;B&5x(cR*J}CLqMC1~sv+RMm z*~-#dNB_GPgr^F;<#+g&=nhk{BmkUs4tiKLglE(~THx$yakjdeDNF3oR*?sPK3QOJ zqB{#qrtzOlT5nkGZN6rscs*$4Ib8hO#XWy@o*|9yq%oPsPt{vk^f)Xz-M4!#mB@E) z-~kNbS(&#wC{}uS&fN8*xgH8Js`<5PEW1X1{90kdgDZEQA&TxK3`*cP3DmDQ6iC=0 z;l6`CvkC56J5dvnvrW1D_f5P&<1zSbm=<2~ecG*0bIUHjpgWJgfY*uvC-Ui&;YqS5 zcK54{i38?(&bl35z)}eV=CFpnWK85*%&bAvt$p|24+x9l`%~0;z#RX-+zkB7&yLGT z>2l7)^Vx+5;zd;)$Jt|>#@TFcEbH~j8s_Ctx)aWI>;}PE(7Y~XycS#dIi+q;d2K^Y zueN^Dt5ylhR>c{O!wGw??XBCryE7;bXn6JY5XViILpww=AV zX*{tVm9Sh7Bx|&TvM)i|zd@$GTiLCIh;vo#0IPud-Ab(m+x`cwiu%%L9)k3j>D+Ff zXE@-G=ow+A%SPJv-TDm2!5c^hBN%Q2FV0Yr6J`2H4=%e{AHVti%tVdKazDBYPCM)= zQ1%umd$6UsZxgV7dSaDE*6R3MP#>GGau=}e2ksuRqMO{`q@<-mnn{CncStvrcm}Ms{(J4? z*!z7yJOqR5{wuVgf&5%c0(e8omfG_{b@S@kt%o zP8x0D*`}=(ZC)H6m6#bNp)_N)BC^qT zF`ePtye>M+x6k+3Ut$)r1#(64!5IS-(nBIyK~5>3s4xxCK2`+P1q835Q~VxjWb1W; z*L+i6MVBEHo#VgXnUkc#&?Hq3COUmReFm2$)p;=%-CN4GgvxeNci3qdWVP@`ROqY@ z(a`>MuYT)CihZ(Nza!(Q?H8_2@ZC17Jm+$Bxi+F23b-DL7D^yjQ3B4K zW^SK5>kX*VSqsc_{4?Wfs$@T!52y5Q@FJ}>DuHR=Ni0=gNHCLeoHfviEJNW_*f(M2 zpQs`4zCIgOkrX}^6Rh4{(jNXWZV@U&Q)ThmBxU9eyPl@ARTTW`6P7b>%r2v4Z@Ey2 zU`>OZ(=%~%r9>^QuuS3@7RF7WMi-7C<|)^-c_`hu38#VP%bjim&7(}e=PbHj@y@rQ zc9c>E;;a-rwa`w>D3?DZuSh^~&i&PHc3q>lyZha-t=q|2d;IxrS$f(X2q)g(Tt!5r zFMfopyNFL`Y5|c$iM`|ihz$vFufHIIQIpa3`d#t}x+z=8hivYU=3jtb*}y7zEtdH7 zv_-*WNW?~RON)1b4)^WY$(T#cVeNm|L?<<9Ox}`*>pm(`&^mwG7UK40uP?YeTJUhy z-8ykqta`?Po?454@W!vWst$r92t9AzvwTyirH;XZGS!^k1G~>NoAzr$C*u|uN5u# zH!XmY@cZ~dOkwvZrcmXdkG` z0YM4JE59#SZQibZXh`X!R2RU2;kcJZw8Dcj{XuMbAxGf!D7I936kDboU+qImn@}(O zR#=ddIlcSdIvMyZ3ZS*q+bw=pxB%sr^`Jrq3d$`njOZTm?dwOR@{_LnU&6wF=mv~g zwRG8{n+&q>hPnLS0w^fQoaZtf_X1UgpgLz9M7<_{f|{2L;>~5*%?2ils(z={c*Mf> z2fktLO9^1eja=FBH{P&Pj^I26Ct+gHs*O~JF~Y&}39!3|Y9sB_4eC@Dj-LFZBOzpF zauP*y%x3?dyvmJn0y~eKR+zlXpK|3nztogMEjzzdGS{i4QPQTEUhW2@7zJ6uL#hVi zbn~nZlZNTXINLO)sR+Z2dyHjRl{n$VjT}I6rDZJm7Zg`og5t^nyH|tu&6ZCY+<@Ea zLDd2+jpXpRp(yUnzD7Y7yb$GqIL$nBikUSXOG|!uTJLxZaduG-P{a9so8CN$kiJL` znZwI?d5ayPCQ#<#Gb=ruHxv;oo=yVd zCqofav&!21LT~l&&Ns1C1cZT6(^HsHP{w)%ANC#W06PehAOXS`Ubz7?3gR6gKgW{7 zBoydhw%-mP&{ry_B2fr%<qh5c540yy^uzP{F**t>oTq$K5rSyD3wl36xHdQ%|3~+NF`1KRUaY z+#}&7y?hv`HL8G7@UZhmOuI(aeh=vych~rOa@~Y6qx~5z{vD*>b1d55Wiqeei}*w_-gF0lOL2<7_{ z>Gxl%g0;ePKdwj%s1*HqQXr&7l+mMwO!U_4;F=o2Dn`+ok~b3llN2gozdK0AOP%;B zkq9h^t}lv?PcCA_WLSB;?X47RP1=Sm)If#Le5VPrhg ztw~wq$6hAenf$U!Df$DDmwD4K34GjfDf#iFPQ@AY5{Y>+~*SYb3 zayq(-Naz9v(JROB+|@Oy!mBl2Fy;?NwywLk#BEiae&ATwybk(}257uBk?h6(ddKSQ zcWp~a+&hJT>hsI%XKb0IwbCyU6C924VmACQRpe>`tfZ%(@>xHarx0L%o$^m{A`^yG zO%zuq_dPFk)858TEj3`)wu6F`kX2i6T|55SD*X2k6M&?iCkBOocoQsRfROm zZH{EZe@zQ9)yWaG;ss1Uv(#?olnN93%&3x#{O$=8ve2Q=oScb&`=|PxQY)ZjqFK!A z$Y@Wd9L-{)xkK(r@ml=^)NEAhS)Tw&Dqf(^*8bhy{_%Bs%VHe_5)jZW?-H+?zUXa! z0eIaXPR_4GyU~DV=wTiK^^Nz{)iGo}fNOYvPRrZlqWjH79*{99riFE^90lv~{fBzv z=(Zly{B2W1qkVk(D;=SFNW^|JI8AzwPc{Rdhg;bJHuE94F4qV5?dZ>RRIfj0;(3)S zYWk6-TO(q|yzv%~3Er$f92#c6GUw9MaV&PC<&PymasRf?fp@&LilRs1p^!ab`r?Yz zkva)$IDRKz1c-689JiU&r5bW+UP3WbJkKPUH4R=UOVjKoW2{{rLGj7Md=ueKJH7)=72z?M?R@m)dDV=VaIjEd=KRC2qT!yiN83KdkNm zdBB$Bjh6b&n&5NoTJ-!mlaT~yxY)zQ(C?+H>)bE|fG>8rJ?21lJaoeC!_xVFNTh0tLrm@qf6cjw0l+(ks1`{T6Z*3#BJ;Sd22wgTjM1e9>?HaAO-{6EG?M zBc>+(vk8ioeHY+g$F%+VxX^1+w{Rcs4mN?|n2=e?8<2=j1T`lyi}>KghsayME#)26 zlw&|B6aq@@DUxVfL=27_U@JAe#SM-%x~Ko<2z}qy#*swUMu_1PDLO+@X$=-U^88V z&9t_$lRbwUQ^-`1u$t+WUOw)n({OH$Z5#kaHm(N?xzQ|Tu+JwtHm}Ozdu6sLQD4<} zwkyrqYXjCIA4XX31B{@m%L%a=1rk6+v8HF}k)!<3x3~Ugg>uk~WSb#g6e?)Ia>dYY z`3Q`pJ^~}rC8y*d-Ju@fmo^u_iw)TKdByeHE+!g+jXz+!$dNF=&ju2IOs&%(En~0` zg?$w}tFtVT0=j@6k<;)hJk-Fmx92Q8QB!$ET_`O(?FGt6)F9 z0sAS4Qa%Lg3}PsJ((BpSaGG-*aWO@)PAR+)!Af>7irD_I!qOo3Lx3E z!xsf%Pj5@O3U5U|qC6_!qw&A|seRyLISE$l<$DnO;nMB*xF4v{@PKDEn9<0aHfZu; zE2$0jy*i)dPc#Wl8Ojn;=0d_fp;;Tc#fpVFj1U#v&nUt;|T;m5hXxV^;dE82R2 zE=p=Ee%`cJN3!`!A$m`Xevo_hNC^LU9NfI+e!T3<{J8Kn;S;uOmbWH5&uKc9lC4-t z1zEH z@)8uWlesi^P`vcm;g(UjF2|X^{H6Y+G|R8ds!_tIQHU;uBvW=&0wF3Tc_LJIS~6%< znn;{+VtOa?&#YM}8^r~N$y2jRmchV66qPbcCBn?EPoLa_vY(e$NpdH)3Lp$pN$w+H zVFIuLyoCP9EHy|NtYi(&1dN=qgQWUdbXHI4MGeg=rI-~Ig*cP&ev(8YckLK)vNSj+ z20no>IB^~zvsxp6{`Icnu91ej4m2aogU8RJ!MHXvm0C=uGxRmG zXjD6mX8k>#B|2m;D)Dqp)8YVYBsN^b_f0Ve&+{g64c{>kk9ofrG&17?vfzsaSu09Z!=_lKuL+c&Ex z-7O?S%|-C`KpG%$?|ipST#b+qoRCBSUYrMFDV-G|Z<6iIR(w%@5>q@)=2`kNxv|`q zvY2qfG-Q)LaAk5bpU-q4v^tC?BdAClxd!)e9S&U7KO?R9_$3(q^z)#^fQJ%U%k`J4l15v=$ zT~?+cQjG*HL1Cm`j2S$DR2RB+YnMRz{qMzmsa^$Hsl`Pu#@Bg}E`QSYpHf_K&&sapwR1>}|CYX!$I}r0IeqI^UY@Bt z-K|wIVyeu^mz7wG&%BdVR#~h9BGl%nz*sTMKx<+iPk8(Ce%A6z2~vC*$~o4c)yxz% zl0uc>kzE4zcZGz)B!=Dsi=PyPyG7DYVVDr3$u48#?9%Dzus(4!WlmLHoLS@10;}*< z`jN0>+4;HF_M^Mz-Z^G}o1en|V2+&uT{3Yob&%sb8u+ZR_(#h4nhJr?A+6a5uqf^+ zZ5rq|zBHES9OLpezT6<_H(#V4I2=IXw(w+g9p|b&w5@NkiLPARyz^(XK3n0sGX86Hool@hE2%ekO`#GVv|d4hi;(89zi|sCzz1o z!s_|MhJD-%Okd<>I!~nY=Y~J8?v4<)Xf1ylg!~Qvg8WrMK=NVx4Q{P_YydE4!hEYJ zn76>Blmu7y>iKwz^WF_SQk|jJEm8;wN&W#L$y;z&zL(E#4nmUVLa19t%~SG-i;I*( zVd7x&gNM~l_QPuD(*xTM?kz#;(xmSI{?(^Ld^l(IXhuGv^8_lJ=tbR;)J26j%EuLi z2DpGw0-r^^dPm?y62!2lO6?CVnA)n@yJ05;%WwI>UH(tyr(V?Z{;IZ<-u3+kQSRk> z-ryC<2PmOeJWCu77Az-oyiXA#=zYb>63^1~j26&(sz`)R+FCAvE0ZOaF`{#E;e^QsC+IG;lAS)N-6ROz zkjRxlu_&&}p5!7g~KQ+EdcQEUUaak1PmlbSmxZS;Z%PVxZ=MC6% z+@{ibIbCr#CEt2o?UcpL_O7=ZUIplTUO^7#4i7drag9CQ;K~kq z81Bsnoy6}hVr$zWGRaaPH+jaUNDru9Tx;42Hha1tsSp};+gnw#Ll#T-jU&dU$JX4h zHV1CzLJtJ#?|-JZ=Xb|A=yj3gyU3#zsWL6fJC}8F8^`7r+5KoeGY?ggbvQEP=$~~K z*^5ZuGJO*Fa?fzqls|fO*Y|LC~m;ZVtgKkwrpd8$R~8kUExn}(pdn<9IIMh z*M<}3V7;(-nX)^6k0)FLgXyI+TWZ|o>}0lKu_%>GPxU3U6F!rMR*TZMr;KHimE~2+ zAPNL7eO$Ubx!c)yA2o`Kj#g)?(OgAVqFSJ!6mamrG{(0B=3NLf3A-Cv#}VN;4_yh7 zRf}J;RxK}X;(WPtcK5>fjbH(yIr?mt$rH;F@bn3~{GOv+EnjJhz-tL~PL04fZ9G8^ zb8Bmys?gna`1CxLNKwP=xryfa zY{fAVkUy)tGW@Qgkjzn;i=*`eUjYnLx)4C88sctuje>@rQtu{wti}I%6L1iVP^4a! zAZ~)OUu)2ZVS4h1OS8aXZ`K#(o=V%>hfdJ&R8c}!b&1PR{t)DK(Jnh?A z+T&Kl&zT4NZ%!cH4LtaEjfLE8G~U~UEtFhH{{Cvi+LH#R%Xls;9mrk+x02*rluTB5 zypGDWqO0q0qD736oXB#v(nhBI_pQU}grY52l!X4M**W~8tF|-1&@fYCvz}?RPA5J= zvbVm!w^UOc^1!Tfvp&iI3g%J<=H&3$bQ_1`R)MmA7X-n7VuXXejpkeC(G8p^V8`Kz zN4btq5TIm?B6nQGEov|Z)fClOWM19*JzSGp69e?xU3r>5m%E9T9Ckfx9ipoFl1EK> z%$DYzvB^~OnMwpuOi8n2U;jPCUMF42R?|4NUioaaDogtcSsCs?$mz<{$pv7%y(|mZ zhWhTBu9Pb$b$LHYt0{M4e@6c;9}GePFmqxLiar(#Yo{p-&%64VQdqv-RGM9)hoh+w z_T8#|t&d5G@`AP6P#S_Ed%JmaoYqg2LCu5dp8fKEAQ@0+a?VpVkgE+WZuo-sQu-VG zn#%`xT&=d4OUaM$?6)j_dNU%9B8Xl!jdx~sv-o38bNjIT9Y6WYvUPjtTcxbA@|_Ib z%8+cc6IPpF6(z5C(&gu#bzhDBF=r}6+Q<=nT^1tOR$Xm;X5Utw;JRpvrbTK~Mb-gI z7MR^hQ3Zi|D^k5UT2$A&>>3ne$GS@7!4C+xJl{o4ev^FB)F!rNH&nT$5D13AaW+kU zY=Ng@$1d_lQOHJc;|}NNchYN&3P9gbb`xIm;bk8wfqPz|>?AyfwlZ8hLDuoJkvl`T z$C6mm8fy|B3{nGO33XE0k~mhs4;YyFafU6PIsyDAltuAcREmDZPM9Gb`)<7t0kIQg zPwN_amrNh7;EolKVCfEC0cL6^xCD;5EN&nJt=c01eN)-1b<0PvG1&T*WJ2x^TpBPO z(Cmap*0X*FBOz)G6&}t0DX2Tr$LpxP|)VNh&ouj3+7jVz)Co`yj@%*9ic6U?1$r zZxQs!5F{~l6gT3hauL8N?8}6OP1Ikmmy^GDNkaopf8_6zHaCaFBMuf`e;$GJx+JUd z$YL2BxbHTh60goxev@z{ij`FM`1zJkgNKBV0FJ8d%IU3layALgT3-}&|&IaH5V)qlAVeht^mFm8J zJUK$BWo6_R?s+9xzb9yX<6gTYZzCbQaN+*_cRo21c3!P{7xln!+;fF;V3NIV3D0iaJKDl{k z;*riUw(Qd_u-*@SgvCgn2(QwABt5)ohj$t|82ht~B8F)1=F>V7IV~J{O3jEqb*jyU z9@!cl;tosZW7bIWH0v5$mTb5X)@K>cCr}Xh+@=0q7_0!F0($gR;{Tj1^4H10skRF` ztp5ZyA7Y?DS@RBR)+$||BKU8P--UHAg-Np_KvR`CT6EXDU@X8OezYeL~Pp{Pke>P_el}|>)t;9+bTL`9(yAEL_QuTK1lv-}z2OM$kQjPm2i|(ADWA!m45htBi%q}YT|5XnSf5#GV z>zn1C@ZmOqG#(d`2n9&|EhH7O0_!7p;B;m~IW{_uiD=O#VvinZ00@jvi+mN%fAQ2G z?dj|58+ZZ}uu?a{3a$`#bVdiiV$Wc~uNZ;|_!Sd=_=<_(;gv2BThEww4XDlw$4=|) zTav=2D6PX}BOIf9eTEAH2Zz=%v}6P?3li8+NC+INe?PEK)*rSq^O@nm=_G@nEld9- zgA!8{b>%~o8~8o^h=5E|AbR>7m3>fg9cDa&IEq&m6 zy?i9$#5D#q6x}~rJ^mB!OICS}=8(-@X8`d4m$d`*WooxbLt^CbJ^6<`SyKhxZ^%Ta z|Jj3OHw?bucol=I^eezLSCPN#3ANxg@-qVZLZXOG67FV`fFCa-Au;@57r{sayGUF& z_&xc$8QF?0m8L=UP2dPK^jhS2Ha^HX?g&P$kO+t%dlDWY2=DV%nznOwJ0L{N;~Xms zef1bQ0*om1A)+<|2voDH$REyS%N)6kU?2zgP4nG-EHabM_g}C3T)(Ki?nJogRz_HJ^7vt(T-+m=Ifw+rE^U<`+qD$`|H^8zJ zzX;v8br$&6aQe3wQ1zXvbiA!V;))%4M<9v8l>So zHUCc9yW1!J@Vk!oEyjLb4L6P}H`?ip=Gs#nDsMYHAJZ4Tz*O5g1(YEqtk_Fz%mA;DRTlWt+VZ#wL z;e5tv8N+2)K2|ECVsZoLi0UA{mH1nhP^B-Q8425eDkNq=y4Z@ySq?@S^%Y-lOi_I1 zzb@|?C)0{NaNHxXXH~;pC=4$Xz{p~*Xs+@J23}Dly)7|HwuSB~sMfF7B zS|NX&Qr+!6JfzQIC;pT_0Pq_ebjVMP87RjPsG`Akw8Z@U>h|*OPIRLz8Uh63xDtOV z8}LHx@{eq-{qh#Mk-Mo9?bhR!G7ZNm-4b7+#>H=UFl{H6630kye6i*}Suss~H52=S zx8}KUg!cr1?j)t17vQ^Y#Cs&;p645q<4~7DH`FNbDKCIC_e;1H>~J=T@LR3u`0Zs~ zx5W21(P`U?ENWJaTcZ{JBn)Gs$%-P~oG@D>5fmAWy^vGeAC0nayrqU5FGDM)6B*eX z@BekXW{Jdl3Z}94wqw@ROG=)xcVo-|Lj_x^uX>n}Vjku{mvUiHj5jpm#iyqmE7XZ* z({k;u>K$+#LF}sLefTd75j0CMDjWSQ#@;?hRyCD8rIs8MUi#ic_W&s3B>jGr#{4Ij z$~m7GTzyaJyPgpmL2C$&g5dc*KB?sy*XA3 zQH-9>-sj0_>V&jCox%C>NF@oe-Nh(x03yu^Ka2P4#ElqBsar^Y3L#2v2tz=>1>PIL z5Z7r|H1eG(ieObc@eks&Pk1!zG%o{`jhn>ni@7QF$Jll`wsG7(g<)iNM(tKwN4yP+ zZ$S3g_jj)dgHk6!6@IzNM7Q`=n$u<>xQuN3*2?TXm4LIX|sr z^_y4c>!x__>(j5gO^sn>qieWl4aV4zbeGuQ(BZVgzBcr--D~Ld#de8yYAC^%nP{j> zVk7h7U$$|0OD)o-GHP{7WxTbZ%-j7QjyIyY@N-tO^d{hX$Hn)QH*%4K0dFa;OT@j3 zT*P;4NvFYEy89rdi1-xTSLr*x1l1|aSSN$y*l1_do_f$am_oFu?^Fukc?n~fOZsH6 z2V45PzM?DI75>UI;iOtZQ9YoxYa@=#-Az}-Hj{JiO`VT!7~H4)O#N~1$EwI))W|$gJi}AfgU)xDcIE62(smJqRq*LguZxL)*QB7&HGzluQ zLG?FUGsKF^MLs*7dIe^(Rg@Z_`uEib^EgUk4BG>1{Fv8DYdp5-0l~U2MGa#Q9m4C@ zov>{djz>5eZ;(O{p5zPR+Fbv@4~eh_vqUi?DTj6u<3vjfgS*#LAa&}X;oLf=%R!99D%JmK6nrJd;3@3e}3tI zOtQ!Z$I1z2po&GH17t#oda?aLcPxF-9SeK2i?E}$A8{IrPYip?g-R!`k7vXYEp5jBGp{8bnOV_62(H8R+k}iwW5*Okx3SD%(bN;!Ai&Ub zhk?4M3m4yrr8!Sw=cR4tNJsUnvlx!T=F`cE@IX=DEgGf$fNE_{vXXIf^FQoTRP{4D z$%dGn5o}nPUI1fLF_pMo*hXr2`<8D&PzhWK7Uu4j?*&yIYoBg(4|TSbpc9Y#Io1fY zXf?KK--v|<4TTrE@OsX)t-5^QWVkTuSt?G4Aqlj%N{gr7+aF!_eYV$3Sc;5|l%)9P z*c2BbaYMN%%S^F?O7@QXn{11dLXx~J>7B6xF&4^AZvfs(wa`GYL-)H3SfKAe%SBm# z2Po{sB3HNctI5iF6RF4zOmls*=QSA_igbL>i_7=E8~1&ej5IG@Dv3dnz$6S)lW3ox z%;;Huj???>!B47O=Vs!zCu&ZxAL_9yEa368voJ9c>q5q#!{&@&T46+Xw;HZzh2lnk zqqBBoqXSf#{govUSGtvl@!_89jSu+PCA=lhwLUedpp_v|*d0DEH1}PKNkU%8^|n;7 zqJb)KWyi7LhL}UFWuNZBvv$c2FZ-u8Tc{wB29UZ8rOl^m-)}BnY@F`3x36wCj1@5n zdGF5xSBHmX4P!15BtZTBWgcauhsX8U_E7%8B9LJ-m+Ji!xSwt;)UOQxPW8nK1~$-% zcZ?mUSYF!&I>GN@{JyMzJ0hZtWMI4Q3jC2o$a~a4h+j~xylv%TBiUyEbn_l}wW*R9 zAs#OkzsBuGpJkzoF!*^dZ>ofHOvbEPd=i%B_;kV87%z%*dd#^vLZ4Cc3J=S|FMq;d z8ep*gl-dSsxu}Duj(T=oxl5?ZqeKaIr@q1S=`@SHmbWE_NQTM&hF8^ zR!5bmraKxaOGT$k{_c(o6LDUY>Rt!mw=`B#errO*-VF9Nlf6@#+2Na6|AZRUoaxtF zo698IOk@0P@f8c(evQ2brfel_eM#Qh1c9O~ivJ#1I^QMwNEd}4jK{|<|J(T)iGz+AT$Pn(%yc4yK zQBCl4-?pqQYjK(=Uejpm{a6dhTVS@#OG@P2?C?zGOTy<;?KvtWLg!K%>PrSJ zP7$rsxuh&Tg9&df3K~?@MT50lX3=lJ(4~?y{q!nxnUIrXEgQ1CfAs#S`>LhKrcqg8 zEMt+tA=)3D#P%sXJc-7ba$wy&Tq=nyK*Yh1C~6i#PTAmhevVls&7V(GvJ6&wtFu;} zGMz*i97@QQ#xf=e911$w;b@gqDjI;{>@VXpW50p8$2h-nnsgAQa>@(@CqveWFu9b_ zPBvZ$V1N-et5u%|Cl{!z9q0YTS9~Jih7xbVLt*8Q<3AAB%xw8ZEh-->fjAx4X!ZXe zVNfj^ffVPrd_Or`fYWU{mR$)c!=mZjZ6jA7H7JS3U%fJyt)Bp!@~X%$EP^+&hQU(B zMrF!!8>QX&ySkZ!c>jo5<#_SWI?X{AJGL`so6=$O?Q=I@-O3rW^)OSs4K2Fl!eTC)iTVj#8ocd|KH3`IXCIz)%(~yj9AqDZ#aYe?zYz&I>-GE}VoLqC}tTPL$kjibNYYV`Z=vI(v|o{|$1 zZjx_YMO<_?HK+b=Y`=>edB``m8r98J7Bm?*6B-lU6S!2jUIHhLg@ZK#9;$QPDD72% znHyVfm3+?3%7!A1#Mgn?U&Yg-ac5IQ7?oMZ5efJl98*i9V@g7U>bSRg`Q9of8%jbR zyp{Sk!Rm!B;*d7^TY46{Q?R@CC&k=pjrtCa$^>-7vA46dZWzQId2XLZD6ocH{+`Aui_(LU;3f( z$#_bOaU-%g*<58pD-*tjAb)d14!R>vey95$fI@{rwOz2{Ik-FcJ+H1dYb}OwBhb>J zy*ii9C>i(r0gZw6zncNh8b`VHqGqQEhHVWu>uQr-^XI!j>1|nQ$+=nyodW=AaDKm7 ziv_rYX<%=QJiM+pPLHpU9NfL`Atop1lf+(E`{@@h`3E1@Z`(KJZ$r3<=Xfu+k09L_ z7poC=H%Da`LSC*H^Q%mGE_^$d@pH{?2pTgeYw-tyJ7(7~PDH~Je`2KZbXLtqyW(9{ z*43Y>M19o%rjD)R^znE3>uexep|`+LnUxm*Td1_SR_G29-46_vw2!*j>Xa&pANAhB z_dLNTg){t&90|iJ{BZErKa$K4@n3(Idk+m=S^4qPkmdc~w8uOgK4pc)_X!miCnb-3 z*@O6a7!@ihPC*|1vNzCBjP*7C!{KZ4s3@RE(vX4`13xHK?D4p_$Iy_K6+balR-B4F zCJH>nV%<8CPFKBd9NqjTSa#}`J4ENDz5PGGHM#E4WNKgBDy`p{jXyD6ZgN0@lV+QD#hPn|Em-VJ=9<+Uf}zMz7;3Sj(j-$ zr@|?L?7tge%VBskV@M?3R}jGq^_u9E=l{(c!2jjj;9hHPIb;s`3H~oHfd7xr{-=+O zu5b3NY+$9gbUYJXU@Dm=R4waKxT~wsKF!{S%2X5Clh~T8bHQG)`@6u#C%Mtt#w58h zG0T*jZ#c0rdjP!##1iu;nk9*~aQE>OH@Mhvbzy)0{&^GpRnzbV`$KBfN5J9(90o!> zg9{!az&JZftN7%3BzM$YmL{x6V5GBxBg?}6AMGAE!B%Y`fT5~y(O(%<%1%Tgdpc)3Y$7(qfQ6YIQO%Vui?z*Qh*@bd z4IFiLV0=QtV-zvhkQC>yMbfwVs$>y5Et%sFCs_4cK194?7a=eTW2V}U6)$7qEoU#( zTbLy%*RL%ROUnW|Q3itmKTkp03lT0^`N$kk);Sd>z$nxbsnalA)1&>;WG!cJfC}jX zC%D(N#2;^aZZs$o*}oBViwaELo9cmA1xC?YW07+MMzFTs0`-}RKiTwn(FmYP!tmgF zU?#+dUz;Kt=dKPDyp)x}wdZ?vi@|%)&AdV(fEp;1o}`G>);Up>fe{#7Hm`q|A$;B6 zsxC%W?fvXF`hx|6pMT;^8Dpjn?d@?S|1sk!-mQC|6|A0p)aGE!a2eVto??mcHZX?u z?z4Gllica9LwdpU+lp0ZYw;FYuR*+gGdGH#=hu5mwO23wa=I5OlG)Ts>+h1YIm@H`9k&QUF&` zt5wIly`zhW4LNXKXD%Z+^|==d5d9%(zG7L2j_P6d>Q(>MH=g^`o9pQmfPL}ib{n*U z+CE56Z?5bFEVLWBmv>RwSu|wBk>uK(X=;~##6ph($u%~A9A|VfWCq(Tlhu*PV`#j2 z|Jnv_LH@;=922MQ&4V*klM&%Tw_>9lwV9Df)Thm3y9C{BZ|45Nx9?v7?PN1ski7nk zScdN>Z^^$}O}`^AFukOGS)j|>MG@RQXjb9cT_@fiXZe#{&UvEOXvQ{ZDm>Z#A%F2W zDAZG#1w|A8$zKerA-3<%9jYhXW+Ik08l}A9p3%LWh2O{P!#G2UEo>$>OWaVx<5$e~C!n~b*E zc#y<%eHYACIMeb`|I;k>sNfg#?t7G(e1pycXk{x+Gx9H_g{-0%g~@a*Z)d0f5?bsu zGq@%0C?#Yz3ox4ta(6dClH~2Hc={Mm%*_3-YI2N&Z9uW1mY({afFJ$>-+M3{D4ayK z3tYI%MeQr9N=c0qJHnrqew@WunsqP~zuE-+XM>P-Gi;NKC4#E2yfYnek8_ z;_l@&+(*7+zO@}m@KC(CwnzTzc|ZL_CiTD{fwou7kksGtReK?)}*admfd zzc7NG3d5t-bQoPUo|aJpo@bQljKUlo1zC*0Pzn=Q2$^Y{!4^0NTi^n0ff29;X86J} zapnWWVd#vey zRlbtfgN4a6N4$)#)yrp65AXuH}q28c@K@dfZ#%f9=kd z`g@ySO75R!pNnprEL5L^;EV$09ee_GrcBWB{n1-rKe^y!)@;y#mh=MiDLWge;29zO7f~o8h5g8kmjbJjbN-TS_QMh)zdJh6EpR zzg0dYTqI{Di^KVA)X&IxzUOznUv*w2!R%z`Fr6Rl5qo(|r~w&s zGW_p|9H(8F4LB7?f(l5Tu4LAF%z|Hsf0=sHuPe7d_1=c7IHJ7xfk(x}L18l09S2T& zE1&d_{e7!CxcRzAE28iQ=LUt_Y^A&`y~^{G!Vcj`plY$wPqai+-bg|=>|j{9BqQ{u zYdfk5C^v8_o{R0Vw&8kiF(FaeZUb;x&wZ2zHZV6b*>v^a<_Tsbe0YnbP#PFwMV1&S zT|J!KQx~=T>9u{;2iee6AK#$qGv*|Wba8~Rx$EEDdD+=V1Ld8CEZS$NL85eL^sp=3ZL4P&*L z2olaBK5X)@%m7m4AA}*GzWhm?9V+$v`9Yj$L=~#Ik-29uDj45}} zH?3PnDP${+c*1=?s(^$ll*+4_nS89Licx zJ@q}domn58<;13`itnX>_Rv+WTs>zTdquoBUD23x96XvDcS^(ZpNUH<5;gM%!If#h zI0$MC*TKiWim@_QiZ#DoJj^kPCY-cHeBm!_Lp%mJ5>z1#b1~weny=lPYw2OoQGm|> zBHzC|56R{DF~eklifQxTM=`~JMlm4!TxOxGep40N#wWNRogN3O|8gJf1s*hzpuNDO z0P=5p0Th1Ceb8{?lTgtO#!TXak;9|qg2mc{2NDBlmh|ApB*0ADvSo=}R^!d`$$7TM z`x7BJ#?8n=QNTN5C;WaK^FRXf{O@$qz|^%KPaEf$H_R=ui`9Q08Nng+pOG;`Z2$KJ zQ{cMQ@fe6i*2Mnh>I4q7kIqKmKpO=Pw8swv?F5=k^33c)>8}^ndYkcYm9dW7CWORD zjO)s-J-f6>|!=>S!TJ5sd>xOdI4k{5G>EVUIU6 z4lZjixG4Qme7^8mVUIXpJsY&=D{+Av{34JZYv@&H8nI+}t$_t^FQ{gaFjczQ&~dA|y-c|!!3raD+(*-H8w>~u?Y z!J*QqtxItVEDw+7d}(hiWLNSeHg-KA04o(hNyuy>G=0ebUT|jJ_OhP= z(Pi%nK4kw2wY_-ygl1ssWRC`Hkk+j<8_fQx6Dg}S$LSNP()8omn$5A9P=Up?8QC)w zP<;w^vd5g|e_^(dIm=zULo{l2$urMo(B)^Uw?W#)TS9MQ>S2M%qXACp4|W@1W_53t zscQf;|2Dev=-Na|Wm?_>obMHr%|I#a`NI_XF#q#~pY(a(KjCG=k5|aY#)5m8)a(Y( z|H9@M&2atJT3a@qrq|U`4c$Aq^e^`r+hHOEnj5^8{X||gQbq;kd7gj2As3=A^Jte+$VCJ`x51Gw`gx~9I zNDVePlZF_`eNHb4Qj!0Zvq|7{FCi56yoB}sK=EO5v>@8lcLjd5&lJyuf|4+A24a{% zQ$6z5`h+x_43AM8AQk1%j6s$i%)!y5YmySl8&_fu3jX8oASLVNYpU4SWEc~SD=AI& zaf6eXiLJ8*PRzAJ!^eUp?Ot;=9I}8?gcD~ zZ+U7)BE9sOOo&2gf+$nfbyg>DtXsQIQ9Au)!S6)X;$vc*~qRl z+0O+-$=qt6Dx|!|T!x^}RjE2@V>gdJUw#sKHJ`taJxN$c0W#Kf;V^j zj~h6hA)z#Y7r5wxgp6IqyR>+*+eDwJ3<|mt0wWti72nPWEon?FFGfKh!V@|NP!M$% z!vokfU+<31o})oq0QZ|N#kI155ZpI6(0hI!^&_cb&e!KVP>5It(!JD}g5?jxgC0fS z0XYzr>iRKm>4ru12@t~D>QQva9PQA>WE>C}LFbvhwr~9qiX%Av3^OFmRVi3@qKzDg zP02mS>FHc4IVC_*ueu{Pi}cZiCdo10p2b;CJ=0u_r!wxx(rL*^(^@!7V^4TFxuEzh zZ^g;ufG1p(XD-5I<}XhK%(2@&1Y~hpb0KlxyvAP8scr`JA|im&gn?pvP`eJpwg;~6 z_i&r6kj~9o5}19eAl^yfXMhYirTBs_7~mZC=!OAO+<&`a&`o$VqvS(oB51d6sGulu z8|eh2cHp`>qDzbhg>g^NjxS3AG%~3Ay#B$ZZ7FqjeS-aW%_hRnFgsTHk&Wy1c<*5( zYjzWM{HUtg^?#fI!9nN0vHbwop;&#(4gd6-;kE>;%Llf6CZ?7<(!$D19666q_E;Ou z$038)r=k9JEejZ7eKw#y;GU1dm7DAbFXI+;%b>?%Fy4ad{{Lk=i+KW8O!4?DRy3#^ zeCi^oRAAkE*!MgX7G$k~|7=nmEJYi8hWIr4YI6T=TL*4B9}N*f4*L;gbb%X!y;3OT z{LOmcK|D@0mIl=}GCQV=jc5n?)V-m)m`5t$Au)mc?RjfxzPEC(zrEXz#LpU9KRNkZ zV@~rHhUtRGs(xl%ehW~A&4A8I7*Lu=2NJqJ@s$HnJS>Ff#~a4*K`YcjLJJ%lm;)!YJ6iR&d}f3hXphde9P3i_x4-NcIND2OA<@{j%L z3jdkSni>WR_N3(`;$GR`$Wk~T2R7AJlEwAL*#p3&1IA0TBSc;5EBNVF&@#Ur{42+e zQX}vZS)ieH2Roc`(nHz?GV=-r6ZE<$Z+bx& z4?47<14F6Pa}*l(o$<<+AMGPQ(jt`fRq*#`0vfEo2g5vFSzmw(R6}joWQ$Z*#8}OXk;&GpQ5f^8?Xz;5dmOC6P#}jujRuyGU*0L zLR`E|_3gVhalC~rym>A+eL68^T=fMtR_ljBN71!;d*?E=)auIY#la^|(tG`7%+M;} zX76(K>TLUJ;KuN3$R$3&?EI+xm;^WeaI*3$Q>JoJUT8sczRCU6yV;GCCK>CKU@|hM z<^a{YZkAKJiGlR2e8K$@ISB(nx~9;l`&Fd*Q;%MDceaz0?bJ&a6H1( zPFAZ+_qiPs_3{?}wVSZn6l2&ehG3?`O;zEsv-JTx9bzO_>ZfnRE>g{Wp2FuKb&0&3 zSUDt1Od)@EymESjD2+yYS!#Q42mWkhDEO7y)n;a8Um+&udEqO?!_KvipXw@e`5_|c z<&eCu9U>I1y1OhCgtD9borh)ZIKg*+PS*;=(_1;M(x0Umg* zBHdgZ+}BwVIA51J4rJ{v(C45Hcto|@Vj}j7|A)7?42$FW)ZN;7)KD+}&M+>)@`z9fHGPXMX>E&ffd%E6@FK_I>(8chz*SRkhYzYieq$ z-{p~}_rjOVt2R19GSs?()T_@hsk+lc=w&Gw>F`ZUr^g?%rH)DV#e(DQ2TPx(;KenJ z*ZwzyeERe$P^R3ZK%KV_)^_B5#vRQZYQfJ_bUAJEK z*{`nV{fbCaT;Ycm6Qi0E9FnXB2EJaZ4!t{(`3j~wo#f40gVRQx#rCg+jZni8r==YYZ@~k)5>1lT}^(w6#Oe3 zu1g%Q%SrFpNg`x)--#t{ih$Xnpj)V3*rxzz#f4^PBK3dXbE)_r_W%UUh6S{lwWzxE z9zW@6xD%!bXtMSYu!Bjh(njf(c+=kHJMis_A6+8wFECl9rOUi}VZ@te5EJ^3eTruH zQ?cTw7W6+AIO=Z6kIkxAxOku=Za6XgFITjcx$wc8>;!M}KD^0O%B=OO{B6#N*U@k( zhHxnWTujsAemGXz)V@An0XtkwRGGc}@#XxmYM;aZf`IIQcIZGFX|{dQOeksfpgqUG zD}sUe3jUKKgZx##vOUsZrksD%16MO+Hp%<%s2E5)DLqpja9*#Oixv`g^wkr>y4g0aZkgb;SWjC(SYZOtLAnk&} zmCstQ2BzB^U54!bpS+FmzkB<&*7VJ%Kot=2aXaUK7PFTMZ!vG$8C=YfK^R=jdoAq# zX6!T(_yGUtyERh)jPa85WxykakXh}3H@fG%ymy7++X*WES#K+}SQW>AxxpLmhPzbs z{0m;V8yx5RTQu=lQq6h)x?%v(!Sn2#{=4@Ud1)*k^Z)BR^G5Y6HC$!JJr4W z;`I9cOCg7|`VPi55s3?$2KTGLi#sw|kyHKZ3GD_RV9V!bXX&6ZYeY&G1B&vZn`#;a9T@vd}Bhkvo?c_N56aJ{x8zc znHN{=mwgSc%4LkC_?5j1p{(>hAF4a-^3EjrlX{x1S1;FVE@)#vS;-O21vv5o4Ru4X zoQD7vfIu`6mx#GVUgE~35Mg#uL{|SJugf`I$lsZ6U%Rr0RpHYxK_YXbN^38P_uLcL zsoy?!c&5CU5IRkS++*M@CRJW`eht&FU6^0w_vn8sVb-ZXMMX(DTnArP(0MlN{)kEC zT*93?vPQC!s$={4=}-98x^548`AM9SMUUZ*6wudv;G7=92vrZ?ieS4Q>e|x#biK?} zH8*H@O0GIvC8?S$bY1DSwiQEDg+Tb?LPA>OKrT=uD z{1aazgXTc^@Ow89|78105i$(lV$s?c02Ej`Hqp{zSflAI>~sM-%SI4L&R~gTnLu$* z`@+tJ_2PI4zsXP)M>VS>Rke|G$w*Iv1ee4)&Vrt;F-HA-ZF+u`wYJ+3Da763e4uYU zUXBZGA6`0|WqxHoJP+8Z~6xozQKJJsaHT|0Nvl0JOHpD}EvBKsN#Tj~{u zT0=U>(c*_873GoCFcbf`=eQP19nsC(H`lbj>&HVo8;|8RTNIXh@~Z)yz+#cRYx{7w63dK9d^*o{oIb)Rw9pQiNLUSLpdoOa}*R zh(za{hsqB@PM$|`jEX?Lhv}u!$jRNpL-*{F%RF<7?yui_34z=+zx;157QZJSGQG16 z-=c5rSo}+B*{Z=SN4DB{;uOK%u(h=wk#$IDt5zLi0Z*H7m|9h0))7U#%Gm(gN{d2a z5A=7J-H|)L7PqMx$-~-V6ge-`j?PRbZFUiHqMuE#Fv33;+t&wLpePRKJv8wpRt-%> z1@hLfbQZvVr^?4_V&T8$3Gx+(;zHUQmN+f7tYxY=&ROlL&O0i=RmroH1N~Cz6wf8$ z56teCu8j=^&H|4zzNoqjOEnBhUU|RA@sF$I}(h=L`RPqL@iZXL3d z%cpGfty4cCLci=yK0#bf7YDHkMAf)XUpmkpRk=rXx(Ukx7d~7S>Gyo#{mVT2Fk11A zYgK1Gs8e(wqr~~`rpvBlp5iBhPdnp`zClEKq%*{e=bODB^_SujSB%pK4AS&zgy)}~b*3GlYKukX%s)$HqgSWn!aS?0AzXW6UXQ|N4m}Eg6rM4GKIP)0@0xqzv zs3lVI|9OPvPBESVdw})aP)BDc3#{8a@4FxZ(+9ksN8UbJqTUv1r7`h# z2nlv1>xnFGvH3MI_@s|{+JGw(pPP9+glQeOYGmx~KZRzYeq2S-0gc}Fu7CGu(syFv zM!S>%JO5!~=)lcJel!w0ZZ7S3KAq?__-QRw(>tg1y4e~%qpk`f*wL7jk&(LUko%03 z{nzouzyF~BWk^7uc+ZN5_KK4wG3zTbJphF$L=iV&_MYC;yM;UcsVu(5dyh7c8;2nE zqH~hGD$|dF`4xE|_+#0N-KE_R3#BV<#vaip7DR|DHB&36RqDbqE6@y_6ieK`F0g-d8%rZ-%|x@WrccG1 zxcV`^Vp^;7y(RCZqIUK#q(~4Z(s`lPiLwbI~`o&7E(uI$wVd z9Fu$|h+yVmqhFY*_V1nH zBBYwBVBhLG-pq6^ zoqIfs->mX&PHw!nNEEf1ZXjK*R!3I9XIy-;#f)b{;?hy+)Rdx;0H z87r6egW0cfbIM{pIK@lWXZu>9>IK5l^IV>fiae<=#% zB+dBjU6~kP>o>YQkGQJ0cM`}!-n+W3b_Lugmj(9?Hz${qkL$y886AI?6>eP9+iou- z?yr}K9-f~eA}v`dP*CVZ4((Vnt1!@GK-4Tf;}SnM#{EEjc~r^Q+`f?Na<^ z5(0OPS;=t%h_15lhJJIWHO}Qra5=|9qMCmufi183D9JWW*@RXY!ZX+};?7zHH+M`8 z9$xW(Gxp49yBD(Hx{SkhmcW=Tq5R<8GhLbVtFU|YjcGlj;onk#{emM_xgy1=b$Tz% zl)?=D(j|kQ_rADT`?TA3Cr#j=`yq2<8mvzm{V7*P3kHaKBcR4HH+K}*m6s>IBgUR> zMD!M(^~zt6=$E(r%F)>!a4;au%9kpGJHyjn+lOO`Td`ejxf1(*$8)ghBX&_nuqkE+ z>qTwwFuJ(F%E%``*A}UPX-Tb0rDEGpdp`n|`s4TEnJ|3bU;E-Qx1|kUR&Cb&^mI~p z6CiqZn}(c`=|5If-U3@!yg?k-;9<8jvmFLVw~Gv4eu)s%jTVr5s$ z#D8(MA6NE;I;(MM23~?uX;@Nx$hbFm6a%CE?S)c3geMnFxh}o@yKjosz8V=vLb~{e zDXVg^>kB397H3mIgA-_AOqNl9Rnvq?^;vJjbd#VpE1b;Huhnz1zqY^80){5-sNA*} z_Div~z40S}8~)S5riTEWeyI|-yNdSai!dkpHEyAN>>3X&T5 zwqHT*bXH)i^CvRus~4+LaD{UX#>Ny>>;az}`|QV6RXa~wF!ufXgLq8t!h~f|;b`s- zfr=+6b!yb#vMnPiBX5^Fkadt;bVt$^b}#JXpw0`ZZnaXmxat9qSC0bcGmk5x9k-t+ z2s`H<;Vd`Ti3()x9na9KcBw)sZ=(=TNj+zRJ6N}wc78_(c+-D1Lr>qJwfei& zX2ex^vAB%{tGXC&mAIi&EuDrj;RHvvh1ir-{x1+^vIJX%G2tLbj0M%dRX`-TBCH7) zII1m-rv~zW$x;4OVMy4^5o&=WGewuL1jo>;E`tVJ63_uinjEECE*9=m~Z*x1AExmrBjq# zXYob09M{=R?O@=~hjy0*mDPtG7-*myqP)_B)XV(HeL%-On#j<^Yx#h3j|2E!dbke!YR1WN3# zvfSK5g;z!jZcA2<&T-b3!wYVal8d%NYI8!zlupUsG+HTz^%vh|-ajX&giI$-3mAQ} z8H-y;29@1VI^W-{HYyxInC$syxF^!hSwweH&;01&q2x4 z-kaBoVUn2bNvvIS%?m;BK}`OD&mQ|X+p~qNK#u9%)ff1OxqWZ-G9ZF)^_D?hV@V5X ze=W@5Lw$_NzdPaSI?`?|Idrl61yzvTMi`N(R~f|neFhk}CyG@$Y>tc#aG=o(mEV9W zf3iY;+Bikh10eY^CRW=ke%Xb609Y z>`ci{6C@_2JV90qQ!jrS5Ob9lla0s>`quK1vqgYC8Ei@bkDaCAuJiNOE~W$(|ClRH zDO}0@;cv`+zG`3NfS2}TQ`V_cj4ys9C&Ww@0q>hjCdJqEs=E{Aj#lP2+OVZ-phvLnj_ay7W&Qg&MOnk;c&tnQ~pg+53OGkDmtPGJx#Iz-m^ii># z{q$laF8#d7=$o*{TGsGLqJ4t*v7Qs`Vog8BsWm|{l!Br?Zz^|uDI*8`L<|#fo#wSI zIRf9Vg^>p8ZSmmKHG`xpA_hzVQnVf>vq`HQe|LPeq@-mh8ho!N48+_L|IRPa4;%J@ zCn!+@c6QXLZv!Xd+3=Hy@oUf*;?p?@(c!xTx~oe#&VLLS3*a|4r}&x1KuV}TqvwcO z&Xs%-pBeR7#nD0ad#N^W&O+r9QDchLWb3~5GH+aFvP7!4Zn2M`*eb0LFo0euN(P_s z?fbKIQ6~A|F6>EFq7Pnmd8nJtS)pPv(oQp2a1djP(s^*HD5K@74icymAbjbg8;(xV z{Uk#h*hN^45N<`X8EhX#*b)4`t57b^Gn~#6Su5tP@iRN)d}N^7*v!wcq17={;uDxmu5S z(xldQQ{dr}AN_IruEvba8#dGiJo^jNR>o~% zTmB4gl|tt|e|bQ|ly2!E=I1w>JLntz%VGR?vq0z*=1Av7on%>ha4a>!;?$xgWQPkhEq+Abf<&#D6-JRVYXo&K=T7!oyM;9S1(Q)dNBC##Z z>dxE~IM?da`hVI*wf@qOtux`g{BW-Ix%C&bT{0zS+wEIPZ*j|V#oJug0O22ZEnP;f zU)BSSQ1o`!XBE_VW>qtysg>NuVi;r2S99$AcyZcM97DP=07B(k(v%`Q6~`~#K6C;q zdM?Nh1L4SCg6w#2m(4+cF!WClNJsH*eT`nhCBd)UJ_|{^hG$DSeEmz``uHkxD(f_r zVLs$mcam?U$ixqd@p115y+(;CM%d-=YQ1Czl8{85JHC-*`Kc=D-%MEd)Ye#)A_2X% zOmEWG0o!AMGpJe8610rL=12=}{<0j~SKAiZEtp<$9GZ);5J{uW^ha?a*)_zoE2%lr zqFkwA0?pm_C#yTr$n?!;^YZZq#lc7FDOV%CrjDw1<(~aX*>|)PJ@YFxe~gSA-@T2eOv{%%lS1wm$Cfw#B`YRp=r5!BRW zjZ**ip}{m;LQiYago~0hXwF(1y3YB!uXN|-@b-6hixG=idnWr7;?`xFD9kiD%S_Rj z$@*E-Nn+g^8OMk@d?*J*kj0b>(Fj~4@0gt%vrJ+j{cb34KbC-5LB!~!U1_b(Ik^e$ zDL@LE)^+zPfGAShD-Ef}v%ROu-8(f=U~sb&?b*UPu?uO0{I6<~6@rjKe)~F=t#sJ)NgwEPOkm8Em}XC zSz3@M-N9EFWcyo#N`O2`cN=7H5Oy zlZQo-_s-5P+(M9!Ph@K}D zuTXl2JvT#2#$f1;t<*Cv?rS3v?rZQ4yX&?6zDMhCwS{+BaOIwF5v7gu#|NDeq&{tz zx}Ml=yLQzi+0-%p{Ig?&das0NYbvL)JWQH-G$(o`N;XKePhP+6>@NKQ5%QeHjyeqV;=al$1{`FaD$$N!J~kR zvF7iGYkrLppBs1_Lhd9wPa`qvdmAv73tnvo{wylxIpw~Ap|`bDFyaX)Brzz@Vkn-p ze{k+}r9m?-_DDkCD#V!q(KpGpVd2$NhQt z%F5Bf@OHx{_Wr{JVB1hL6}HwiSuoYx3%vr$bsu++9JtybWlvf7dXL+#;9G@@O>9RF z!KjMAIlTvP?nr`wa~wGeZXjNlL}w22V}Zr(PJn|=0-)ZRHD z%`X3E#zT|W+>97eXKu~eX=3c!>f;SRx|!Md5wRIXVMq<|lYstv&Al4~k8p}lQ#hQw zGHR>O)Z#n9-`1q7t-Urj`u$lTgA9@bDVY%l@18Y8nf7-PKib~>3FqV*yD8nO#EE&Nn+@?wbLtB zDmofNto%jtc!N<3>w){QLkmz_Qs-gMW5v=Gq(&oATt>#U&259wEQxKOhJHVpy@$Ib z{N82B!XG`--J}qcX7Trw4U2ZwN2>aDAkqc|8wSE^EM&aGe=*QKQwhZowD^(JurQ%< zZS4jbefYe0DbyQDv(Fjjo5jnVgr~sZcJ8T(tm#4cW6NUyO%n&z)4%vDg9nE5Zbn#! zCu3<+K1|9)u@8ESb|h_0T<&GKvom?0WmxU@Pr7U7R!zEH$ZX!<9krg_t_exqj@~Zx z0nN9*!#5A!SLhrG#!P|wkAb~M;HuE2#UUQzpzdCb@0J%Q`5#JiQu*-C*F*1ifC)4< z0ggMTY%!kZ_Kw!v*&GGzk@Mqz#@UmNf%JS~L3xGJ0wljxbbewOc)mAFQy=N|5SdV` zt$P3Fn*TnV@i0$}-%5Bl`aBD|=6R6-oO@1#5rfzqyX-Afj4g>d*>mkLj?cCY#-a=n z!2#HR%W0^EPLD!(7B@4=yQr-}_fdFZj6P5GvqJHA9YyChhI(`hXH7D;!nclUJ2pf_ zqpf&EOObz-Tg%>b;XLO2s>^*-Ptnr$A?Col=mTzYyG6?QBbvxQRE$Osx-Ycru+KyjVJ4apl63neN_jBRs;H@Sa z?MLmDP<_3)1cljrdoIcA*x%OOhrKHyh$Tmel7rGlP0Uix)CfAH-BJiB0e!ST_cPT_ zu^7wv+lBdV&IHFIwkD+5oLR-PlNYM=!xg*Fi>$~~RFmJK5}p_JLfpoj3o`BEkQX~M zakyT0gL*VpM^%OqbmkBqr;vAu$nK?MS)(>}I#h5YL-bv06zY+F2iCuJDi4v$R<$K$ zp&U*St5vbOK{Iz>2py1!1GFaALg`*nx38hqn~f_OA{WWa_UyddoeIOFPGkwc?{-Zu zufviKT^@Zc8lkBmrSo~>Xv9WvJf`YqTHkZ-=MS-Jp(TTXVO)e-!s2d{6y3&;m4OT9 z*0xR!zJqn!Q-`)TOFDdn(@iUN-rf7qE3z7QqT~-|eYAe=*Of`oSirks`=g5<6Oym; zdqhC$`yZNA|$$)F7cOHl2`378JM+k@Oz1G9_!xKz^VyEIA>T8!IHCJ5-rg9wEV=_JkaF* z+T#spT^vs=qssKj#*({zI_E6Y5*j;dA)Ie*7*~B5>M4-U?juo+zNqx z>M0SID2+Nmj@T#)6wIYJ?UMFWXO)_+&b3(L{4LA4kuz?->&#$BBX?g=r5JuzqXveU+8q zyO!^l-wy891~MX9$WZbq>EjQa{PXcFCBX@yL z99CPG`r(G+5V@u;UoJsv3=s!MN9XYO9$+qW*kj?AL(Sz^rsWjLQ@$gx@6%=8MqO?DJ(oF`vvlYkC%A;4<;58x|wehiH01GPJbd)!djIix~^9 z(ySvQ1D>7AJ6tx6+|>o^AusD7_bLlgG1Lt!zj3}COXLoHNvUf(M$}}hhompb&6$!S zJ3P9)uF0}ykHVF?a(OK$Y}ev$Uoy@!+IVE|yonPwJYBUCS4UKWQQh1*7_$V{N6B=d zj8)^NvT|H{S8H5xyd&+^=TdWjfQZ!O)8f0J2sAd62YhQ=`7(vn*36o2zqEPKhhiE* zxCH&NCV?hdbvKp|Tz@ONfYp zE!Z)lsp$GaAkM!!M0R-~VL=mqT(LsepZeXX#XWuwY*)QiPn7hkaD^)4K)!~nVdaZ# zpUaeE%f9x?pO164+$=;WYTUVs#SKK}uuL`XYJ=>(ij{!@V&QVI?rt4XDg)ev`7bQF z2PM0v{;do4>^A0b<#64=e^uU-UzZzHbQG53 zPytOIcZ9{QO{hhyg9s{Pk^79>E_=eY&leF)XF4H z@QClJ2LFwl2b=n{*q^usLvEc|nyS~j7gT0T4m7)fEG3%bZ`ZmBP@Ryg+G6z^8@`vr zGhn$Zv?0s_p;5>RedzklY*q6DQ3nkZ^g5<~FXfFiL2n{CEOzIpN!g86e^>Pe}B)ou6 zA#osQmakK&sxk2(*(oyovIynqd!)@%?Y%@YA-s!8|1uaXfg!On$ie;XZiHKs7f{Xi zPL&BGi<%Mxqpw>&E4W)HBZ!3=C4hoH`9J_35m3atA+!gVfud6af8FKIdoPE#OOJ6p zM&n3_ND0psn9$ZsG0|e9NNDVbOvpKmjo0n!$U|Mcak^^h;sP6Wi(}tw>K3BKn@L<2 zq8Z7cwENy}9~Ij?Gq4z-w*!GBKBMxlqgYA6p*CmJWw9WOz*cxC@~ zDqE3o-J?ie)Z9Ib!;+MK&@)b=iygB^$o|&3ecAo~LY%lSTB@N%sB3lb4M3jC{%SqQ z*jubCPWG$0^kR;eZ2DGL8#AAbr&sx_msF!aVgCO6-{|nAsZ}MZINB6h&ei<{v0~sX zq${-Kr%X>NZH-YoNwe$7B>bur4j?AtbtiIS@$;g7sxM8}{(;1n$2_+|c=~#CwC~Ym zvLw0}G)caUpR+~ezlyrb_XH@TQBtHk)FSE+siDRJ5?-;$_~Iv(Ck+ z+%J@UJp`NJa0kv4jn>xWbZ4*X3x(@1F1N-Eb^&Xq8#70ie8OBCdxzx;`BYg$Wfb^7 z)WwBKGVmiaQYRPMrAN2wZOsR7uK%vVGpm<{@|00@Tp*%^I6PiQ3@FaFOXsQBu8m)I zUE5?g#$^eU5{&`1m42J{UQprNg!|v|`m2SPkU_0nUlW2-3HrrZP8_+MhIZ6JXpovkOvbY2DpnN>AoW)@4p^~N5@Z}Qqy*KItNlnyt zB~mR!u+WA0O1suiouYc!ctXCKIq~RsH0F`t)Dh3XRVRRssZ6sVovgCUSJ|pqRdTDB zE!kVn!M=?4>#$2`kE?PiDb+(NX5~nvdb4uZfdmoTSBF~GB?f5H4@w9(CQCK$S1MO< z5ldzpl>d~+x0tmb5TkR;(|Qnf40SzSWm(h_Sbp<(ji#KkwLt?icbK9K*>! z*r8o1Dl1WqAz!meH%H5#4N5kpjsHe+JbuXrW%4svzARWU`D=au_L@8RS}l7)dY*j& z{_HqdnUi0x15_(23V&9vCibHmEx#e?muZ0s@QvsQjz%cc|G5z@~v4iV0a>yA05I&U%$Iuo;YEvin-*JoOSM~&qmnkDJD!)_Aae5v{= znId^tbB`?RC;(+8$J#Z8mmsidZne*~KNq(IUEe<-gYn&$tIySOpBpQ{-U@8FE|noTuEN$8v|b4sqU;&kKilU{5AVM$2;`b zp|?+>)jqVmNyDz@g9A66`>w>>0L)7=mwxIr_gnD=eD+$nW|S;5w}yH5&3y+0(76Iv zd8iDQZuW?kT~&hVsn3Q2*ur1^Jij-dki(+I8yb%hAptD~@a83Q2X(~wnMgMtOnsPf zPxhdp*GnrOzx;Z|@FDEY6q!z*i7%P9V8*KU8Y5dtl)kcM{&4~X&q;81 zGT={t`(BJh@D8}?a9lU_{Hd$|)i$qp`_jY3{`w0I?lusf61HF6+`k$SV)(t3c@YKT z5lj@K&O~ZJ{GJq$!HuH=oE^^IG8Q!-t+ZrMQ{Xmx^V9yATYTFW@-5?tB?l#sfxiC0 zI4D0+S_AXdRJJ7jaL({gVS$C`*4x91;f32RmQqnIIWGfJU;SIMWx!$LL~J zi)ps3PzHhusdvXjNK`{JA;FVbAoEF?A~`W*kF4?VUgO5Ss9+|Bu>(C@mPI7tj}$IL zprcZ4im!NIC_=Zob1bGELg3#ZAw0EKmsCSnA#bO$6e(lipcI3HQld7LU}fz>Gr$={ zSI3x&^q9gy;qo0|!puT_j~P3rov$=ZO;Kx1weg380uD!tE+@L_U^pzW;gjk@%m{s& z%R)>e?SLh7u@bT^tI6PbjV3XFrY~Y3p^_vC#>C+9m^Q45gI~ehgqUzdVjA$_Sc<{X z9P(C2pERv=hD*s-9O?`RnuqdxbHuAdB@&{bENcggBu$tiX5P&+hX zypCwh@N!~;LbXpsWzjLZ=I*I;N+lCqKO4ZcEeFB1`NOsC3c|D#luau zqDU`u_vC4epLaZldIK1N7CvrS!Wk>N@(N})JyE1PY#Fx;wUNQmG9QYah@l|uZhUf0 z+KgD)m`|~@)yHK?Q693dN;d$63I-32gPv&i&HNS*XP^ z`jhj*she_v>`IQ;z!5IXP@xu8MsrvVTaCsSb_o+<4wI;_+G&?8ctcKtOwo&(K`y&~ zy7H-JUxm58;{|QoBez*=_EU5u*Upd6scaaTRZG-_-e(_2Uxrn zCae$}*`=&=A6d#tdq!L>vP}N>eP#wNIP~v0Sy7llCSWrs^N;K-iB;Cf41iV`RX=9H z+OFDk&T-JukgS+-7sYr$-8-(gvKaMvf_rTE231DiKSw{eQPzCwSh(`bM{F*5e740PY~r3OG>A-eWG-|( z7jQK=ud2(!ayeJ7*qCC5dDP(?uyK5mIu-eA9?|3@mk``fo-z7Eh zpe7_HTD8+hCK_|%oC`Y4o7wqXJ`h|RD-si3Yet(mldAbyr6EIJ+dQW443U$#Q%MpU zc9K>-9p%5N*{TQ8;P?N?G;}| zw;5Z-@D8PFMV`$)R|O-6+^Mv7i3Ogs?F0tLHFWThPAjcVezP?0sJY78rTS2!Xp`h_ z!mySj^3)I8Xr(zuhZ`t6+%t7q!5QYsCnL{Sv6^EnhcuVywt!=fFLCDNaQi(ki$aTr z+@gA&m6slH=Acz*jKU5h7LeGD=B99hQ<7kf`lsMSQ!UBZUT5!ve$O-IwO#90UG2HC zqic`3D~U+mCJ%1@hx^8BJ+!e^YC!Gq@5gd2c;wHP4inm>f1WmCF$9&b1J#BE|KR zhif*Z-+z>_(Hes~GlB)V=jv*qKU_a*N|w)+TY){M%dMKBxhhc|K4rW%i z!?xuV$j)$Jz>>q=z3|h%HlI2!pS>+`w_jj;B6MfmdVbZtbTeF{HoRSjp?UJ`d33(0 zAX;ADZgV#d`@Y)XRVc_X)V^J?Mk#$$#!+t#F7qydGM<(3d>~F;rZiqV=nsdaYqfaY zovhzioUAe1CJZO)wdykItv$nhIB~g zH%M>Q8|Zj+Sn;`=yC?H`xULD(OXPmUo20sAEujuvY`5>VUAr@Yp+nYNh6`-hgl_HE zj;dD5Y>EUw=dl&b%$Ux6FP4fgWcxt)E+SAuG$(5!Um|K>L%dilz6d2=kv?8Y^%DmL zA!Y;+EFngjjX4o)F7~gozrLQ=~J; z;XomL6Y*0*Bqvj8{GTGiI}y?G_y74cp~!*rPF(aqPH68$yT@5L{^OLBtuz4?nyYa9 zY5nc)d+}=b%_wRr9uKpf?tiUdvit8kfd4MR|Mzms?f%OF{MU;ApUc31Y0v*>^{7&J+6(s5?m@&%&4lU!nblk?qejr@cyWVd!JD+j5+w7jh7=}j>SK;ULm9h5I zC=6Rs6zZ+Dnk5n|lw1DJ-kDaiBhu-dTe}STDDy z*!d{u95?YsvhI+UoHp^yB;~Pvp5AW|R+vjZpxx2ZyQJ7QToVf~99%t&{0&PtsuS)t z&x#k4B9uwM!w?qMW{3g{_!P%)g2C9_EkqkT#M}qK#L`So;0)~8^PL6SH?;O!4~xDM z+A!vty$E(PNcuDp{@MztFN5U*b8{atT!BCKY}2Q@?vTB`JZtT(pM62ubj|w=Q<@DV zsJ6TNX4YYt`UnoPNophZ$b0SP&643IIqvNu?Qrpw~Ej0*8dEfgLFfIJ<*C%@C>gPP`#6G7H zw6biR6#%ixa*iQz_Me5B_a$mRvTn04Zyhq#&C;FZ2XeHF9R~BRC5UQm%2wP@5&|&p z4pS=`7rb71KBc@dy9r6|4cq$dn&n0ht0*r#VFOqz`6##4#tIa)K|A7w-@A{i1n&x+ z&{_~gUhArSm?$Inv&P}h)s-J%0lcd4l{djL1IeZUt;dq3U^`PDnM0O zmay+;nxvBRCdB0^to`ALRYHIrSxjr$9?H1AXwH-VAZDm?@`CODfS;CXPa5)xC4N#G(tZQ{cyy2%x+E-Im z-EK@S5h^7jX!RIv3KK{#f)$sTIaqiH*mt#sJRKu=C>sq3-bUW+EH;P$HG<6+gxPt! zjZJUHqV5N;5Q7T{4;G*2WxpPO-r9JnvM3#VY6^>pc?!Y^ zf@-^l_bPE=Bpo50D4;{tFu^o8woI*;h7=J0r#YnBe6DAUF$?Is_F|S5P<}eg#YDjl zBUnhDKelMoN1&#BOa-3E;~9ZPf(YaHOu^Ek1{tJfjg&9OxdpdlOgP!$DsVk`=&R_ldZBEi94vNtEF|q{_gwA+oZGCdnR6{*H(XW zOl2AkjSO*5K^{(&hx0-OoSusy_9m%40Ok}!pch^-s}L6mPb8?N@z~6MRV3a1(ff?E z`J(i=iu1eZVMCm}1r!9?H_eB_4U*Y1c-4)_&2AmJH0aVhY^U>RM34JmUjH=xtl=Zm z>~lNg{IJ}upoz>_7u#if!`6LTnY`q`=2R23##@%W-T+Bnca2FV@TuF4#Ppf`t`{++ zvCr*UQ?SO{rcVCo!tDtYG})Qm=UzG5zd_?~knUI+19j})(sQfBEQnqUOjTS5mEPrE zF11DbNJ5us9`hl|J_WU=`D@_7OaA^5kg%*sKYO*{qk!w=1$gxVLxSMe<6jg1#9!QK zpAz3M;J$ms!}d?&PWt~~`n&re^a?3z_{v0fLIzdpM-OsiStG-dK|rlYCGqV|oNzHM zuUyn#WZp_{j8g+y;-U9&&IwKCEAlthr@Sw=Neu=9JdE`m_c4)X&(x4nC?^&1JypJz zE$0xvP}Edc{!zM}6);}D5>&*6CM(=w_(E<|9YxWN82J6tk|fI??XBQ+bj@|ACGtZ1 zRb}AFGU86$S9r2EMug4&MF1jN{>C%-Wkf*`4olc&^y_bgSqR32NakPYDH&eMlH!%T zEa74cy#A0Gf!LRr470V-bP>a_0rg=nu8GNFysO)?e?wG*a;fO2Qz`ltIkiaPt))IO znhPTP^#s6%fP0LzMcjBPVAuECnZ+0-=78sipD}S3f(QxT)JL0C+=P!^-e4|K`XWYD zBb09;OXdlla(QM*j^hH8LHIa%8G$&pX1~9pe`+J1pVh02oZ>Lg6Eb4R%4O>!lo@^G zxYrWtX6XUwo7I78oupLyclDW5AB+sa9v;iBt=7&P@pG{orBR zh)f>w23Psj)-$ zJi#8j^-g1W6=7HBkJ~}R+^3n(f9>w}yKRAtZho9l8~JNtni9iltdjji*+|uiNKYbC zGPo4GyOaII0=qjdud^HB)93nFVIl8OUc)WsZU{HV_386eQbv#EkTYS)fcdsPs_Ew4 zr&&si#vX*ZWxKizDAwt35orIJ)T?218-X33iCQN-43dEytP*GLSaZ<#rw3(kIgaBX5zXV>?6N<(m=LLd;<}H+^=+s+O^&% zr;gZg-58bFc8Z^HYjE8xp*lw1^8)`oINf+Jmjr#B{oQ!46k=J|(nO}*W3sbbWPhO* zlLCF9iGZxVOR9m6Su8(XZ>Adg#G0{p@Vkx9!?I>_tyd-ASI3Z{6@Ne3P7|iZh z{q2{Q6dWUu-=#vYPJZ(mj7h2*fg460s}6}slIWFJH#xWM-1)ABhg&dR*@;#2YoT0Bm_aZ`U16FiSS zGeGYgDOcrwR&0*-xRb2S3T8*@J=)({>fcHBR}1c&G+)h}>;zuYN`Em9F;_;k^ zoghW&ZS8Vx`}r~M_%f{(l@7!CdXtgsXSt#VH6lj0a!bqw5H_vJolly4JD==v7a#C& z7k@HjhSo9Zs7BA!s12!H^oKBCNtx?0kSpGhY6VHfEI(1?QE?S~%x~*Tr}^{1k;g_v zZ|N~K>Ov2I+0pEAvmNqqv)Sa@1eB!P1aNhpVI0xfScN%6tKp~C*#s=S8L$hm6L_^0 zx{SXtB$3x8N6u4ifa|fQ=jPGy-2dmkLP(esjk2?rH7x(IwJsu_$VXL) zfxPRmb!tfBv$%El#N%nQJ0w_s(_{?3=s_-RU#DDvHa(b~i}&bfYfXve#ul>%zHjM= z^WhejIOEP1KO7NGS{AT;8=r;l{)ax>4=|m`H7-0T#Rc>hJ(X1uZgI~m`D)5ZaQnO_ zo+2B|UU~0I8O2>GCP4aNjG;AUW9`NcEci37cCi`a7hC6h=HH%_tJJ8@>bZ1|NFM8pbb^s*jWBt9|;(mAN6&1}O zd7N_b-9N|XzKDCZhRqnq!A*>f#vAwL=n*SG&WH7KAHi&I>H0G;iy^=h@9D=c)i0G4 ztX{F3xnp4dl3XH(@5{Nrt#A5Fzbk+DF7L+@DQlTS?8)udzi+eE=A{n5YA1|nYh?{& z%c%6HSVz^aym%Q@&MeQ$q?lELi~cg(7oXgqMHM?;uU=Qjo=ov$Ot?4s^oxK;vhu7S z&;b?rlSqlQ>cS6xFhuzhhqzTb|A*o}6^utwS*qBtE*Wd~GbDOMXrynAv~FOinow*WS>A@avPwA|!0xr{r8_Pw*kK|3e(A@Zp& zGiKRib(eax3~gMB?&qs1YE8dT_#FAmakN9g{=Rq|p6eSnRc3JCzzaXh^1l3BrBtWE zY+a4M@OxzODS`O5ZPYgRW~gQ1A0FC>&@y^4E0e}kwyTtAO4!n#<9BWZo}6q-;i~{` z!;t61(^i~9>AxgIBFj#UmuMXBKT@B<72YfM%Gn ze`9dM3ydlPoz_{gD$ z-fCLpkk1XzLKvmRdS)S>MSD=p5j`LSBu3mhbE2>(onZOG`y_R5PjS8G`pSKO zu!M?|GF5S%FLgnzssunD987LrA(y+v!1}R==4l6r%k^XSb*lMSh$Zl(cvKibe;!IK zJSm8NP{kYli^yzXziRl@retm|S*Y1&J(Y4n^!stxUZPU!0x;4+MM)*>a&%SXdb*W$ zjS|B~KT#2K`uQoisS4G{5w$LaL+;eRxFoTQ-iC+#&T|M&c~eQHq^NiDS_Lolr2Tdp zdSiV1OTGFN$D)iOL<{aceVl&4lbTg6e`yx8V!I{3i~oq0=aiUFqBvb<>B06~uv_D( zDjM<|pQMPG_~#(s2GMwAVy`Vk!2xu>2~4{S?;dw0m6l3B=VrtwwpK|Ju0pqDx1L&t-kH5BhVM8*ljzGufji#r4NI40ne~iS58+*^0H4v+_v?MXT+E-(@OLspw^s z%7x@ZCCzip?gz)O83VB<83MmMTC+HZEjt4^clP5knpXNW+u%o!oFh!{_Yn-J!;%&5 z=snXlwSR>DfN&UQejhxkE>cio^7ZbPJ$rOEX+7RyK4;Wx^zt4Uk@R`DRxE`-g z2oDYA=P6A{KIiziHv`-Qo}8l%{kFBH!JV%wNY-(OUYP^gFScpC>onfnKG zhWnrDo6^8>ZScTx{g5AL$se`H_A+TAwb){>wQBCNiMC+jTT7s=i!UePrb{H_@SExU z)XzKP{AgI=O(5VvV)0V9cFU>lj`1|~c^@Yvq~(`p#qCZV@R&Udbpo>jI)9ToQVUO! zc@L^BhH*`Ec^+mJE(I=wes1;(ayHV;8^sBeCrvg z97rRnuDf^K&+F#-5zFM)+QZLAUy&c9y#4t7$XKS|W#p+ZB{-<4T# zVc&b0B;NDPV#Ves7IAcKbehWZ$${@XAY5gVbF8=}1@sm87!m$`Ib?kxc^ND4#Ke%z zwfp^x-#N)g2OLu*>>o!-f0R|_bMZ|3mSA}o$^by-##seh~D z_*y+2{%FxhYJYZ7Y~<>py9ojJUkl2^^2f|^pJEBI(D?scl>#V)QB>jko*y$eG?X6L zs7)Db2ZmpS*J>Eu+j++Ok`RN@`zg!Cc>{_ewP(w|_oi?_liQ_)bdz-YL8ESAN78rOkWZf zZEGEvNe=(WBgh2U%*K+BzYr}9HES=K;@mbR?BWcjELbLBP7t`;<$p}z8uvR4$s|-< zcapM;hc_bj9ajeP5Jjc3)`W=E%V3`sU(3~AX-zKJLilX?g`UnqM)g$ zeTRNWIye0cw>zmkI7cuh0)0^NaR}6=K+q*mv9H_vuHX7_7u`y@XK1KNpnoG5UYzj? z+Vg%hjyJYis#HE{uaCO#w5|&hXVv2OVkqkx?hO#@;C)n!RCdqHoxdZSZn`7#l#Dh^ z__ugIxOH7a0@(YK`Mnnuthl#Z;}@-Aicr938Jm)Xe}AhD5@Fp+u{vBDV}T&p4#VEFp3a!f9tb&8c3 z>bOhD32}r(tm7!vP@zzl64#gY3-i|~d&Jh|kp2SllK01#R;8Njd6W|Z&U#9fVztnW zSoL;g2JnT`v@%S_LfbbUsqRXvQ~co0Y7YXd-^rt2TPsFw^#^u=U}WwM~)5 zvoyl_uccL^h7=TJ!8@Zjyz(#V6bNxl34gAO0-cYeqQ*50IF=u@1ip&m&?wDYC)cmD zG?$b;GWufkSuypNcW?^&XhxeEA=cdqLUKRD3wh#KW4HE=6&Z|ur_#*dL%ZqSjRj=P zUpX7!=MBP~SL2ccOUBxfx7K`;IOuhsTDNgJQ?0k0*f%vWel|O{#Aq5Q?jL>_qv4@W z&pABGAxwXJMOjw0>zvyB2lxMc5qqdcdopn#2szrcY#7WNpRSu`LE%qkO-m4cRyo zTgsalrXpe0cINuSD%hg!XU0rx1!o^M6!f+Wx3$ai9@u2(7(_AFt5mFr7|74zXab@t ze7b3SGLR+FQ17s0cB_5`#;j~BCWhR~kF18=s`GwkY!T;QIo z=CZB(1_&-vW?8-{CFCDSbHp*ve#&VV`?8K7V4)p4|0J}p%qp>&KKQ{ELqF|pDi*l~ zZTyOpqCj&uPQc`-u3ZYMhjs{Q%wtd5Uk;U!HIQz_ta)CnmAzG4>+r)Enh!7d)woO z^58*4>H{dLd~@CW7QG6MgV-?^XB=YH^Eub)<^oZv1qEvwEh&HKSn>Kopms^?m=*a4#4cr}4@$-7s!BPDHL=w@x(o+TNnf+m zvcXhxaP~ao)w#6#&8mfIgz$}7j%x&XTlyE)^2(Cqw3_>ed-=08^o?593%=zNNSrA< z8FyM*i?zbGMGP*xPgmR~xk$Mhm-!=FH*?~G*j@Au)b7s~pT?90uZ}B6%T?R@zHqYD z*34N{h&KCt-E{{}l){W1_$R7@>&b|GOoBVy+#GRV^svApHElaGK75~rQ|4OhcjKfj z6tITXwXrp0i^r3D-pk-oWxa(=S}OK3(LgF4~vG)9COic42P?|0UYUtMgjQgn=c#!s$|sawQT*0qU4S4^d`9na2zg1c_NeMk}x<& zh2jGW;VY!k+30X{D2*Ph?cwMv%<*`w16lqe-a^3D?psz8yGPxv@xjZwdGiUY_# zzWU=n#OmhSXhkA~uNhu?xdOl6xZiSk;97pah7Y3d8DV22ITMS+=d{Fvh*Ib9A zRrb_|=NWw5OP#7|-K0WXs7i2Vt7_ND91jAUV=*zwBOXeT3a}#l<{S8ZH-I2-M^H@l zfCpH=h);>-`LRgds+F{nG5_wADz4^jPJJRGDn@9cBMtwJS>@hWzh@lO$#|IZumTA( zdhybC-IMEa4@)WeFNSNc8${~_b@x<1R1%67&}TnTB#vY2*5%Jvm|=W z9UAm0?NyG&rxAZevx3EiE=qa8#^d{&%`iLQy*-`iW*Ffh)zfwdaVBXWxARYy240GL zs`lUHt!cS^UG)O;QW!oTxlb^Nx)6R@+1zk&VZAGQP!a!>d#k%I6I~4Ao^TN`Jo@N^ zgIOlMPpplk7>B?cKltpo!9M+~!?FtwK_x!|I)!3At#OpjrC)9S<+9SnQdQ?d)+=93 z;2`F7QD3y0UhS@Gnxto^NQ%YfC#MSjI_+ep! z6n^(+G|}(rmC-q>CaJJOmWBY$>C4SK%F+V|W*91RJAO}p9Y4lx4~fMoY4#~3dn+xP zw`UVDggI3f=4>a1sJtRTlt$L14ofsM0?78ptWyddODE}Op$mG8SuON++Zj9LZU@!F zX9H*5L#6X`SIK0J>+7Tz7q+RpM|(@+^;b(Bt1oXwyqeYZEv4|#mXvcOnHFQL@54)s zj$@OS9H}82f{0Z&s_2E@lc{073o80I_%zke8 zQ}cpt{L$%gvF#B2gP;3W6#Q40uL}ucNM^w>b>O|j4rJ4{?0Qzx!rQ&>`|(f6Y@8y4 zW-G6l@UMv_58a*pfvw8ax?f$o&wyXof&ztHkX0ip=J;~>M!Ddwt-C2ihyd!q%Q&7M zk{xI4K-H3z-u!J(gZR*!tA0Fha5}!na+bzx$66&yuttrpyeynCuZCzWUZH@C3X#u} zd;F>}#O+%HOOET)G7V&h{SP$q=8(;K(GA8NU=TJ4j}LO2rER^kR)q-i0qShWWs!_I zMD6z0%7E!7XydrXWBoz2I8 z5%59@1G^1~+N0H7kO&H0%1iWOHCC))y5bPNUd&lRtfy&($psv$XVU zg$>eW3s#h!w8E^OU`dB@&WY>q{_eNp%^7uEdqKwY;JJ3+3T)6aCdiWJgAS)V&Ykq| zqvtufFckT5zQPt4)nz_MPQ|OjP`9iGj+{G8;*$`0J}FqOBx+s=;8K+r(!upoz);lDR3yL$UcN$Ra}np}g4a-B3I+U46@qOCuggOks%&tK1xW#ubx zJ$@oo!11QSuu$ed#yEUPc2H#Hb@tg+(!sz>*J$tG1P78EB z+XAwrNu~1B`CI)=F+CRL9<3IMq@K=wFPs5|X!!;!4m7UJck4Vh@3d~OwW%jgzJ~v3 z@Zi+1#{hg$M^!-_RA8l;yUqCs9jldY)R+)+4T7mrLX_2!?a1cAgCkw@*Xz1NlA`J_ zsGD2-2ZL3pE`KQ-<0a#0JFGx9Geb9CVdlFAZ?s@soXe?pH!o;xQXH9;*+qoOy$J{Q zqf|w=UD%GwA|G6`=D3+h!@IjendC1me-%8ZlB06yby9w_0O>uK{cLhy8igQ=pz?V* zC%RJDruq+m3EN(izxj7WD~0^w@57ji{TF}5%ZZ2CF7lU-lFh#ejz<684+8cB{@0G3 zn5%9;H{YwfLTu(i|@kF769|~l>;;&Tv|`7%+47^fc!D3cXDwN#iPPNmhjBOmoMA)bo-H+CeKs@{a@$kEb_~2%a-@xJb-@`=H zzkSz*rs+hSY=Pi#^p5CXgM4rh<&6ij?V+t9CGQQCtnS40?ZI8K~2Y{&ng2SAp5#0Q`?AE$!W{0&+&#O)b) zR_VfBnBM5A-&LN^a1)3j`hR1{T4CrP43XSm=mtXK|ALTo@=+rZ^%?A_ZL9lZFCV-G zr3P}1>0RZ~yMa*CQG;<^LnjEKzsz|Ikb(ofvFD%#hgB>Z@jst@Aj(Gi-vksV7fr!t;)+#-I689#@^VJ_-W? zWM^D8NGn=!W0cr~hV{B1(l;=G4dp9s9aEANaHLeo6o$HHxs7cCvp?eAg>BAiE@oL^ zo^SH~1RayjUofB&24S%OZy5ae8wQVW{L&8%y!J#?IL=R-w#PvDx{g+nT|gMq8_(1R zGU0t^wu6Z9fO8N&U}n%D?Rx{Ck%DDPMzCMpt2g`()|DD6wZ*Knxd6J``yHKGaB|Mm zTi*i}+voc2!)=csv{ce;(Sx!~%sZlF)m!c0+$2A6SpRB|yyrG2xwv~!WAFQUFlJmZ z>Y~=`?nRGl&vA;$ZK{XypBD^%n26>Nx?1Lydk)bT@$Qu!aiY6XgoNt?X!_DP?KTRF zq5{7wjMkSZ(1?R~h&z;&pBmyevFUJl2+i_$4+i|0}Fo8H|)Uzw3UCGV887An1j8n=BSR636w?j9uA#7qk^9tvWDw> zbm9qIz0y$6*U?)(eXK{nPdB6;+h_6Z!;(V~UNWez5>Q>w1wnN+bdE?<41akpcyf-& zs0?^!b&b>E*&zC#ovrWx)fu?yeVOpD-p4%u>YZFtg?Gyf^|`2VW98s7K?EKhSz?wA z;%`#vb8M)my~z`(xgr}DD2kc0XThX z%J~QXdOQE%A65d+^S|(~|1bRaU%q!pE-mPCV@;<{Gd^%@6z0~i_{WK||Kmi-`X@m{ z-8j+M63|fVpbuShD>A~JIE^b&%l%pj1*7!=(n397UN7oKQ`TPxwPSlMGQhEVUnY=b z3zh_A_8#$2RZlknbR*KqC5F?boM+u9^064F8c?YUBTq`DV)gE%Mmq zG}+>}{jf<<4CDUappKE$-&DXEzD?htIFFHB!xA^C+0(vFc+A5i>#hfpezIo4YdP*5 z0zQ@07dr5m1RzcKC-XSmn*M9guB899Cs|s=Ca1pk^GZrleef9~?!Pf10gm)vnE0Qp z>Yyo+#-~R{%gyg_;O2gTkN`~ov1$na|7unBA9!=1u=^w%yT32t2Z+haf5v(Lf0tIG z$kmNpx98TU2SYPspAsi7tNJwj7MkdMdb4=|J<)WBBg*-2hIOT#;svdO4@6YC*Yap} zi!3WHzKa+HIQYcA-%#vRS1ZgO7BsMtkT4>Ng z%R(9P`G^DZ6$Zoe^EF;vNymj~yNJiRsG zq=1N#F=K&b*n68L)Mg20^}Hi8HWP$Yk%Tye@yKjz`HN45Y0TcrpuH;m?9Ky`OkW^+ z{j1^2;jWN?kWU=oNrmV6p}7PHUMduqq}%V|HTsQtm8CfPu(jT5?fGwn4OjHv>-pV7 zW{M?prYh9uIvoepqSf)#sh8p$)movgqq}QrK9@mAk>Gap&lXjO`-R@4nyh1I#ZeL4 z^mk35RXiE9b0?@ZAZQzW9^ic)%SYz$ioE%#IuUSiZ)^}20e;I~-+dzVGmi5C@y#89 zFXD#t&>7=o&xju0;o|snRv#0Pq#Z`qg(tOeuF(&P^fS~rt-96X$^I7qDcaXxI5Kxd zF3K^2iKkx@{kS~O--{QGJpP^iC7YBZ>lshdaha=PS?r3S%*S#c*2{(OGL_053KkS< zM`AOvM#HtM_)<@*@$KJLt6419HmnkcmRnAZ*raSpzpvdk25UJ4_o|B80YTYgRpWrn z=%Q%1=?L zQjFRU9fSn{CIy7u$qOsiwM=Jy|ETfQZcD<=cMy zXk#@FaSyb!z=Qxu%6x&as-wy!jdgw#2diD75sUTj=F4SlHq9AbhfN4%tAP1Bd@a~A zrGfoNw`%fscti^#NMF|6X((k*x9M^p*sJMVFVPoksIPYekf?g6Yt-D?i?xQh^uxV+Qn|T`5~zi1=^DCwlZb1zZqqy) z;C8WQSnpPa+}lO$&%>VsZl4>wbk9x@yA?xwSIzYPD#md|)r}?Ymd^VcF`IjZCz|-D zESH-=f+Mcqb|PR?z@i12O(>~Sv45>WVLoxX+A8e=DnCoYwhYQcJ_H; zx9ihJ_Ay82!|~(YqXFd5eziuk4uWU_wT;?4$`(sSOzzL0#VznF{+ztnZA0)aEQASF zQ8=MaQGQg-$fd>gk2`YJ4Tan5A8oDIm{ChJd>#oX&*l6%3RlF$b8_}|k?BKo(Ly@e z@jOd)!o07t`OnlcybL+8d|OI;HcA#M@R_m$-vuzKJ^{;l^5WW2gw%l4S3JYl#CZSF z&=5b6@`^C{kH$B`@B=Z4)V~`7;(JnGlnwr)@liH>NBl(U-wn8>NXmQIfSdU9{6WK_ zbK9}+I`$A*3ZJm`fB6DPA^ZRJ1^mCoe&$4{?PQiYUFA=Wlv;YhyAVv@AGpM~B@8gI zzEE@Az4?GCVaR~xlg>fl+xqtA!)xNW=4--tz>~jJ^)HS6X^64B{}_&g_W;=d3>KY6M}65N)~ z1CTt<>`lB`J!X>&xSe4htsJzw$Rg@i&6%#;V7ZZYV#j7L6Bx_^$9R}`V2HnJOm*W|d$jdWsocAlirCS$9zz|QxcYY7n9uwf znX?+358Gf*EK7`sVLX$@p<2v@zM^)%@$PGr6|-*L31-m5I>A9!=(iEtEq#jw-Ofpt z?E;b@ZoAI!yaNhQmXUrE3z>w9(SDAKQI@G(0SF#+P}5>0iAx>eoXd8Dl?9GlG}Sw1 zl2{aDb4^56#Wz~##5e9oaMYxf`Ew;MoH|=^LY`dL1K7@v%|?6gb;qxuFbGJz4~NdFrp#h@9&=4#*$rw2fuks_ z)IFBwQV*%Wr^N$Fw%{`P#$zF|FErXefBpuRIHbunXz4MzUe^=6I%yXp3JK7kbgydQ zi&L7vy83#U$x)fQ-70Le-#71kDglGKUdMI;pya2?T2S!cU>Pi}x*hY~ws5r%HI=5_ z3ELyR)T4nu>BFG$GcQkB_^8UE2~#G;p>|Q!%s!203(`p+bFOI~j}(Yc%IgTjW*rVF^Gb8YgMFQDSHh;u)=^0}Q+B|y`7 zzxhB|gU+Y=eBZ5Di-dF`9?IJ!-8$>mnqUK6uNNIspkw*ydYvr(UjL{w$x>}Q(QM7% z;bX!~zb4l}Qdw*kXecZ$*M&%TquxM|rL*DaCy2O8LIo{5!?ozD55^n3CJ9p?DIeG! z3s`i<&#l3Q`A90Wf=h%(K3+{11J#y46U+u*ZBKL5kW@lp0;a4oT!{lDP~Jq^nf5fE zw*FTZ3JDccCpDF#q?KcdirT!U$;@qOAYoH?kTCp)@GFpT(f%L8USZsHRP)_L`~Ab} zjS*s_Z)OoCIy%W~baQK1T=fHyG3hh?96Yf#^7HRJ?$0gk(!T^q$?d5HM=E-J zt8@K%YL2(c^mWJ$7Uh@=zlA94$M7;*P(6Ai+x_0lTek5vItx+d3&F2I9tDitXqYgG z9N+Ze;3HKPVzx(e{zYUOi~BXLJK+}EaT1^KO5=V%TPvXb{>DX!JR^wlOYDjfbmT>y zCIql{j9@mO%J?x6;(bN6mQ~U#NKknDXNxAKv35}5bWEr8n-d&|vQW3(8X&Sk%j067$0xR5I=BS6^UZS2X?$l9dy(2`jN}A%g+=Yu`n}`L& zEU91a2pDyjpOhM5g@JfF43QmyZ!mc-}`31zt~) zzL(S2(%Y9*_k<}=GLG=Ye#4T4OYI5eztNvUKRi14RM&)DFA3X&!w(NP`&Qv=+kWhD zWJxOJb%Rbb0Ke+$8rt_FW@u=BYrqb!>Op1#bjN zK}p1_d&yjzcYTx1WNOO1Xx%orpSHQ#!}NLuuA~&U;QZ}U8!Ts+L?MBcNRhr!ncyac zvfvQw&R%NQ!$n}po-j-lZcmBzhF^>FDC^6H@uSeu@UCN1BP=~f-9Pz5_5o%M2>f%cZ?S-L2)DcJSd2QDO^sqgh( z3(I-xBGz@Ir%A~5{jkgZd%~KRZr8?VXsKbqkt-}t^@#0SAz`sOlUweJ&!8XBj*Lff z5g#v5k{;{7N<~XWY7}%e$N|q2@|(enx{=tVqYD(URX7*<=z>iO51dR`73gvQfZ8T^58EAXJZN+@6WJHNV8D64`-Sry4L&XE0on83 z%C{1VbIvBB1{BXJZOpbsgK%E=eNAlVGwXMgHdBWU8OXb9M{=Gj5Zi%fveQqDJ)0u4 z(>J9;%{c5;Sms<+e}Eiukye0)8b3??Ba7ULiSQ_BsPIj<>+zN63P?OV#M?zSBsT0& zdA*H8Zf8=<_v&or#VVhsFM_uP>s-002|1wcRTrjt<~-%FM>Y(DpS|W9pEUHn+$&?@ zTSy~Wazz^?J#-*Ho`3jB{VD=IW&_fQr_Uq|E0Uxk>$c{z*)cs#4op8k+!bq6n3`7Vp?{M<+N4;{p zsd*F$OXS1ybh^e2`G~GXBk6w2@0Qua%6o!5Q(kOl))<(xPkM|un%N}-%5&i&V_u%O z(jRNPy;cs}40@ctw&WFb)W2jExQgpoKp^@&-GqjKXa7b95iSO;(qs%Vz^Y+u^ z_nIp>DoWJb?P-iJ^;(oQZaGUbNlIunh8N#D3QR!QWkPNl-*OC=spxqmaKGcr4(vIY zGQ3?O&pKfJ7W&W}6D!nWgg|BWZW<%5uJ{Cjt$#p4&W{cJb8HzN6{ZC7iHJPEsh)XA zpKpip23aJeo45)}pp#R;+^zQ_Y6CddvY3>X>`$@;j(GZIAxOHoHo(5Cw7tVCGwQHZ0a%6 zHx5f@@4o!TTJ*c`UXMuJ%Dwvow1sFidu1y=Iy}~q4R3|Q>`4qZgv+V4%8$D{q5@YJm=G)euToaZo?yLr9&3}p7F)o?%q^dcIp$&BmA;GNz*Sz%{W>|D$k6= z&ti&BTugf8suoIEoHIWNhzKVQf_Kv+hLaaWMMRpx4^19!!(GiDF7R!8aEIw}YFMh+ zUCy@`$gAVaxMLiumsClE%_68nU`cdk<+PXf0Phs$W|q^l!)W3>t$lv*dvJgDGI#wP zd_a?lSnHb%(_g7dO-cQ$OyhWsrWqv`Y+s@@Ko*q)9}8V$P&oN4Mw;frPh?$Dk3$7Fz+O)xeRLd#MU&UL7pvX2>|srLM%+KI`7*J+4Dn!2T`#u+Tix_QdmO}^-I zjZ|Tm?CMmBE(1WoT^y%N>k+JLaB?m+qd`zJD)F13W4;C*^EKxsue|(qk8xl6&e1~N zz{x`FwEQ(T=`jFSGp?ez$d7OQJ&Np)8!3%OAe1CbKu~R4i?RTLd+|(Xv+_+?%8rMVapyFXarB-3hv!9w9vfhvPf~>|Et+3R zlyT+i!nsH>c10HX2k?>D#G?zbz4Azs;7!n(Z{lP*Z^vBYx(D2lOx$c{t%^sHfzpE{ zk$?&R+Ko5A`pcUeWFrtI@zU4hW*0b`2h}0}lJdU^`EZ9*?}WZft+)EnIvToVEoYX4 z0;>S_@AumxNkTXG`G-i6*eUrSWzEAqxCKR$dEExPfAVtiq4mg1#HNdYVud(3VE7E6 zLNdDW^(J_dz%ABVY)P))uxZfFu80->u@US#xbw>C4z%i;F7y(lihoTqbaInBxB=HP z((9i|uJZx|wr;3`X3x1XJJ(fB?u|0RHlXuLh9* zEHK>rb)Li(k0y^h?d+Zh3a1?o{NOBomy5xaSP z;3mm3*j4op7=piVAdl!go43F^5h-PsgK&(77Fhp)!BL6Eb(g`N{Z7OtAs6=t2^I{= zSuRoYLBHji5)d%=SM#(@GNa8WZZK%TC0O}$BPATGa}1PnmT0QWp68tNv*$-UP)Pe5 z$X{ZUM%@T`#zkK7C&P&YjEV0*QNPN?Y29L8>Hw5?uD2)g&60 zR!7=AZ19l;B`kvCuaPe-mi%#K$1Rh;EC0l8j>=#(vaMU+G<1xQ%<=Cqw$j$5fHI0` zTWb1!&&G|@9wQ)r(FgESvuJGE?NZl?%c$bkw<@TnrO-x&2ARc_EBFU8vu>~))ISqA zvm7g(D9^^#2;jMguAxOnV{6Z|jd?0rl5L9FUtgWJY-_7l{lLbN)imyP@Tk87p^h$O zH?n)6ioAwk={;k@vwM>XygJrHbTX+mkUpcfEGZ=vb9(g0ObbiKZT09yR z+H=c%0lfL9pcJgeGCUJ*mB)TNE40y#|q&}?Bc3QK^m9MpdbmH2X=#|Gtdt}t_ zd}(3twmf<)NTP@0htYf4tHZZB>nx)zTs|IA&ihtB$1JT2V>am(p-;h{npj zrnT0cQV%t|^p-O7EW48KMDfMGwzgF`JhgeDZo99mD_1FQyKu-_Y!jisAck_N^SC}) z9CD(Xze~(;<$=6}_nrFjDKF?0H#Z`dqg=fkw_Jl>1ndKunN3Y;Cj4dAPxM_kDJf@9 zW9m^SC-5F!z<$B)>gw!yvHSJOMi0Hx!gnHewu|#?Lzs8hG}%Lwqqzq{%D>j{D2EGW z#?i?sG+7t(a8wy7KUM224aeX+B-wpf;lh0_LV7lwd&lhVoe?`T75SzW$?Tpl4L{88 zN2wnD?4^hW0*;frphDqvd{mznVBB8k&-6W`o>BR!me$>K5^HPeJadtr50NOM@KX)i zN5=^rKc5k{de9^zMrGf76+>ncIAr?Fxs}3}Z-5a@y`fFCG4Wem#HtIVq;^!2Z?jF# zl}`zln9f6{<SM;eLz?m)at8hG{Lv53tJ6C+>T*#U%-ci6Cj4S9jWJ52l#fAj_gnoqco1;UNM7$Az+jgaqZldRi z;vzj>&`VJLvv`#ISLEm6UIUu(-GRFX@RE0_rc;;JV^FxY4EX%+e#qtiqyEi5`GiM` z-JhU(cKlmueHj@SxUa{#)0>B^_42Gz< zHG)4$K;*xY0BkS`7?|k=SD4fTNOXn4zjBqxzfvG@AvKD;Ndu6=>lYx=YmjK<{UPeT|5WWwwsND}%wTAa$u;M9lPP_0U8@Sn{Ryw~fRlkD7+zth zv*V;cE7zJ-^qHg2NQdFE#APblp|YZp)Zy1BD(r)xa!>dSe}MjKyA~7c~wCP`&zTo zVD|BHDqy|cH^r{A*|+K9SaGqvS12}q?DD<9>H2N(KI-Tp-&Nx33V0JERh!1e=SIZ$ z6_wQEEuFvv3ZtXNxiFK3CLsh^(7Sc`f$NhFFjV$%oHgJHILL2q7XTp=(zy5HsS8TTNE@e=LLMLRUS^??Xvwer_u z^5fpOcyy+}4@t2!zTx9rT&%bIW~2@k=K!3SoKoeomqeEl{l5ssBmx^L9)Z3|E!sEWut@~CV0f4&$0?8shFCY12OzD*;kw;a9xX%*G8bGKm_ViN z;uOO?#sg-}bnkd5__r|f*Q;b(msUQ~JJ`Ii_sYqKBPKMlR!BQ6l4l@pZ3w}0UF z_6zH6v-^1zVbtVPHXma@Thj|6Ms@&+>IWwt`mE9Pw#(uIZ}wv6iY`PuGtcHPcv~;l zpsq$DX4Mkkh9Xh?Pts0YGWsu8KYYG$z~T8`7Q-rM;GHt#BA~m#((|NCiIDql$G*|B zet#-!xuj>~arW4*vFGu~3N>UzRX@G-eZ6Iv*H+bMzH@Ru_P3L_D&`qiAKIY&L9cD4a=f$KPu& zL-Y2}@eMqMbMFSI-oa!P!Rw4JJ3hCtAOT+hk zm!@R=CX!B~g4}i&s7%Dh<-kec;L~RGGBmM~OVjqj+@SA`vO(5b1-TPIU2#cnUjW{+ z(x$HpWAiw8L4C=t~Spa7H6`-g$O;bw<1oBo`FO{4x)$7C)a zc$vnoUYM0Up`w24vWz9L(^K?7>YW3hgr(;Pc4_}o1l0ebd10}M|DLHYck$CtHd%wX z;kMl3@+X*H1ZGb82w<=M> zLGKQ|4HTe_)MB)ZM+m+&7#zM^HXMYjl9T`VE)$7V_X9TZPs!0#)EFktLAWCp9VQsj zDRmgb&nh+if^aF03K0Af-zW*G?R|eQy-B8ix@!8hc0&?_abyhdHt-ee@ycBy>RS0; zCEV`v21yLF%B4GZ8HRMe-hEeF&?f1xB7d2Q6F%-z^RP11g@>l!-z2A*_w`DC6R8(7 zjf4M>hD^q#OrmF5?^JU!-n|HpsD{vZhD2_etdG zz0vY5)}ixeZafszPJR>6Fjvd;gEkV=9`^a}36qP~OLLwl8*h7VoqR~+o3=|TK6)u_ z+H<^~wGwoPLUxFIW7cvZc!uPsb4TTN$*YBHl@^&hjl=27_%ind<%Mso+TL8t?wOyh~AVGo!cY+6Z3l1T;yN95SJ3&t% zxVuYmhu{uL2oPx8y>XY|(#V{=-#7n1QzQ4*+_}|NoT}5k{n`6jd$XUl3bzGZac=9> zYPr5<#M)8c?vGvpqD_zLg05;*VPeu@(qfNqr*kLt6cOL5aX#rtm89Qg#BhyFW)4x3 z@8lkhI~NME_qnd#AI>GAK<(dCU+O#S^72d=a)vKjRoAwUX(#+D`bb#x(&XBqrZZhj zhcP%eKAv#-s`JfF2yin&uq-B7YmmJhO0Daj=`QEwCApghxGy^OnuoYAGT>|B6t{jU z67=Frx5}K=@alG@^a60~@??Vw$4MB8c9wWLNILk2ojtv%qc=Pq#u<8c(F-lT9M*}N z$h;hwQh6}9Q2>ooBZ{9MPd?xmkKMYwbd3b;p20QQ4UShoPX^ z=Qpuqs>WV5U8!*ULFcNbdTI z5cK_3lNs&UM{g4{vADYHS`v}(f{;E-N7-KUV6~?h0|~yiFtn-s(uI_Jk@KTnQr{wd zuoxx1W}Pod_$Zf!pwiEd$)s?7!Y85nB)-=|L%NLi-~cz>*Ddi6fgE4^loRd= zS`5+pZ#rfgyCv9fko<3$aPL72ijaWRERk(A6WmbfsP{_nr4(q_#}Ws@VgUL{FpM-^tN zrH9FQE&G`ra;tX==9lsT!D?@B^QU&*<-1QkU;Yi{0iFp5hQj7}aW4IiOO-(4s>jF( z%>(xr@!vJ%y6a!dNmJY_GBG5LtMva7&!xZqor){xIocgQz};0a7ygADoRM8xoGgkS zUz>Or14zYSj%jVP_fQ)D(yt*9@vku=xfxn&j62|9ozq``NdI?Y*YkfTc0C8^?mCZ_ z^YWrB7Mt_Cq&91_hxA1+q;lnG8PT3lS)cn)(U_Nt1xW;NliZ(myn${)kfD?lmun&n z7?LIJBP6u-r-Pvw!VSp^j-Ia557@P?bqmZjJTsL!%HPb=rCB+=4xjP3VFWK-cR6*`Ol zQNuE#f<*Fw0U`3Q#U06b$dOv^%OteX!<-(_PLvHnJHh{JCkGO{Ku2SOEw-*CC-P6^p2}tXtoQw&l6~PyYyRlCB zc+xx?%a$P(jO1bkf~E~++zCeKpQoUb`iv5$#6}IU^XZK$*=8L7n1ImF6uugqL*7&; zaq<4w#g-$oS-9YxJjN0sZzb; z=gMvJpgmc0JNJZgTb8y5%LU&L6kClu$#D>FH4#SnVzp*8u<(9VSO6e0W~Bf8N^Hy*4q+@-rG_a1Z1M# zUItcv&}jk`BwxRB&X5#Lge#+eZJ&Xn<2|J8IJV@1YA>XZJpOGFjo$7uC2A(<2%oLU zeARfswWks^=b7T2Q?MC*JYX|Yl+!EutHD;Z`K*5VG)4A}uWbt62L>y4(Y}kI7bIde zZiL-^QBQu$FGe-G7%F0vk*u`0_(USO#wi?NrI?YusdBej>(TzBnOf&|{$WMFJta}Lnhmo5g4iLFG5sASTyQvyKq1TOxtQQ&5|t{Bd08lQZX#v=)_2^tCl|BuYJS(IuONO&9Ok$s zg_-$q{_y%-QiD{47SK^|#8?NbB8atA-2RV#=`GMiBufdzmTujjH zc0sel0HN)Sk})H`*eKa~p*dc4^n=&lvht$U`7Xas>F;1lvER`m4_Ov0c;G_+hsyfV zfLF=IbLFSkZ@_h~KrB!iov1MD4D_%Ak5R}F*gAdVIi?~?@@f35w)H*U`r_V z>tIKH1G1)`hMt7R3&*wNWlcPt48co+)XCQ26^kS;TV}A7g+s=2hqfpwDV49e4%>?T ze7pSky@JhD-fn%m+b?dKm^(eQ)uc#&&G>bxWao-d7#NZ$v&BJsyu`ebMJd3bO4Z>G z%~NhFZb*F_`ZeCAb7uu@o)gjP(;= zr%~x@ei;;+0CHMLz33MhKzHOb!ZM+Es*V0no5*DJ?{~xINotWDF`5^`&)q>FTDuR1^unS$k;k} z3X*U|h=R1TULpTZ?zw`r10t7ZNVLd?W;3uZnxA7-F>fD8nJf343hfDE-gXSIPBo8^ za8Q`{%9?m|RunT5EISG;TbLb^zGf9T4sWM@Um}J#mD@cXF6((`xfOA%zF=wqE)zdM znDL#-D4=O9A^re#Ki0(G7etlA!SwBa(=&kSSAxd9JD6yhH~Cl=i9P|KV2j3H%@4S- zN!9TdR9G1+(V~6aP850fdx!04;yA8FfK_6V=Dq-32-;xdcpXlPcZ3` zJv{W0(F9LS?sd|m3NY~vRi^mr-@Bli zw5`u$m!R(A!u7&t-*V!OUa4&$hnVdo$}-_L8(x&k_~+iLvDqCP)p%&aD=o>Q${uue z(nuB0<>^Q{c8aQ5JVK^!Zqd$t1BE8~&umRd{(#8&9Y7f?iA->Rw+gB2CppZqsjcDn z4J!zi75~b6sK{Je{7ywus+&3z#|JkWTEM?&BE0GOVcfA$7BgsD;Da^?Y-#;@b?UVJ ziqFAi3!QXyZAz$TDo&v1!g9>IwOoM^F1N}9B85giBLjw~j*_Q4xraWaS8{1LGKHD| zt0>2^40xHcX|ma#rTvcgL7;EZzHJqb>Envmd1rc!$Evb@c9~I?Q`IAVHa4=#x!}z~ zyc|(Gm~L(6`~9)|6=w=x#D%Ssb~WAh_>EI@%3)4~S3(B-;>fsZLiu`*rGqKI3G+|b zTRgh+{C{b*xS^K4Oc~?+b8iwG{Hlj;TT7d6odRE593Ar&O!lrBeiqVW-O=8*_)9cY zn`-h*$4T1lfkFtw59vRS&i zg1!bcVVPI#5vwVh;@yu3X)%=S>TIe^ztzGnvyYh=O^-?nB0OtkrYurBx~;vfS$D67 zmLzxD0yd%3^E$mNAtZY&L9@I!$&%ra5?&OBxmY{m_=<%IW|}GfWLg@Vn(~IdhqG^o z(#nup7w&D13Q?%CPd zhi)ZXaT`)=KN&k~Q=%_DZZZY9%>9jnKTi2G7-ZR(gs!cIcrp6}riLULf27N3%Qxig zA2zcj)(=ru=WcKYx}Zs|f6`ORO~vREfve3oCaUO>vx(T0*vv(L$aOFF)s-0Hopins z0-~IX79|?uDj%MeQG8@JEn$gSmqWE%QmTk4FFgDej`(;JixpE)B`Lwoo#4b;5U6E+ zXzf>|56uX)bT(|#E+8M^v198WDa#>PnkI*8HWF-J{hDg5D_`5M%`yTm$iolaAV?++ zhbKxB=PGWxm1MC)QG!vbd;Fb!9PdR90n za50=Q-ulEcjZ#0GyK}%F#R<|Ohm}s(uvTTva7XJJ@b$5*`UR$*wF>vT)tyILLhm`| zN2GaydHYRP}|;QcirA?_jx=Ii^xkPh?6WZIkP%f z=jchq3i#cvau{^J1U@~U6kk0|HpO5@h+2(_23L2so;}*H^z=03bU})K*WThPJF5?j zj|6Ma)?N~q+o@VkwLv(12LJ`5H7Y*tiM!9c6IL|g8T>Zfd(@DlkFBb4JrnRmqPsiD zi4JTudfNP=u{Zj$qw$i~k7jG(riSPC6Qbzw(OT9Ot)H_})0w(0q`~;f?3yOoQkM0| zN$YPtV0-79^sdL36X#6LC!u*hl9`WmkhyCJdeEu9C2@6VWO0#Y3RqN&zz9;Nn$C57 z{UFUcf|c;bF%{q9$l$$&!ND!>pU~Bzrna;mkB%(UaECg{V?%IX=>uPONp{r?9|83B z?mR;3!W~*qw#q9FkGEpC7KRR{Jci9mIw2Ovoe7JBM@(6T$|=4N-Yv%(hZRQ)mR!(d z@NCYnEu-T;o6`mO1XmRFzW4RdG2L?jkNS>Z-fe(_ioo>Etp?!NR6kJ#cjv0Rui|l$ zf!i5b++=YQ41o0WZO5csb@0K=$&o6!oPk_YU8@5L`jp3jRY~X2plv68JL$4dTZXRB z%z{ACHLu|L@`byzbsAOGC_^`-i0JJ{e?Q$6kU)=uO8RW)V|hL(MK+i~sg@*jOD_ zwTFw$*`WnEgq%cW4(Vx29?=-C!al1ILN~^z@vca;iZ4eNmP! zFasATdT732BGz zTUO$th>%6yPxx*f`5jl*HPBvQ?i?9?oHQppzBPhu#a@EN0GER1?7D6>_er_n=2|#? zYjx!nZiZTb@IIqW4jO@Ov4X|rvc1LhGLDg-x;K)6sUlz9MO72^{?inlHZnPIBuW<_ zP|GI^i3xN%A=976FQ$$P9@mHT_NTO>OWKzPj693c%z2mVYx$N1j4pqci`W$&TlbY_ zYk0tQES9o3ljq#qQaTQ^zd5_kDROzw{hcjU3&7G~Rok*6V;9Ph$ExNdhNes0arY+0 zGQum{ zgHJXq?&IzwBAu2TE->R78P7az0HchiTk4s&_AP192#**Cqh&bz&&?i>k?ze9xUpy; zFw>QF96|Bu3u;773&TWxK8bdc@M4T^Uq76zxA9#qWHm0`T)}f-57$HM)h2^R8Mm3F z@51B{A6xI&`aJwn9|DIam)swg+ky@=ESB_)8JJ8pbu_i?s`dsLYvn39nYbB=@uI@t zOXcT{japf8a})oEUeu_SIyF$uRQ{W>W}qT4sg_eKNYgy%zZZ-8M?31j7mNBwJLh=siL)#`A z=E}6>ANhav!eHh9>jyCS-4W|ec_ncawD_`xz?p5s=>Ogexuc{-rWS4I>J6j*j(Bg{ ztN-x@@c;aiqojMqIauQV*&p0ty#MV7_}_p1zxoz^`2W%e_`j9W|6xAB|3Z%Jf6yoU z|L27}`LHqU5oruYN~KkMGgP39kbBvSoBeO2;yY%&kq0ArronRbd?O4~-X>Kpai zV)q8Jop8O1-om<}D>diO1DSoRul$VpS84#+)Hq4`52^5uYB>xnvikP~IBxjoL{hyq z{Zf^SUggjHqVEmeYPOuj+!fC1*Z2pln%-{BJMts;{cH%?(2)m;+zs;1W68A1DCcv( zVzSse&>SAG#mSH8iX~u6he{7kO4b{dG>Kg^YpP-P%a%|_DpAEC%%W^BvzADeTm=IO zQr@?zld?yS-C{MX#DOk9@hT z(wa5V4xun=ZVCl88E#1=uS$|X(hJlqi9NjE*jP+asaTe~+W{dGyEspi0>iL+RX(PM zy}5dd3&9EWGJhRXB13lg)p$G(N4zVs?>q8sp_*4DHAAqfX1E_UIyp^}*I_*&aNj$* zjcAkMuU2>w@uSanV+`ZACy``3&luNJIWf;TaVm6-EoRN)TtdcBlpsjq$$_V&`G+bO z2c(3^=14v9d4}h5nAJwY27cG@E03eot$TPMCT7a<mip2#z-?Mko{q&L4L3@QsR0JbQjxbQ3ID)nFd>WIFu#MxS$ptUmUkz32tO%j#Mt9_+kopdjMC+UaNy zOKQ&$qs-=omG-D)=QlpFw>jO;%sz(;f8HKdoH^uLO63SAs>(e7Pa`&5BHK3j zT%?{OV_Za~Y?hZCo5O)|Sz1NfMr z(_Kyi>oi})lJWfj%A#AYI8!M@O7VZ76m;*)mQ@UdA& zU(j|SvJ|8Q=i&Px;;h)xWrH8xvc<2AdId9N%;tHYv81Ou?>VuN{pKBuq;o3mjUWaN z?TNq)lR{YMWIIX`@NJv%B^@>^a*Ghc7UI4ley=Mdqc>wPhuq=AX@Kg*q5TzkD(Tl2 zy7U#(l0*4)_b%k>9)htHEq1R;A4NsfIr^o<^vx9%E;64lo23C4ft$;DX{aL63D_{$ z_w@EXJ!1%~UEMd?9|`6R*KY=W8|a_H3z!sss1@ltV4_vc0C$0O@0sfhL_)R@QIu0@ zS6QU$m~FW&R)x8XOjtzZTCMr(s{P#|pSCO@pXBY6L+GPCuU`!AQt^`FoH%8xD?~;a z6z%H~ZdSC){=zX2yM7I2Am_zD`-6`^@h4E1SOm=_Ac!7X`zJa;7n_$b;SWBc%eRu_ zE;~*nrknIe79hydI{Ax7fdvCNMgia$xgwB65nZznGdxqmiZ)338SjGuN${tKa{f_G zRmZhuFIo|1-&&EaBlXGrpVWAx;C{;y!mnw(-&pu(aA^Eb@**>)GV$3T^wbF{TYkE= zb)n)^ethGfZVZ`@X)Y$T^9I?ZKlJu5k=Tr7;Hc~;h0bP-a0q^Z-<}E zH+CR>zGyzj4R}HSrswj`jEvang0WuSkBg74i=yU`(TSZWsKxM0&@7dQeNF7{5{zEZ(XFOd0PSA_%rO+PS5O_SYLXJ z$p~8MV%&Kf0T!2^$En9nA>8UXg@^Q;WyM*p(o~jiKTsa%q^Vd2Sd+=|?xyk6CK7El z0-!(i-c?x%HomjO*Z&nA+7h((X6sx(T;p;3oZ2(ED!(sU`mUPNafg(o9kC3?&>Z@>pp4 zN_Af5cSoSIn1!g81g%i#g%D3uCobftCRAbu8!%k`VD}yHWxr#s5l&$*poLHh6nZiL z+~JnPoP#K;qW6^crpr?H0B;L;32BRiZa>VGLI8Uw1|7^H+Ksy4-@ax0dXmnv`s6h4 zQ`AJ!R6ZQUgv-;_3G3+%{G=tA;x> zF;mu3Y)Nko%reXyn)00I*R9%Xn^Xa+t>`$_S#h}-)w$I6sL)Hw_Ob_l zYeAiAI+_eeF#w}1qr@=_Kj`y|-LPL)@5bllMit(b^5DxMIwh0O1T#+eLdfv+JY?-k zWm-B8=GEg$JC5c74Hk8t-u99+UI)AKRBzAx>Nm-qRfK8$zj{B9(-s*STCtov*>H(F zyozZ2DCP31yrCtQc5U$fCY8W$F(<}zjQ{-4-qc^&u?L@R)@oQ6aCZ&Liyb#nEIf+d zJv_vOK(%8i{JgJL6+ip`WJ@__g&BAHNgn2eKx2;m?stIY5_}44N~9B>m#K3|laRc% zmn7L&^BrEBtfDQ@rWjGtRw&<5UDt!3KHzwF90NvtQ{A?}PoYS6cR+S#ds6tT4snjJ zs^_+-{V7zBvJ@!M?BwLp%z7WLDWHk#sELc6*v8%{nS2>0DR-WTp_cJL;%*tJR)hbhZ4K#h2 zO-Ocjbv&0-QX?Nhe^LX2uo}hcY1u3zEyW~*#Z$MDh$P-Q?gf>6)gEK#E@_wNP6$RFo^#IJ!ks_^ zl~6!d^RlqDI^nq~#}0f`Zw)RSE`vH+4k!=(Y+B;|v{DXM7M5 zsZo6AKi_CK^w}iQ$?L@+15mrmJn^?K29jeb?hT&JFL;w{A^KdWoEmksZ1Ox==IL86 zpu0sx-0IwYPQ$Mh`*gDfqH&=2q7|>8e`avTu(;niC0OC3uhSS+H<1e+_0g9lfajy` zAT8%>ob;A6@}V#xWH)l5rV-h#T4Y{8OD_fGZgLK2 z&JmXsGIv2vdWoBdPT4p9R@yMLS$2m7IfeAyjC}6mYf$_J1~&0@C@`&aPLj(v0kxY`1Iv3U z-O=DZbx^#;w~m%;e<*_Ubybc+==6fzK;7Fr;{_wU5C7p(orbXf72}%H+=IyiqzgNc z@?izT;dsmmxI)8d{gh9Cd`@^G`&pw#usaF|@BI^oKhkkP&T5~^cCS3O{3~{|z4|pF z_|YGMWozNv%qTAMFD@_M%)BC0(2?G>si5ZcUvOGx7bAO~@N7zzTcGI`$rDt!RJ7M{ zc_Ir0^5%9_HM(E7aL$+C%KM%X%K)8P&p2b%%OoAJzM+2+kHo{w6F;6Ww`C9H)#W@r zQz;Y2e{g5qLEF-3d4=|LdLq6$um-(9HbtFL(&5du7d|0ckA~C6IfH73Kf1YnpPc7s zJ#?E~FZ)e)fjo@ojNC8cC2BZg2eXM0`h^6h6H=OKlHF~&)!I3+NYcJ)<(mNkcO@DL z43ZmiTUjV5))?dpziX2JSW!*xYYo%pRnxZf#i_ASvi(A(>bCl5OTRJq3(;=bjOMrA zkYzXP4E7JAUUvy>e)Y0aByNKMCP_|GQ$Z~~8gX;vACC6)xOuXy+N5DjCj0TR3RGKa zEM~j(CA1p`YPN<{#_HDEGOW75KxcBOSuM2T-8mg~g9&?DvsT1-d@jd3-gsAUp0vSA z`GT|p%Y7nw(=RRt^cE1g5FPnC*TQ@q8)(If#J*M-n!)*ngi9<(F>f^Ia0lgpgyZ5? zT+$O{jREJXmj%;FMX_|w7p=0{PsV2SYOkO0H`Gi9MK)BmKieTzj&BVGqNLyA#S+KF zKDll5Q`7a2Gbm*uFxE1K(#abR9$H(L%2!=fZ=fKyoI;&nLf-Rs5Bi>YmooV}~AF5nvOe1CG%ZG1(s z%+C?)?R|f7yKqs=r_u$q7(6yVo+WrnqG|2j+IAEu5mg#^QuKSh6WA$iY2%vF-nxaZ z?@PPf&-q-PoVCTAW*k#cFzeN>dY`TJ{AEwTt;wy-btBZ(Xl&koV)5th1MM#yCyCms z3jCh_Q{NW%Goie1XP@#A!ul|?Wo*ksw>*)R2Sf6Q3eBJA%RC1VtKa-a`X+M9brp?h z5@v4|%beI$r%UW`B1BAO8G$K?_PpL+n-e!6s!*|=*;RYl<9XT6Z)vE1v=z;J?~fC% zOIGZLeEI=It-I`H83?JHt*WF`Lqa3OORm|u8J^@n9XsvWXKSg6T638{eUs;t`!d#A zE1FuUo0ox+-#Ql$4345(yyR=7bPy;OZX7dcwQJnqw4E@Sm2srsA7of66ts5nW(iA`z_DuouV_erNJ|-)0@^;70%Spfy}znMIZn1<&mzISK+^v zxg}NyqGEN^Y5!>tOMl|pX7K#yFx4uY!#op9-u=}?W^A6Iil70hurwh;Wk6zY7_j1b1;8e0=?NDFg^wmzXF|-Re zLQU9=ZgPe)WYTAX-{#khQ}A_>({GkP*+?1J7BGSUMMC#5Wr&7P9k=}8jLD>remv2h zI+%!@*ewV16y*&3&G%=3?ZVZCZ7{sijB5iNJU`It4vYD%!4BrR-4~JsM{r{p2uNmM zh`inqWpm#$yj3TRZ9*)9q|#pQGh26&wV>TFL<~5*jBJfD)AOi1&OiOO)aYv*W6|s& z%`NFm_I~QhEqQZGotOv4{g<*Kld=;+8o4cMAf1=WJV2zjoG;O02P@`g>;#Q&YoFa3 zO<#XWUPWd5)#gH<`h=m3qVvuVmb;9 zV|eY>`5V@ezKL1Wi_$%>YA#LOeg);st8nmLd_gu*lk=5{u8pP?EK|ExA%*NFsJbdl z(&ujgsb{H_g3%^Ejr>Y~lVtMLTk!{!yV`!Q!#|RAmY7ubpF@e>mvo|x?<}pxlQd>l`ML zqg^Xc+V`!QrXinGl%5Ms(g(DGj zF2wY>bx?sTteR$n?$q436>=jqO67=$Tm>trF?ezt;gRU^vq{`aZ^D=aJV*-~C)tDh z@uGZr)ZIfzB@5OVWAL8w;2Y`H7gW*hQ93*F#M}qxG(_VJ9F#?qg$zPUObN42`6&VB z=z$NvXX7CU*qOP!JG>Q25k>ecfvbWHH?mb>S&zT_9 z*T%ip--k5*hHk^gno0^L)CAD-d`rv14CIS%#UQ-abhu76yuYf_WBP@qjfv1k3?W_>6;;jhYXN> z0^Do;2agdQtdrE}K@x}1bB0epIb*Ynr3KJ^$N&i*1lfz>BaVY0GtTe{Y(p2!otjc; z8Q}0v_PH<)&faf)7_s92q`1rfKgm_Y_@?NwThWQR?VL}&4kS6^kq2vf{x@d!-wY1| zx8Nx@m^aPu^$U7-=?=)_$BV&*dGJ8*o{p>#4E@FV%Z-AfO>+_3+4vOm3=~i=62axR`$abgIJg4aCfysl;8yrcH@O1|s?mUA zQ_tATDZ{1YF~{=4PvAavL4mMtD0#5L9{QnTVP4X72_K~uSam*Zlv({{w=_LCwAa|U zVF8keq&^;f&s??xgM)e*tBY(N2 zIO|$jG_;ZVmb5;HjVIgNY?{04>z{sX~=jH@Pt2!jIjLYZO z2Yf4U;UFwO1h?jsmmg}zm*WYT?8ZkOSSssfPde?(4%1R}=fUl;ocA{!bC`)hM=gC6 z-lbEfIx2~sBPv9bSMw9SU7Ib*5c6R-cX8rnU|K^5Jy&_7`~vF?ly~YOVan}ofe^Oua{;?6u>gBBaKhv|Sw2amFJ4?l?qxmXQCV501ZKPmy?6yJM$@x08 zt!;NEMjOcP8l{W|+R}^${Ze|36!7czZ(uXk4{tltK?1m<{Vqbv8PPk|EFWL*ho4dO zIpa*u?K)jmg^g@x7ZT;?7$8gc5}Tz1Sl*)o?FZ+AX|W1NO+rH-Ved!rXx54SuE+v* zP15@subG)RH@Tgai4pC5*zkiJ-KxL9rw?ysav8Z$jZliGZg-Zmm>BvJVzf~jT>L8d zQXBLiT>&RylpOb+*1?|5&Uj}wJ^ILokp&XI+#revw2}fA--|?Vo6^FJC zNigPCFp8?}!ZP!jgwbte956X5*WTe>ye)f71z?5jEcVB2$p<>m5hTTO$6B#Pp8G#3 zjZ_H>baS#=e}{~Z;K`GrjD3Oqg(3_-k`b{F-KBi@-exu53p;%!(CLDbh)l|nhS#R| z-qQsuureUDR~3uZB=&-XAM&n{yZ6trOO6b{)0R2eALF8@K_}7=>U{A%S!1M3>K0oT z0x~l+#0jq49GPVu%;nHF+p$%J#s6$vRjAgVGh@XU7i#a~#hxP>4k6}>zrRc|x{aLT zbduhMqv>H4T&p~OMq%8*W@rfV$E=X|Dd5* zw!W5s`$L8D9=dlZDpFL;iX0#o5sQ7*3{0P!aAXAZ)~{nO7DgooP$3$JK^7hXjn2D3h$97EUg-DvijZeizeDu@h#y`8GZXLaU7j9up zJrK|d(Z#wwUu-^^XuKd3-XU)Gt;97hG5~ zsqkgZV`K%qs;=$xJ4E4&a(Gemn&gh>3s_%b(R_C% zRSht=xU4S1*+VWtT;J((lx^11JT3WlBh6cnqp*;iYUJ!vgyEa^p(k8pX!pMO>e9ow zYOfc<6v3}ypd0v9to6FA1*K?ieUIvwh6dq2o1oXDgrGn+QHL@lQn9P>1%dB(DV*#? zZ7rD+Ap*tns^)r$9eBe<9FPZIng24fc(`gR}q6foEgNqup6oO{?O z#87=7tCH53qhaWD5;7`i2d|XtS;#wV3gfxlSQBk&uh^$({24{vgJEy$}Gdn zo!)HnqFN=B+1)pz48URZzAK-X9d5oyuz1E3+l02RZ1v0THP*za`0dUehw6X_*6$L9 zZRLTgPcQvP1rP5u2P*BxZi*W}xbd9F3e(4648P{LTqJ+S_0(I2mPisg_f=Dfn1Uqc z?mBKjm|ACu*n9J6%7TOND=g%W371gUa=5qtK4mR7Z>AqcOB?Vwd+kg?%2?&v{p9to z78+c+wlB#(6cT$RG7l&uo{pmvB|#o#=kQYOkvpK5Fxuy3k@kwMhHLTan%f2N-7IxE z9)5U&$zukLLEgFdfbtDaNyyIDWzKl$oFrCJZpiuQ15O_9F=eQ#=VeZ^;VyZ=SC6@e zw$ulT`MO8eBH;Fq`wpe|QSV#skl0KoZ{$J5J<6gRQVGbfLrSm{B)#}Uu<{a*DPvVV zU65JY)`Sryj?YQ43u0S)1ZW83g6rKrhj9Mx4IXk!*+SbO=b3Nt- z_1O}w#{?G&F?uKDuWbERu*nxbXlLCP!N(5w2otsJ(L6xzN2}J zwA*7qXgEh{=`D;L~13SIA-lZlZ;(WEvLqi|I6I1_Cb#If;-PBs1JR`BKlPFwo)?e{{N z-M>b=S2s}dMosyBJoYrQSW9Ft5~lcI>Lt5B0qeUzJUe_!ts?8;LoK#8L?aMR#rZ7K zw~gU>>iZ`q#F1i{QBNr4oTxt&CRrj{%_Z?ZL-s0;68rY^*QFA|{ANyADcPr1jE=wv zkx>iJxzIA-mp%S{rBg=Rvp|fz$WAN!(`Iy(B0L_NUa;JR#b87Zbo9~?dO8%<0X~}F zCG9u~^#|d6G|0lo48qekCJi>#=AUvf#ILH&U03~WhdiigcDH%aQZ**o3H4*u-#e4M z_{Gf~DWb%l`eu{lg_*_{q9izfyFZVfk*`1uZ`&{JU)8V@+4Dsb0)^6%^Kgu{I~S4{ zgN)XMksTu_)GhbVB#3XND3H*8C7d2U!)A2p{LZ7@t}nKcwjLDrvlPGYWqDA1_a{~N z_L9fvC`zJD`rixk?0?MeWOBwYu)Z$JH9U7}|Nf2v#`Zd&v+t#vdk@Krz-$2{D>l9M zm>yz=#HC1r_oA~nzF&a*ld9cm3Vt;MNKhYU;RUVfqeHx4Rjq_fcQ3_K-53}qYyN7S za^n4ZI73x9mS+kZMdJV}n?Cn0BdTU;Ld22JZOd*W1&xNmRM1ngGU#k;hD8ih8|cs4 zmg@4suxK}eQ_6|x_&f&Ib}X;r>Y2FGK*KG!HZ8B*DA8%RHUJr08}^#!)7+8#P_r!o z62ozsVZGL}R2#p_fsMN&t@?_c&Cra7*3PHfEy0%7c_%7HNIrUlayST@iWLR4 z=IHrmH5HJ=-f+=qJ(iDFPNWS+vl9!2yWJn(!r<&5$kdF>yOI|Dp>U0Rd0t+EntE3$ ze#$3Jdt!QVPt6W&r5XBpK0g^>d3@{PmjPD$DWdD|%xKvj+$-RT=a!@GxM(SUh^c8% zLKR>Q6aeLCwFR9wTr{$`EovYxsn4#7A~UDa-UrvI13?dT6j>L~nh>AgnU}I-xZ2*x z!Y=dL94rp=3Ghwoy2X`4d2jf9iYd-B$LACUc)P-;u(xuuRm%u6Ulu(^7S@?lQoO}N z6daTpi<;*VHqw@jUQkX*H_=_np=zTqcUCl21HKt_vZC61CTelhU1p!Wf67!%gX`Sv z-_+bG1l}Nkarg^h=0O0nY^1FuGn3skqlvrFSDmADc-+bD=S&@jt4_3fLTzGpFel^E zhx;D6RNsS!yxHuvVl%Yb8i}9-CWVuZOQ7|;7(^cORrOU88-|?^`qI>9Q`yqM%ozO- zCo+}8`-KZSzu$Y;ZPf9OE=l0BD=TX1@eW*e&%x?kUX5sg=w-$aL@(-p(aW{uj$!Aa zTJa;(LY_IOOJ;bXaBq`yN4L6FCW=O-2J~u$BtA8`0HMXjaqih)Xz>6-i|N16;sS&g zhxa%i@bp0efocHpVB_lE(1^E#At*4se3AW$Obd}W#`u9#63Itm_qe@$r@nU#Y)i4K zX}wvAhEBVGJ=LNe*8I+32JQIM(2_FhB_2t3Cm!sN5`6OQc78Kx=<3skT%ZZHSy)xf zdJHjl7fJr64FCnml(a2ie}5bHghQOFJ$~poJ=X*nXtfDuPIj9?i^79f5miRXNH1ik zO&Dp^BIMuQ_w^cgt*SWPpddUMT4d_QkmL3?;6ma+x2TG7;Rjs-7ZOpDKuAI@ll|7~ zbET10h8Mk-SB~Zr@R;dt4!WxM5(*_DT<#`$CIkDcpK994l|J?yt(KJqYR**|(dmEz zWaR*TYV*6#saUTRT(p(D6F2wzKk8Ox_l6(tX`=mXHIPzC!X8hjW_b4F7tOPufuSEV zn4Y1lCsW1t)Z+U0hF2r+#%9_cJEb!gEEBEw8w&e6i<9O4%w0RhdGVyhYi4n3;()_Y z_$PPsEqSY#MB-W%IS1p&)I=@Q;ohrr);6zAAj+|^V;lJmMIh(a`M7Y#aYy4%l!cY) zlzHvxxPSZKE{6wnGV_1?ZtrV!GRl8BL3nUM7%_v7>PvD;#%sSpj`3$GfhrmB_fRsvR4)2%>%WFAVn^7wN zXo#RM){{u>CWO`2QHE_a7n>~TysYsZ#q97UKUx0w1V+b)7IXv)Jf6rLLQ^CQnkK+l zOh&S6XMNKDlUk>tn1ne7S@Tx7$IDP52hl~ju#$Q2Uf<2Yq*h=k?`7L6?_=;Y`kXn& z4|1x-pO$>;U)!3wqlQ{p;R=&7vnz)4q5dvzuL;04*cEx|zm1NUi(S*9EUjf z6R9lHMtqYx-?u(AMKE*LW9ui{AqeD3k`|ll-V5Zgx}1H}c|5c@^$d@WBL}0U%Go@S z-zLO2iCbo2zx@e@5WHl(5^paa8A36h4O`PqoEr+$?2(t^Skv<5T$l--J;gyQcrp1XWJ zU^cXLJVvO|XIyMBz2}kY9VRd#wR{Q10G>1gp}js1&u)I6h4&0&^P_DbP8T=!yeaWX zV{&I;`Pkh)^iphMqD&k~JDsl$RuJKJ@rj#8=63O}R`e80DNTQU`Ri)i#Gt~p_HCfQ zOz!KXlkwv&eoJh^!9QlL=msuro7$k29sV%L9vrjUBWl@_J%791uUu^xBgQ>!hBQ zxOCT3oEK(mf1^ik{&4ucNCSo;0$TUQbbg+Nj3;l-s@GSP7m(Nm=EruCRZvv*9KyFa zQ`?PaY9_lUV+B{Pwo0j(J-2rHAj&iCMQ@ds4P0pBpzYH8a{{kBq|9ihv8`g)hQCgz zekWpPruP@bxXos^eu7V4I>$FlPRYt92BGClCEtfmGBEe?SrQqrOP)wivnx&AT&RA$ ze8nmsTUCWVlJ}NqyU9YG{POp+`CUwNraT*XV}=g>v&P^E0q^pk)y?pZ23AY|X3s`@}|(eZs}plc6qtI7hZT(}icUdhqafE{kD0Ka=V8#vcD4+!l)V5%m$# zwD9)*oXxm)4r}QoK`W{O=gZvLiJ{jnA|rxp0|p?5KL zH_0PmKJj$y{=xpL4p04kQU$L;(8|~;GlN10sYP@LxIaAveao347ak(YddkT_JLFPI zcGLKDXMs%^#Ky#-=h<5+6#lg>355=7ur5tq!A=;d1#synqMUTO?w@AEO6}`g zaUFP490MbzAE@>-cjFl%b%*KZFF;StK?xYk$-+h|2eK(*gRbK2x+tO|y)HLG$q+u` zxallwv6(vy@@_yxQH`Fhk+(Tl<(FGS3 zN5`6;vw+70#WBN@f30$9labRlwEVCHCT7#A;E{7aJ&4bVN`PIJS(n?&(Y;dNCm8o zbOpXzvb6#qzGipmZlFdWdcoX~9W8!4DKO(UznbeWmJwsf^UamTJ?g{$4D*GHEhIH? zc^DC5+%=6fH4hU@qPt5=2G#n)yr`iN&gnM2|lH6Iu5!e%x@IM!wmKOw1AeaWwC>efn;bp z!3=}`c<<D)IZ| zr$DHqU4nmUx-nj(OO&hHEa;5RniNy5;A1=%g`(XGbpZR$kZVh`jM_3_uWcjKPAA@L zM^@9~Cu^3!z&(_JjODPHS4_7;9ElWcAE2k7j66$yES<`go*TCZ*f3cm0!R$QLTwq_(HFn8tYHK~+OoU!{;cPcJ z_&<$hp;k+nKgCyby? z&>jkAhsYzsr@?==LD*R4OtXKR=HOX1#X0-}OimdrISvbl>!oHmjk>l_K?jv*<`>gU z%Xb6h&r>Mr4s%vbW&Jdc438>;e!uAtHF%sClg*5O8ERNo6%$8mx+Ccn#Fz=nSv=NJ z`ayV<-K#G{CV`MC)txcy`!aPQ>~Gk{LzTyR3!89fdkL+n=}Dx#-{F(g$wf$G`BUKz zvP~~o6$#Ljb?*vTGsJW{Vfh8Wjix*M#wj#Cp7SvkTb-J|pBGUl<;yTmTy`Rx#lMPY z(EntaF6zmvsc}gT|FL{4Nd?{h00AMIU7F;KcT#@I>5jlb$ty9b##&3Aq-~ui77S4x zI1%y1v~S$xXp0_HaGpI0OLsn?QFCQ73;FCgwIKO!QBT@EPT)ngjQlRwC#pLq>&f1s z8U~wHl10rdRUxnF-VcigeR(q%Tx;UmB!^40UpXoo^dh7u`m4b25MmsU?(6V9DhIsm8C$<<7?D#-UjLnkPGqxvoR}y9Ln5cxLor;GoIyWn zMQB>UW&yuLroH&p(Vnmea`zg!g{#~E1JFm39oI2g%jjcQROx_P#l^(rnDj;e2`~wxDu63M^c;bY0>q#^Y|1;79y80)R3jorg_`8vx0Lar zc8q43?o40rXNq{n7v?!?-^F%{7T$&mEH_*Jxwrr6u&Y&Qnd9eOr`+=o@OLX33(_Q~ zcp_m`jk=(A!eR#|gsWHCkHp<#R`)%k9)a#M-Vi!q&xeSSio`X`VXZ6|q!9zK2S8+# z@}vw8Fz6TFrR4p?kDGVUk3p?wlHWwZ51nP+@)rj|Y7uizKZ3t(PQlX>gD}Dp8!Ty8 zj_W7dXFMXsA%hRUl?s6xm`@TFQR2(sC(o{T7pWAydgSn<-y?%Tb>U0LK+P%mt{BvhRGq`C zmyeADGSo#kK(zRdk#VlM0truG zUhw+Al9U-Q__@O|3)*mNrLq%f?6GAJXGgE>Z+VxZxdAZeIvD(4p$i!NU!e;r2<)<* z`Brh+QTRn@8a=!KN@NCx!DQc@=*5q-hae;itZH@*jPlAOBSg|0%!_|~z4+{edPx0T z2W`QV;5Xu%0f|7<9hKGuDrDk7{R|*`lWDwW z5eNp$k(z$6?Ji(K${K!+=v>p8b4@hKmo4XFv_7b?Dd7>mx`Dyarf{NJpPnp}rtXLr z?b5aHq8;Ik)Z5Y#%VJLoDrm^9I#e8TpxriO9=w0YW@ z$K}kR2B49CUEES^jTGmTT?6aJd||+mLb>lt_CY>^K3h;orCcvdZfhn0N!t?%vkbJO z2Tdk!RMF(ktOH`}+Ka?kOe%s?cBD9(FG9fDtA>L>DbB#qZvCUa<}z-cX*;Vw2OadK z_VRUYMDE4&sZF|z)3IRdDT0kmnS8LAw33W2KiS`@ryo6DcFQazzk-_e5DY}1?|Ey9 z{gL-y}MHUyjP5^Oe^e|9-c?^cwft_-^a?^|mP zYQ)fmadtOt_dlmTUMS~#EFP#Z&r{H-Fc?kF|3nILiNzMr@=}W^>)W@#K7~?KSfp*b zr^&tKhgUl5Fqey$az;fAc#7Yq9eK*iC!nPhWl17i_@GZgJf23`E&*o?WzcEnS1w>7 zk-+ynKHY(qZ?>NgU)|Y?)*&=#p5y82ivpoYx8<**5nMEyHu_ z!tqJz?dw8uT!!pk28-6=uj7RL4C!=aDI=5m^^8x^f1!h=YbuX#wf+niR+FUGhSOKy4{Y0Zlhk#lqYY*p3+oNh-BW$G%D6?Cab^LbsQ={ z|AfG3?y)M=AfevRG*Uf=7(2?q(8bMwyz|WQNc%ZcUXo%JUuf+!Jd9YFjp$c4sYB#z zLpf0sp65n#Wo-2?-2K`tfJyURf(%s>f<;dbean=|{<^!gd3yZ)b5T`O5~-7O4biIF z>9F~na+NFx3PuiL<=2KiKl=-r$9Vk}I88L`t_dd-7Z}>UlzZSS;o=sY>;Wi$ixGBe z>MXI0kqWVn>q&p~+4Y)n!3jc{8s&>vi3zQehv^Gm7S0}^O(69YGFHepw?aix+i9H4v)R^zd(aC&_=K-=nW^h^`HQnmz)YXB; zrCnvwI(irTjo4H;@;ToE-u>RYdXl4s!1O)_+mT(!e zoAv~KfB$}T|B?UWXaNuLbV55#mXX?|z1|2H;sWxY_vK%=A9tm!s*}0bXR_c# z2tlNj9`*=`W34T@U48wL+va?|j`Pfd%u?u=S6qa8`UP5rAE&=)n&zqXtJ6Dw&#KjE$ z>#Ba+8Gb3*OZz~F*I>B(^8Y@jwE?wjum#p~6iw#OhQC8DA@Y0^{DIPbE_WeK4ump( zF6kCw4g$44Jrn!^L~m*b`Q;>mfy>LXR*bT=a7`rBvU7N~lN&}%y|q&P+n)2G z*2&Zq&ddgd$E>u~OZ|r^kd8M0=xN=}@w5AF%%t6HQa?LL1zKz*`2qca8>473XssJ` z%MmCBZFM%T+@AUN(I<|K9y5w<6w!3Xu4^B*Ja!=ClP(_DVppoEM9r#Cr@-1Y_|Ky5 zZbjJN8*ExY-GYSKLpTI=*iF>AcFFTpmlr-~TYZ006AU?RMV@nP1+8g;_ zW6$Y3N&AQg_N%u7K0eighDytBg65A~=Jc(CN?lyjA+kQWPwimn&qEy%?N9grJ=y)+ z?S5m;6ZnTq!SLqZjvDm0KVNvx_L1UwE=$1rw~nnd8Lv3`d=kZewb~-2yap+9}?^LvwAqGg3l*uIYA@O4P5rei$s0!)DOJX1ylv zm+%*GOZE^&rC(Ur=}tjEuf+Q7pQYO`H>PlC?YMn=MYCn}61y+aCvPF(N#FF~+dEF% ztWtNMeEzk!YWT*9g}5Fk_Hkxpa{?wfPZbAZGJmv^j=|pLiaI5nG>;uoQGr$s0GEvn zpM6}a`on76Q31^c-A{AujZgTb4Zn_Wz3!KN-}5!Qyl2dgh1sO-k}I41g{}|l=g*UP zgW=71K8GtuM=QsB9YC8q)M2UJ&l}t2t zu`RddqK3OSpfepEF6>pQMl@s~_*cf2pz8Et%iWUIG4<9%a>V&I8~egWNP%(I!iEo` zR~%-19mwC|<-OM%A7k8H(c%9sOZew|jr-Ua0cUYPsBr8;e-5(}Vkk6I%VF&^Cw0F2 z@;YmqerWaLhnXxaG(H?=#G4)tbGq=vP|kH0&n#_!&i3nDyK{u)pS*fI;KeuOki68# z)-FzL>F*7L+p5Xi7t#7U0U=>g_q9c+U6qZs>hDji7B^P2PO1O!skZY=nOz!#5*-Yf zj-hx4cLw;#H&(gGfsYG988+ag}e7bZR9e{7?nfBdPuGCwCbW5-Od^Yuu=)cQ&XI0TPwFSS%Aj(`{FDk;~G=~UycrQ_L_k2Mq^iS}<5SMD{p zSysBtZ)t{DjfB>B>eM#4<`eagG<6l4X1pg+d@L3oK<^WE5Dy3t7P20!Hu=L_LgRcB z_au5h`%N0Qan3)DngwSMndSk+3}~PL{m@~q{k`Kq?cc4gst#n{5f2G*Y41Q+29gI~ z#4ztu?1A0{oFayQ3ieY_^Ak7sfnfQ@3>D~Ao3J6?I2r*O7>1XU(eTq7c|CaF5+Jw; z0KweXh(|Y^EUzJ8^!JJZ3?{yB89sv)XZz_A)pGR@SaQKRNE}1gyFxB*RQ5iWLx8St z(%v<-dp@-K0ObG&E0lLgLeqox2++p-PnPFRok<{`*imfdg2XNxexh*#Iv&jDud~Kf zjs(X+%f}TzU;>Kvg=)YXIMVsNNkbme(Y63L)#Ik?o+gbfEbkl+TmX*j2!D7nN4`E~ zGdBg^8s6L)-ad&%k3an9cHa61pl|M6oT#Q<0W@d*?Y$`=`_FzoQatBtr0>Ar?fiQ) zf1#n`eHq$F*X1jQbzp+;dU%@U+Rkct9K4aeUi={V_vQsOfkdO|N5{cRwc1)x51gz! zRxK}c)O;1HWr2ubrc_DL4)Zgs6U2Y*fLuzjv;&#ZISXB`Q`CuY0R#SvQE!kXIzfJt zHTL&N&jZ*NmoQS1g7Z<&n*-e`*>`Ef9>H7wrn@8@P5bc> z))tg7gWFS}Q`30RK5BV`b5`O69UNzNJ40&!q9m)GPWqFNFF=dgTi+hEgRM7k(|T9* zQL{I#2XZNI$lETb|7g9p55UVm!iuBf4&nwoG;aSpf%CaTbaYp`X-B8&F_PNv0#_rR z_{HD(4eGc-L3r;O4-Yr=tHeVlAVbk*UK&3bc1g5Au348k!~prMPoZD5UR_u9*TC>T z%w4CXV!K-vb(gi|fE8#T;bYB&3vAq|XxbN+GXOLFFOlOHKueo#q9-89cO#VE0j~%^uXoNQEF5G#TG;8jr`dx&@ zU<_bE_~!QOHXQU4)hHH~q_b2xj41jFy$Rbsg$8fD!qAv@19-Xq05pGMwYtex4mdks zzMdLj%f39Bq72$W!B=dxC{Nz0Jbb}3JzX5|jDx059V6UPn{xU-QBHw`k#dF7*V8Wn zSy%{aev6r{c)RfQx?(v99S`SA5_jmjtr}+eMH%FUrJ5qj}Z^PyoQz2SQc2D z6$Jy7+A60c6Tr!Y;W0sgW}Q6qMHQ0NY(fwz81IYVnO4<- z(w90HqOeC<-c%poyX{W7v)ya|GiIPcZ2taa(#ItEVzTD;`>7U1(Xvt{?#tJ)fv%yW z2et;N)e7a#kfItPS(E&oS>~Ew${BvA5y|4$pI}NXC^`U}OCboI(s7L}INfIoV60@4 zSk3H96Qyt*Lz5aY zR>K@8uW~a&ygb7Rm9D&hkDWSTQa!4}@DwPzJX*(b<$4zB@9S56rIcnD2P&1BoQ01{ zjbubhcYtmx=B<*du*u=W?r5=B)IUpTD<%K@eq6kjdhts~I5OZ1CXP5u|K)tXxXo{l z#p4X0P#s@R(<|JWFPukfepM=&E%>YnQHDh{P2U%M4vibL+ebtg_l#}4TH0f(tQv}9 z%w>(;MOgft_q#mn_Wabdh<7LC5FpC@ZW;XroD9HtqS4P#AyRggBdX9XaP8V)lb*RE zCrS5-`SGpby%=wza&}qoVCKP0!g3vT)yBi1aI`Q_d%~s#&o~cMhPFIp*wR-Pgc{H0 zGDb_Y_;HhE%^~(}CA#rHe64VxZzw>_G}!hWouq`|*qPln5*4=knXNwan)JcXubn=; z7uA4`j~@m*P9kBez^!|&(!Z^B;kmziQ!)OykH&)=z+^8EQBeLtujus0bO#dyCf%=3 zSNLh0JU!z@KQd^-TKX#krkL>O`GLiCcYm(Sz5QPdTP@qVccNwS?>v^*`(sCJ{yWXk zzoDgS{q@{;exapZ7Slkx6sf&_y(C`Tsm*F&$uYk);Eh&(8wy+X6N0)OooQrHDoAtx z^_kOFycwbaH$Go6y;omvO&~lstYuR%9r~d%j6hM60Lp(XsE; zKXVkbkV7~=7lpN|Y2MfT_-p!)-qa7O%<`;!1hl{dZRc$rCMAz0LwL7KdiiPye>4k7 zh1fzm0V2 zMKA938{%gsZnvwa(yBP@^gopHUXHpcVb0gz(iNU|*{IU7)BR9tIK+b0N&YH#ko6ue z<{F~zab8@m+lLpiT!r`cRETq1-Ck0%01lKtBjE^VXW39w+clY;F}xe0Y@2=*~# zrp633Uic03)#NL=#dzdo^zg{$W2c1_Bc0eZ&yx-xjI8`7ks~M3_hi0&R^bHH@}u16 zw;`Sfwl+PupAX()1R78O7T>r21L$6UYGjb5Yeau->f9n?>=7N~`Q7e?iBEIPq=34gLerD;rxbW~~Uv?~%*KH5g z!#eX=0Jp;&gSo9&u11J)RLelcODlD>dDXUeyv3K%GgQxNK3g?LsZ%HixVzrIxIS)T zjiEAo9yn6gmmI7w2T;6`KvUoEOV<35fYOuN+uwVj2!dBXJpy8hMIlZfhb;_7P+&r#t8|=7<+>ov8rOr>UQ5aC|2#P zPgXHs62vpm7;6z-l<4M>B@N?^^>dH;t+XcofZ+sBcrN6z4cU+Z^~_4G%8xWbFswaCzJu^IL6)|`Jx5~(^Synl@+dhc zW6^Z0I4*pf=b{FcGz7TnTDTU0=4Xyn%ucu=scIt|&E8qR>1+_|z-|h?3C$D5+$RPu z+M_pW)!BETTD4zpf7kEyN1nm+^I7ffw?5DBOub;eR~kkbK=S0{C&riuu9YIsD|H6K zRCG7&EQhC%#Q{rJxQDwJ@sHeZ6X7J*iaFg1Ex{c&6dld{IYpotSOWW6V)03BVJbfS zhs&AoT%!Bg8}9-`Kj6d4TuW^iW`%2LNXOmHnEb4=u~)K9QMg%-E!L{_;YFmf?IuCug&rjQaU{wXbb4;y~NPkMr*Ng9xM|30KI4 zqO#9&M_8X;xIe|~0RK+7A`4RO*i82B1# zFGaO{v8xI44%>U;$w4|WAWMtbmhr;r!NZID^8!a#@?&6s-iGDu6o3rL>&9#@Me#KE z-j$dybQmc*1W?WP?mW6o&8r;_?B^~f40>t09R3*Ibn65fhf`9 z@}ia*2YB8#n7<52CAXEg^-njyPpr`-fhTQ1rH&5_EXXO7Ge!{(vx>f3PVnp6FLum$ zTDQi7gC^w2;@%Ok8pVU}d2b9QHh5Z~9|XU=u(kI=7U;>qPs(f%FDqdpQjggCRJhfG zbyjZfY9j31i4~l0JjdavCfogFzonO1ZH}Wd|EtL<;B;RSJI}ZK8&P6YfXM{tDET&i zl4-mWpgmCE*!Muzi@TIlu7cCuKj1#|EvvzAR&=bAl`A9_vf%sF;H0sBUJTZRW7fOc z8k=N+VE<&jD?e&r=2@a<>lC%ZyisBjHWr1sP_-|Qy#IsIii9D62%|*Cs^wK&u>Dy7 zeT*_7{&?{Yk;dj_z;M&*@Eyic10#WR_KDTwE-xZioww-LH)|2YckWz7^)JJ!f|SKU z&Y*DeCpj!FidzcP4SMf-!1?-pZ)&j2fZM3_1UO-XR|E>=!{B($WxA8m?)d%16WH8c zSY%$v*5TB;`~=cRH#c`ds$aR1`4?^cmJ$$d_`>RoJ!1dmu(Q{0w)6Me9NRv^5H_`? zojo^K4YJ^o`JoZgG6_m}Z3^YYi#+n_ApRO3=3h&3A&fTM!hAZ@5O)!+)!}_x%7n)U zyvF(rb-oyDx6@#Y)C~y57Iy5!O0X-wMYs*Ouq$U)B28r_5eEhcb8y1;a}r#41B}JY zlnXRfow8+>R{yCuV!hnh)~r2S!Erf}X|7a}9gDjA>L=^3s}u|6aQjlL zS02=&{9tQs_kmcZ=Gj{2XnPj0|CN*9OPkEzE8kCl7b1;F^+Pr^+mkUdHap#V(0m^$ zelx9rL-F=u&R#x@E@*=wsS->{7FkzGjlf)! zFS!|Kit)KG@@S~JuHAa#ip^)TIUAo%ZbSBSQD#OFg9CLAxjd|PFZgL= zvDA#6NTe^|IparLwaBBT=Dzmei95Et>gG;-HMr)lMVa}VHCwe@mXP)|A~`R2Fy50z-#H=+FkbUz zJ2efl+N~Bvy9D@Q*rL8i`p!809Tq@C!ZrRTWcNp#vjo{`mSpyYJLy&sE4If*YPeqc zDaxtizv;j^FV&HGs+hXE-V1KmD^T^T{n)X@RI;b%V9O@kaaj^HSPsjG;?|=j z0@lh_79X`gri$HGt754Ty_XwfQ6O}Tr^ZT~Vo}GtK(Xd7TNANjjmM9<$H|*hE#Diw zA^$qHqP}s1vpn$saBj^DguJrZc9+&IoRrM*88%$kH{=Je)EB`k^+m1U&0x>p?n}jR zMU1)q>k^?n?Vpzj2hBK7dh55Fzrrcj;Xk*HTu3goW)vmqr1&4-dfhM(bqFAl>VG3FdE#28~|ppp`uHqx{@+4rNxw$UaBf7>o%&P~OLdda?`Dat%;G5;gJ z1Ua>siMyqJz3yhvP+vI4d&E!c2`kOD0ZziF)b% z@&g0DhY6o&&i_2DDA}Y+qgM*GVX^$?hD*s;6t`O2w~??_v17}OV^i8vQdysqoN%

5??1AQoH&e2-2 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
eoD$?zF{7MH2mfr3zkkUob$@SH6lBiKkx`^u#7N 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 Zg&?ny1)?afqzpIfAj>zT> zHtn>ykE~|we?T-nv}t&8AOq;B_#zvBYfrMza&HA5EoNx-z(Q_r%!^CN7Ag3(zrUge>I!Fg1=_dNpRTg~j0Uqj<(+&Fb9vl-}?)Km_0d37LKU-XwNHkyi0 zg+a<8@s7$({RK348&ShgPoX1!byZk1m=XKJKmYlm2^XYZIK7yow>p{HwIn78u~tUf zBzedll+V98Inc!o=@w@NfxaPA_S|GOjgxq})-C1G>6j2pwc|y)e5>gBYi2~D(OHv@ zzQF6XmK9{$(xwcMuUylcIeBaEM(_IU00x>Woebz}9(w4LC% zVlSb9#(vv-Zg?8LjA5f18q*n8#9))0;OWA@8B)^cxyV95{9g82f&I=O$abahp=lbF z?{t=3frK89(#4sce_Z~U&d_f7250bPn1U3!pvP(M&n;qxogFQ@A-jHb&tWpd)#;=+ zToTi7NQz|s|kTZR!DB2($ynM@?`clw8Zm>xy;P{ZJ7{IYxQzq0rYO|O>UV%(}x z5GgRm@JjSy%bOz{liZ+@zub|V4T^lIp^FZ>)6DI_7B>7$b`rdKT%28Dl;J=fMtrfX zvrcuqqsvJ48K(-H|WLTa?lyudX}Dh9piG! zaBnNUOJ{z7i+;uU@2y-`cE%L@GDx(P*=A&FU_pB=epMXF`-tWiT6N{`IzvpfZ5R!R z*hlSp+gbI;Z^Q9k6n)gotr9aQjVNCeOys27`dVNSuH2kQ*1P%WL*8qZ=FAST^ z|JlU7)5-stA1N-|u2siaK3BrB$kBlqgj&h1aIoayg7NPE&v!y z2oy&+b;>mWnEfjmIJ8%%lYgY)MqKS65M5X7!>M}u55rL&p|HH$d<5Ja`5rw5KViyC zLIsi-s4#0F@B@8gXwf|ijE3SAAMLhusQ+SzUc|1=uUK{|qnIflw@AHGIHto^JiWZT zh&}|Zthr2#DeIW^rO{?0NJ}M6!q-KZk#Qh)kR0}@;$^{wG`M4Oz&HgG82!8x6b7yX z{q2R5HC`HGPajhpPMKijCFGb^r??`45Onz^i7QY1f?{L&;6kQ{g_k7K)l+)}W`nt9 zuN;<1Lt=hzOA@pkh+~U*$Y8P0vZt?J>)D@z2Tl};zv-v>KO#|pc53&@V7`x_lV$Ml ztp!zafFpj`hoB=q^>mB?&L02|`ka#bA15X5l(#pLB#HOU#dSPCY>m60BuymC* zTL;NPe1 zT8vy(#>i-b;*2TUo5F;cb19jNS+xUgD;Lo!EH~%DP+d~Ikkmlt>5^Y3@LOVaY_>4) zMr>OUG-{v#Y{yWi-<%wlvX0_{36keTJSaV@rbhFr@BP{V~J|qp(71HTU_&N0dVNo9+mz!Ct66Mn94T5(|a` z#ELjEz{|iKDp*)B!y!0>_PhpB|${DFnaijiB~28Sy?H7Jr>X zDz*!&Rq-B&bXGDOIPg`Fz~0>UrYTcA9Y2KM89c|I2u|mA<-(E znj=XNt~LEJ2|?O3KU+m=!XeT`gBgz-73ywUGB`ZW4`Y42DwxalFW=L!3xElUg_OgG zm~GFI5t;0STLQ0)W1_PF%ai=6WF6OHQ()Ez_lO{R(-U5S(NzbprD#nm8Shh#D#j@d z?1}nf1u@#%$Dw_exUNzZAXvpiuKL2Jkbjd0UW@ob>VHzW;VA3brZ_)1qEDxf{j)x7jl~d^*A;|iSUukpHJBR{Kj3Eh6Z^FRi7i<$O1NJ$^IO6*!edjuG;EB7b zMWH6U!`S6Jq}S^VmSWJtU%1rZb5ebm|A)4}j_o99wgtg9Gcz+YGcz+Yv)yL)ug%QN zZDwX>W@fw1%*^BO-8XyRm3F0_KSrUd3T2g2Q7Wl2Gfw0=JDvg zC5$2D40S6cW)2<(tYshkUzXb%My^@US66GjLrD1^4C#QJSmOF4l#n#VOUK+__BjO~ zarD;>=&fU$JI{m}pK6A97T?Tz;CKDK9sEz-xA-9%0AFtdLi@Ti6L`zJyEl7B0FOQ^ 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

1gYoP#y8nnlh9j@zkN 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%0Aj5-joXwY6Hg`QN=$G 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

ll+5zAzE3KKSBK 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

7!7ulJ3o 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


-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

e|LXws17doj1Fl#~;$H5Vfh#2Q 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 Lixz1bY~uYt4cUyD From 8971797b0bd3cdf89d6e8e3d8f67551a9792c064 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Fri, 27 Sep 2024 13:59:53 -0700 Subject: [PATCH 167/230] Expand tests for `array.new_data` Noticed that the existing tests didn't exercise out-of-bounds indexing of the data segment, so I added a test for that. At the same time, since I was already creating a dedicated `.wast` file for testing `array.new_data`, I also added a few general tests to round the file out. Some of these might technically duplicate things that already happen to be tested in `array.wast`, but I think that's probably fine, and that it is good to have dedicated tests in this new file. I can remove them if we'd rather not have these potential-duplicate tests. --- test/core/gc/array_new_data.wast | 50 ++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/core/gc/array_new_data.wast diff --git a/test/core/gc/array_new_data.wast b/test/core/gc/array_new_data.wast new file mode 100644 index 000000000..397a86e35 --- /dev/null +++ b/test/core/gc/array_new_data.wast @@ -0,0 +1,50 @@ +(module + (type $arr (array (mut i8))) + + (data $d "abcd") + + (func (export "array-new-data") (param i32 i32) (result (ref $arr)) + (array.new_data $arr $d (local.get 0) (local.get 1)) + ) +) + +;; In-bounds data segment accesses. +(assert_return (invoke "array-new-data" (i32.const 0) (i32.const 0)) (ref.array)) +(assert_return (invoke "array-new-data" (i32.const 0) (i32.const 4)) (ref.array)) +(assert_return (invoke "array-new-data" (i32.const 1) (i32.const 2)) (ref.array)) +(assert_return (invoke "array-new-data" (i32.const 4) (i32.const 0)) (ref.array)) + +;; Out-of-bounds data segment accesses. +(assert_trap (invoke "array-new-data" (i32.const 0) (i32.const 5)) "out of bounds memory access") +(assert_trap (invoke "array-new-data" (i32.const 5) (i32.const 0)) "out of bounds memory access") + +(module + (type $arr (array (mut i8))) + + (data $d "\aa\bb\cc\dd") + + (func (export "array-new-data-contents") (result i32 i32) + (local (ref null $arr)) + (local.set 0 (array.new_data $arr $d (i32.const 1) (i32.const 2))) + (array.get_u $arr (local.get 0) (i32.const 0)) + (array.get_u $arr (local.get 0) (i32.const 1)) + ) +) + +;; Array is initialized with the correct contents. +(assert_return (invoke "array-new-data-contents") (i32.const 0xbb) (i32.const 0xcc)) + +(module + (type $arr (array (mut i32))) + + (data $d "\aa\bb\cc\dd") + + (func (export "array-new-data-little-endian") (result i32) + (array.get $arr + (array.new_data $arr $d (i32.const 0) (i32.const 1)) + (i32.const 0)) + ) +) + +;; Data segments are interpreted as little-endian. +(assert_return (invoke "array-new-data-little-endian") (i32.const 0xddccbbaa)) From f713000271658a7a52d34da17032f0a27b698969 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Sat, 28 Sep 2024 02:01:29 -0700 Subject: [PATCH 168/230] Remove nullability of local --- test/core/gc/array_new_data.wast | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/gc/array_new_data.wast b/test/core/gc/array_new_data.wast index 397a86e35..f55c28bf6 100644 --- a/test/core/gc/array_new_data.wast +++ b/test/core/gc/array_new_data.wast @@ -24,7 +24,7 @@ (data $d "\aa\bb\cc\dd") (func (export "array-new-data-contents") (result i32 i32) - (local (ref null $arr)) + (local (ref $arr)) (local.set 0 (array.new_data $arr $d (i32.const 1) (i32.const 2))) (array.get_u $arr (local.get 0) (i32.const 0)) (array.get_u $arr (local.get 0) (i32.const 1)) From 4c1061994fd2ca292d65d222ddce3d744383de04 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Sat, 28 Sep 2024 02:06:07 -0700 Subject: [PATCH 169/230] Add a couple more out-of-bounds data segment cases --- test/core/gc/array_new_data.wast | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/core/gc/array_new_data.wast b/test/core/gc/array_new_data.wast index f55c28bf6..da4865cf1 100644 --- a/test/core/gc/array_new_data.wast +++ b/test/core/gc/array_new_data.wast @@ -17,6 +17,9 @@ ;; Out-of-bounds data segment accesses. (assert_trap (invoke "array-new-data" (i32.const 0) (i32.const 5)) "out of bounds memory access") (assert_trap (invoke "array-new-data" (i32.const 5) (i32.const 0)) "out of bounds memory access") +(assert_trap (invoke "array-new-data" (i32.const 1) (i32.const 4)) "out of bounds memory access") +(assert_trap (invoke "array-new-data" (i32.const 4) (i32.const 1)) "out of bounds memory access") + (module (type $arr (array (mut i8))) From f846dd190d6b1965fcef66772516b11f9329b0c6 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Sat, 28 Sep 2024 02:06:39 -0700 Subject: [PATCH 170/230] Add an unualigned data segment access test for `array.new_data` --- test/core/gc/array_new_data.wast | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/core/gc/array_new_data.wast b/test/core/gc/array_new_data.wast index da4865cf1..2af894c16 100644 --- a/test/core/gc/array_new_data.wast +++ b/test/core/gc/array_new_data.wast @@ -51,3 +51,18 @@ ;; Data segments are interpreted as little-endian. (assert_return (invoke "array-new-data-little-endian") (i32.const 0xddccbbaa)) + +(module + (type $arr (array (mut i16))) + + (data $d "\00\11\22") + + (func (export "array-new-data-unaligned") (result i32) + (array.get_u $arr + (array.new_data $arr $d (i32.const 1) (i32.const 1)) + (i32.const 0)) + ) +) + +;; Data inside the segment doesn't need to be aligned to the element size. +(assert_return (invoke "array-new-data-unaligned") (i32.const 0x2211)) From b889c6359ccda4637df518400a7f6754e55673f6 Mon Sep 17 00:00:00 2001 From: Nick Fitzgerald Date: Sat, 28 Sep 2024 13:52:46 -0700 Subject: [PATCH 171/230] Test out-of-bounds element segment indexing for `array.new_elem` Similar to https://github.com/WebAssembly/gc/pull/562 but for `array.new_elem`. I opted to exercise both expression-style elements and the old MVP-style function-index elements, as they have slightly different representations in Wasmtime and that means we end up doing the indexing in two different code paths depending on which type of element segment we have. Figured that other engines might have similar code paths so it's good to test both. --- test/core/gc/array_new_elem.wast | 103 +++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 test/core/gc/array_new_elem.wast diff --git a/test/core/gc/array_new_elem.wast b/test/core/gc/array_new_elem.wast new file mode 100644 index 000000000..d71d981d6 --- /dev/null +++ b/test/core/gc/array_new_elem.wast @@ -0,0 +1,103 @@ +;;;; Expression-style element segments. + +(module + (type $arr (array i31ref)) + + (elem $e i31ref + (ref.i31 (i32.const 0xaa)) + (ref.i31 (i32.const 0xbb)) + (ref.i31 (i32.const 0xcc)) + (ref.i31 (i32.const 0xdd))) + + (func (export "array-new-elem") (param i32 i32) (result (ref $arr)) + (array.new_elem $arr $e (local.get 0) (local.get 1)) + ) +) + +;; In-bounds element segment accesses. +(assert_return (invoke "array-new-elem" (i32.const 0) (i32.const 0)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 0) (i32.const 4)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 1) (i32.const 2)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 4) (i32.const 0)) (ref.array)) + +;; Out-of-bounds element segment accesses. +(assert_trap (invoke "array-new-elem" (i32.const 0) (i32.const 5)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 5) (i32.const 0)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 1) (i32.const 4)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 4) (i32.const 1)) "out of bounds table access") + +(module + (type $arr (array i31ref)) + + (elem $e i31ref + (ref.i31 (i32.const 0xaa)) + (ref.i31 (i32.const 0xbb)) + (ref.i31 (i32.const 0xcc)) + (ref.i31 (i32.const 0xdd))) + + (func (export "array-new-elem-contents") (result i32 i32) + (local (ref $arr)) + (local.set 0 (array.new_elem $arr $e (i32.const 1) (i32.const 2))) + (i31.get_u (array.get $arr (local.get 0) (i32.const 0))) + (i31.get_u (array.get $arr (local.get 0) (i32.const 1))) + ) +) + +;; Array is initialized with the correct contents. +(assert_return (invoke "array-new-elem-contents") (i32.const 0xbb) (i32.const 0xcc)) + +;;;; MVP-style function-index segments. + +(module + (type $arr (array funcref)) + + (elem $e func $aa $bb $cc $dd) + (func $aa (result i32) (i32.const 0xaa)) + (func $bb (result i32) (i32.const 0xbb)) + (func $cc (result i32) (i32.const 0xcc)) + (func $dd (result i32) (i32.const 0xdd)) + + (func (export "array-new-elem") (param i32 i32) (result (ref $arr)) + (array.new_elem $arr $e (local.get 0) (local.get 1)) + ) +) + +;; In-bounds element segment accesses. +(assert_return (invoke "array-new-elem" (i32.const 0) (i32.const 0)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 0) (i32.const 4)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 1) (i32.const 2)) (ref.array)) +(assert_return (invoke "array-new-elem" (i32.const 4) (i32.const 0)) (ref.array)) + +;; Out-of-bounds element segment accesses. +(assert_trap (invoke "array-new-elem" (i32.const 0) (i32.const 5)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 5) (i32.const 0)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 1) (i32.const 4)) "out of bounds table access") +(assert_trap (invoke "array-new-elem" (i32.const 4) (i32.const 1)) "out of bounds table access") + +(module + (type $f (func (result i32))) + (type $arr (array funcref)) + + (elem $e func $aa $bb $cc $dd) + (func $aa (result i32) (i32.const 0xaa)) + (func $bb (result i32) (i32.const 0xbb)) + (func $cc (result i32) (i32.const 0xcc)) + (func $dd (result i32) (i32.const 0xdd)) + + (table $t 2 2 funcref) + + (func (export "array-new-elem-contents") (result i32 i32) + (local (ref $arr)) + (local.set 0 (array.new_elem $arr $e (i32.const 1) (i32.const 2))) + + (table.set $t (i32.const 0) (array.get $arr (local.get 0) (i32.const 0))) + (table.set $t (i32.const 1) (array.get $arr (local.get 0) (i32.const 1))) + + (call_indirect (type $f) (i32.const 0)) + (call_indirect (type $f) (i32.const 1)) + + ) +) + +;; Array is initialized with the correct contents. +(assert_return (invoke "array-new-elem-contents") (i32.const 0xbb) (i32.const 0xcc)) From 7995c920f5087304bd2978bd1bfa7367320297e2 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Fri, 27 Sep 2024 17:08:05 -0700 Subject: [PATCH 172/230] Update IANA media type registration section in Web API --- document/web-api/index.bs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document/web-api/index.bs b/document/web-api/index.bs index 0269f96bc..c2aa74b2d 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -235,8 +235,8 @@ JavaScript.

Media-type Registration

-This section will be submitted to the Internet Engineering Steering Group (IESG) for -review, approval, and registration with IANA. +The media type `application/wasm` has been registered with the IANA media type database [[IANA-MEDIA-TYPES]], +with the following
registration template: application/wasm From 31418f67ef968031c8f883578772847b01b5a6ab Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Fri, 27 Sep 2024 18:51:36 -0700 Subject: [PATCH 173/230] Update bikeshed_fixup to number the Change History section --- document/core/util/bikeshed_fixup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/document/core/util/bikeshed_fixup.py b/document/core/util/bikeshed_fixup.py index 7041d875d..da3d2efa5 100755 --- a/document/core/util/bikeshed_fixup.py +++ b/document/core/util/bikeshed_fixup.py @@ -33,6 +33,7 @@ def Main(): 'Validation Algorithm', 'Custom Sections', 'Soundness', + 'Change History', 'Index of Types', 'Index of Instructions', 'Index of Semantic Rules']: From 15eb918814c0341da9c41501f3ea5d33c1e79b6f Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Mon, 30 Sep 2024 10:28:18 -0700 Subject: [PATCH 174/230] Revert "Update W3C TR build from WD to CRD (#1797)" (#1813) This reverts commit 50429509db9a1cd0f71f8a8b93ded37e4720d4a9. There is will allow publishing more WD builds until the CR transition finishes. --- .github/workflows/w3c-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index cd43f17a3..a47b1211c 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -45,7 +45,7 @@ jobs: - name: Publish all specs to their https://www.w3.org/TR/ URLs run: cd document && make -e WD-echidna-CI env: - W3C_STATUS: ${{ github.event_name == 'push' && 'CRD' || inputs.w3c-status }} + W3C_STATUS: ${{ github.event_name == 'push' && 'WD' || inputs.w3c-status }} W3C_ECHIDNA_TOKEN_CORE: ${{ secrets.W3C_ECHIDNA_TOKEN_CORE }} W3C_ECHIDNA_TOKEN_JSAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_JSAPI }} W3C_ECHIDNA_TOKEN_WEBAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_WEBAPI }} From a7006179eda66c83fcb8167d475a129967753652 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Mon, 30 Sep 2024 14:03:20 -0700 Subject: [PATCH 175/230] Add introduction sections to JS API and Web API documents (#1814) These sections provide a bit more background about their relationship to the layer beneath them. They also solve the problem that the existing minimal introductory text was hidden in the bottom of the "status of this document" section. --- document/js-api/index.bs | 17 ++++++++++++++++- document/web-api/index.bs | 14 ++++++-------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index d6cabb20f..d9c9c8722 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -23,6 +23,12 @@ Date: now "title": "WebAssembly Core Specification", "publisher": "W3C WebAssembly Community Group", "status": "Draft" + }, + "WASMWEB": { + "href": "https://webassembly.github.io/spec/js-api/", + "title": "WebAssembly Web API Specification", + "publisher": "W3C WebAssembly Community Group", + "status": "Draft" } }

GHMV_dJ-FyIuXICH&>cvIhvZU9RP6p4~V&S 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%0DV-G&~88Xpa|0XL6vF#C*67 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%0DnIzIjq7icSw2I&RN#}41nq?5R-RV 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�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%0A8G&}C^IQOyyyVtK*>??h3B98<)msjt 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%0DW&XUV(Cd8o#)_d7eNmuC}S4p=zcT_)CdNl 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

yl!Bve7s&q9o&ZW-p}y$7 z11y_?dbV&_O8cZpWaTCZ+`sCGaLy~K4Su?Y`&Pl4nLN5dhJI{@vBXQeY;e_x3GAcs zs*jv>e_cA<7?(mZD8ihZV~a`K{f$4al>f>pV$_kZiN4!ngSz%KA?opz8>D*|mgo|C z#R16A`3V*$ID1bSLS*ab*PYzDuZ zE#2^-`|KzFvRA9iP_GAYHCQ2hKCm@d*#~Vqn=KdU&B!Z* zwCOUa5z@wki=*L%S$GYLkL~ApP9J?1FT8)A&<}M|*j*I_*GNO>V!{3Q;a%>QqN0S4 z5|6$q2%af$n&EwMyBES}OBiU58`6EMb=)6KH*7uSCQA8p8~O_?3Gh4TTx%s}KgrBH z7FO^>&5h=lv`m#&y(2Kc@Pd3p3M3%>!}cruKs)$I<98E`;Due8W{R)~WJ2!G1NgEW zRbpPH3LF#uoIOgD+^{3Z{f>Exi-WMT>{Cc$`!=_Yu%p$@ahL3dUW!Hc3xS)}y09{% zRsx_&kL;Ea+>G33pTkEBU-yQj+C{6(-0b7w(DJqRT^KLDcIsF0__tAyQm#v{Ec^#6&uygcdOz9C?xkE3GI zr`KLU!KV{&0LUP8lhcJc09v4be;O>3V{v3ZBvCVs{fb0E*$HO2@ijNdM9g=uzufTD z3EaadR*x6{W%X6u^{s#p#LYz>5F|lW#xpy^k_gWo!(a78(V{I&Y}c!{Btc2FY5|3! zwotxwQn4?cbX*)xyI&|@hjZj}wblDj%FS+5o9U*8lb&R)(_4!+W&spl57y(B&A_18 z&60BR0|Q1ndR(S2ayL+aVz_HcdJ%JmcCL4Y;)D6Hv>FB~)DT6-0v`bf<7h95Tni!P z0+z?IFayojQg~NjCOQ-BxRiYqZ-Iu0O-VHjT@V9~T#`=T_G(^d=;&@GT$?x=T(hPy zLmm?%+M2Jh$yzmLDGY>|RK7SzGB)3!3nOv%kjN57b*jdpDd)cXhBs?3f`fBsQJ2Yh zcedvF;mz04rO&i*qG+0`l3-^OrK(s;*YfEo+-?6A0Y+vm!IngTwk#D}jNc7BV*_6p z%zM>sKF>B+!hK4%Kf!dWLqXmZqmSeRDf9S&kyaFW`=&hGxzjz24< z^}`ts8bg-++Yk(MPiEUM^JSg%1Xh;vx>-oD?a zS${;WARM8p96Ug|KjTG73UpY5z@ubnB+|z3;tY!>pxH|%EJtFUBAZQ-tC2N`8@Qz1 z#w(ad1Q$jTOBh0oObBT&ve7Qe?J(RvLtke9h2n_f6ChgA$e{&=UXUHjDl*FAVhIne zX!YN4aX4S&dUQCSkn3V(oTM+^&nNv$UIR7{Bbw%++(v`4vj}|eAk~jUn6xo+mNJ&9*Nw1PMu+*0*IR|7IPV-vaKp73%Z zcKui=BT?NKDV!37DD8MAHkpvjAQ1c4q47lyME8ZD^+={|AAfFp)1Xu#FVBslum&`6 zubO66c%XsI2o$z7!uXM)0!bU2r*f8_r%OWuN`=kQAxF7K141SpcJtoVvDT2&14zr~ zt14xz?+nwDgIPE7?d-H^iX;IJRT#XgX(UbI0=`G z#!1G7qrW{|)6?5;wILIt#=hNak{J&ex{apJzgxb2EMPpriHL~S%^?mk$+ji*Uk6|a zA;{jhuSl@iZYii2oVeB1hsp2ok~Q}JqL;}$+Rvbt>!JtFW;0? zJ${F1Ei{=N?t=@NXjdZep-HiaZB+!7bf=hMAHj>zHJ^s-IWhCv`K&Lm1tuCXHQKZ< zZR~Hp#-r-(6%V?B{G}8h+`Y=k?B7MzKrDtG?pCu;oB{RsjJ9mo7v1{;mAj<@wH2+q z33D$87kWKN>g~(({v!SAVrbNI1v3!7@ErnhqbUb4w~yCK^-AyU)T&fT7C$vA^|;M2 zq-_}pg~EMvu6GH%@OgcGVtrg}vK8ptpLZZ}I_bnKjy}D9Di7KGzOda!0;X;4@L&p;g0rQ=gJd{qS$zVZDSKtPy1AL!ZtgrRwbR>_qRi889wl0v3{;o+ank)*DpGGMhy^{gRZW`5i1<>#SYd==%OL0CA7dv5-4GqW*6$)< zwFy20ofBkH>S;_RO@0wBn}KIVk+8QG6`-)QxwQ-=Q+;qBkfRWNb|N@+hr##ODKq~@ zyC4c_TqK9~$F+ydL1Fc8hvM5^fP7Q+t!4%JXV~~cZs(m^CajI$T=H-N z7q~r0S!@4^gplxMXQ!AlAR?`-sp#Q%vom+=+^@m5;Q=q`K=Qj%>*e#h0bao5(YG#2 z)O@HbezHAm4D!{n$TVf1ZVM@lDh~p@IXLWePZK#xJ=rLa3B0)^*l{dWCx`dc(zHv5 zlJ?kC1)TkjMHXQ^F21+{3GX;_=>!5QyGi>= zei3)I<=hP!1$#-er_tUO&Z&R?o+UM3v4PST73{_oxHT2Chzh?dt4|rGvIEqWRU5;P zb#$^_>V7V%oB7wZv2gQXzhB_7%G{F}?^f%(bH~!2e=bFT;P4ZAqjOn@DGg|6k|5h# z1w43ifsEZR?We6Z+#fCJ7Bd_L^BRA42#igd{ssH4P^I_4=Bg2Oetq*A&A#<6i%G|t zU-}S3yR_}y=LCg1tQCYV6dr3v#aIwr&E=O#6?5WviI=p4JKmDTRp|EpYf=AT_xJ06 zY9McVPzW?#I!O@XSBW_S8dG|_7bHB$k)-j9<4SG_zY1{Bk z*UkWDNv);t8<5%3Pcb#p!%um~qDK20yl|o=7;hsBq@e0P85yM)K?*w+Gp7~EQb~b- zbroH{k2WQbzPm+F)Dy0py1G(3kDu25S)s3TCuNO=kwX_Kra--(qda|PMcsDXe2r>R!VO}RKr5(loSUd3-zt5>cyj9~V% zewv7|)AZVZC>w*=sh6U*kf8{wgF>f=w3V$uvRF^n!^047Z$99vqP!6P%_^sby+lA$ z$W56+g<&+@Y_a5#DD)F6VQn&{>EPgoc{x4ZnX8F>pDFXVl)p@%Dd#R3I6}-*AK0iY z7zP3ifvxy^ILrEMH$>avixYg9{cKsJsgP?6cOGuqzmfDF9m#A+fit&=4!uxnR1bvLYk zF&hRct-l~-xJ7cE9frXu^_<>Dl=inNq;T_C{hZ(*KT8Y@+C-xRMU?nCSlE zaJSxH(f-=|ygo@s-24cT@MzmmXC0xza6SJcvP2r2umk3X^=RlChPLq{Vb&7mGIb~$ zw#X>%9H5Y?GD@E@G>pmRZndk9qD{Nq=l1XE_3anAN-4tG*~#gu8kt4-1IUx}`FMFK zq8)MNwEgMv{-GJvKv#qEAGwMFA4NNYq|Et&e?%K?4Ok* zC>!y`dOg}mZ#lWV|=*tM1xY_cppiInyoE;lAtKH4-5 zXu7WqDv{xK*c$(3zpn`NlNNN~da9NdG<44xrUOoXA6(GaayZ695%fXc_Ce1fdZ1`B zHxk%8q0)8$J=BDis4}x!L)Dz?aJNhXL;xmhmRVe{ITb_6(5hg4+z6E!`BlMy@W`yN z`#oS0Fx)o_C?UrTU@F;JTgbf9j_Ep(QSP)7pQez&3vxxkr<8wv6{A$(3%)x=FrRTA zbjRMFv|CHkQxt^pTzbLsl9&XUWY8J=b>XrtW+wpK50X}#M;aQO zFV}WFv;@U;XoS#as=L=33fwY)wE@u@rxQ1VNQLJvcU13*$e+(gJ&8m#sWNT($Zh|g z?`CR9aPh`!t^bxKpm0V|C-n&nt5FbBWN)&fqm`dx|J=*0a7dz?Wo((T5bo$|Bk=LZ zhSmiAy$d z>qZMpb=~91_1j5<2hjU{!qDfvj86!3cXd`V@FeQ(@BU*NOy)!Kpi4SIUZ$lr|rtpt9>txew7^R4f1seX3Cx&7o^kc3^5<{jQ2f->TP3TfJS`)2>R7@ z)lpKfYtMA2ffsfy{)o`A4&GgAEx3zo+Pc-E!O>f}%-1T6n>?)dF11wIRAJ8i2X^kn z&`qU~_+_nS97enWq|w2Jul)=o)|jit8T3uT$Ui6p)GuguwYC0)i?VX$xqMwiK^wX2 za3rCgS)E*zW^1cgXdV%84=ce06oIy+e*H^YLrz%fL znrf;Ppc?8NV%|aE-k8TbeNq{3goe=nI=t{ph=F;9&^kF@Og_GOvJ|#$C5FMe=>SU^ zQ_wX71d-EF3i~tv-uNfGgUo7=sF3_Zcg!vj&P4Yw7Blc!OM`Hems`|KEzAQ}-%TTk-4E1nGWiWH0jT z8${}qjmf8^gQ!^)jqFk~@8(lS)QQiE9Mn>tx}SW0Pn$(S^eUe*Hvid|!zfCepo*`& zX4)W#IrshTFz35lTqolR$LM;w*?O?&=6WGvVpM*rX)X`H?mC2(xJa+&~ew;d;6`x+RkgDSBd^%*yK@|ggV*ov;g>-9^) zRn#~u({>XK#CTLqIl)JQFW}5}(&pT$35_?H`RB&#_9d>mff?+#BUHamrOY4SXLK+p z#9hC$t}nv)jl1q%Jlzob68mxos-iU?lcB41^M*@jV&k}TRjXpQw_5G#$$v9z-upI; z@?`!63F3>fT6RK}vmst#5z;@A&1bE5q!zaXrIbMzzqMAxZm%Z=sb|c7<-G~bXqb?X z{@d@?F)+1Er6*7Fao?=(Xtm;<$1kQJmJTgP8Q_aCgG$;^nXDAu+goj2=`v({HFAtv z-feXPCcrASVZYh|m$3`N7am$u2?gk6Ek-Q$L9ah;K8djEIGpfmlynO2_Ui-pA9eVDmf9OK!3XOhFhn)yx-+hqT+#Z-18T5i4x(^xdCokl%eeNWg$=>L{S=C zi$CwDU1YAUL67){1Pq3(VuECEhFqjZCa;_$gti#pJpMvX_0PcKo57r=1?_eKV@7$Y zxl@oRis=^bDn9lsTv7XlN4kMBRr%#yyo^JXhnz*Eg^Axspm zktE%QV3DKRxmi+kRFJ<6c9@{}20iDz#Qfmc#|yEM2a%7IxiusXIAfB##I3=zV(p7qo zL1$a%v)?xpQ(jUpGQubgn6rzak!{!7pbuk+Se;C$@8Na?F5ggpuyx|}MZ|!NO-68~ zpq~38hZR6*DS6=}$o$*(a?u!nQVBn9DVtO8rk|8_K$tV3RC%(+SXwz%Hs}FuWn2Or zeQLpG5O;dxpE}WFHV|-I@7+8Qy3^2zk|DUo$y83X8G_`IC7a04(;WE{VxuM!MV<%8 ztC8{f5|0cMOyIK83v7dUSqjpE11^L69)f?AD13tvjIE*7lTuoFf*CFt zAO!c8yB5pWaH{-ksxLS;9ByxiIdtU`W&YANsW3>gsUqCT&!GuDoiani<#6E`a;IC? zZvyWTm{TH)vX*)t=jvw_eARzoMD>9;sRv%-fqVm}x3g4MFYPgg$D!Ld{uE}=n0fT!AN??)h#BtK|!VUUv`hHT#egl=ERu=`S0W_8TFt!CJT%nM0&v=VZj?6ouzH<5X_ zX?SnbtxccrpLwP3cuwD96a z18#k3i2{peKllcp%i!cG;eLJ_hZQFwH}N-%_wOXb&&4YEM7g*ek=_|0Bki%{1xeU7 z6aLCkL-OV2eh)xn_J=?B6DfV41(Tj;aP=Dj!^s7>aCZ-(L_4FYTS)GESLdUJO~Ow(Q! z2=Z)0J&~>HxMF!kZ1RJP3$3Pqpmi^!8eY=E0$lcOt3Z|Mkw_yhSU;o+CG;cn2BnGU zkLx2I=dD$;q8*NZEZdTSElK&5=tDc4g+lSs=KZxNb3kQ>MuUyYO;NKeda&=LQFsQw zPKZ z#Lt!bgJaFAXG1d+6}YfK0>Wtfu{8kwvFyUNBqX2h*o#oB<=6txD04>g(#rj-vZ*J& zu_&vfech7BXRuQ9$hpTS^1D>?l@%6%#ax zggPD#jmkK58~)}Ii=aDep7>Fj5fvhz!(R>Z1lo-ke-)2bnXyDLjkQ_APjLOTs|{y< z*j+W|Gib(#xK^*{yEvIk2B=#}&PCuJi6~lEyySZE-Jxtc1S}8JNkV`voma-O@Y-`6 zne{&YHHgKyw(q4x2Anz?)^uvJ_|tNRRh54aL|M{OJUccaj{}|2yIt!=z$%O^OG46A z$Dg*d*dHmmt-N||+YUM*cyb^vC_Ze+?d^7|BiwArMZ47DvPsfmqoD1(E&dg1vUH7w z`faES_wNWqt?yldBa;1U?6a0QgDYR5!H$6CKK8FfL!YK=3mvJrpr7 zp6n*uAsU9bEWNc^<|3a%nVZ2#ag;S4nl+r9nLkLBrFWCj)_Re+&_V_|jKR1#O2G-G z(`_Z$FB)n<7WV96TauJb?ys!ySg5i>oAOpvS$;fE~R1{Tw$|kKpDh17zFy0{-fIYoavD!0f&-;B`~4f33cO_ z6d~wcT-pWKm9s0Zxk2>=RgEidDm4E)pj-+_D%r4|P&hqS1*MRUXw=}ru#4&ncKJ&~ z9iChKT`ySk8(`ASn2Gn&#g=4{%a!}nY8)U9Yz@7SSYg_;{663Z3(*b!jh*dA)2w6? z%%7cj4#IDJVqmQQw8Ps;e=4Brz{6gj869LtpVEf*Ir8{t-O;Hf(@I!0iD89j;&`++ z2<>-L!mrF^Y8Vyaq6~~b9rK~#w$y#+uCs*gf&29Vur=>lYk{}|z#f?1@fU|O`R}hA zV%(CoC7*W7rI{efe=#m-cjr4oCd%D!__-5XBxHJx*b~` z+qUg=Y}>Y-ys>TDwr$&XI<`B>$+y0BYVX=rcRe+0{(}1%bBt@W+*;z2bVKFGmU(nj zcKqXe2~Q*oQ}k_lGnGYqpgq=ga``ffP$56&?8X$4?&53^;_Jck)XqTx_8D6zkZUQ#ouDh{N2 z;pKHN(40)sxPn+{T?p)yiXoG_kukf7u58SRdtHrFRonSOB* z;Q!NNfW!q%l`1z64hh)R%kR00p#^=3#5F6))+S3Y-z4EqgxI{YZ(ho%7O^3(b`E&&W6 zKM?Hd`*v$)OAc7l2T{E{o>nPKyd$QQBrybMcCx>n@3-H^zhxn-;N`|d)`RUyqB5pZ z$nAFa$4RxnEdr33J@5OYHD%if!lY;!wEI{qc#`cH zQEj1)o%*n}y#QlA0ob;;u}<8Nl{fpUKA`yxICr^*zbc*3Da$8;F2-PgW719l*)fj9 zOI(tx#=H$85RC9uq_u!>Bt*%SfI19*QvCKn71Pd;u#va!2ZmCuKD`*D0VNiMU#Nng zr}3JT4xN`iWT}K4_fHFa(yT_ytGQX+0%#U(j@_pTsRI&6-UBpHe{%!VEsWs=5!eh7 zVtGi{^k+UFMPNzdst+WI2ZXg$DUC6(4WRUBad<(T7&8{;Vg34pQ%xAVLe+z5gNon} z>ilck%QXLHh-S>7F|II-XM%=B6lLXlI^dZdhHZ%EwU7yB-U1De<4>FJR$W9yo?33G zN*JFi;Rc{uh=8gBjQq{S1YK7Kad-oq8u~SW!@ZsL@AS^Fo-apwmji-rLuFT3xqeMY z2`Y%{17yD@asLwqA;eIhy9PPOrn{pe_SdKH2m$z%mu3&>wSp5q{2haa%=Q(VH@K!G zDdz${-%ZdT?D>QbGkDy79GQzLMp$cYR(D~j>jOZvtLqYMrUtP!TK77TW_v6z16XAo znAjN$x16%l0Xjt2uZ1m~e3W}xp#4jK22f& zA28|Oi6nH?c*^<;V9G89{p>yJ@C!>8bHN&Pqy7ucrzvF7h(&vqmFEP{&+*TD1p^1f z;2Y83vufA?3emwF^a9vQUjsm2 z6~jNe-E5d5zWb~>faf{gtqMVT1fS1s^lm#V3ni%=DEdIMNR5ht5L zgqjl#3KB*-CdDz7a03Y2vy5wJEP(jE?w38&8fr{nG&xKzGmaH5)_I{ z7K7=JyY{|uyw4CjGDX#$;oNI}|4QbnG{f#evGwSz=g8OEP}g2hr2OEPAy}7?EqTDO zTf?v}2`q0%{jt3Nt&?tnW7h(D1lE3Km&}vItyR}V)IGXYx>?{+6F=65!_}n0KR~qw zDpu|`2TAFRufJlzqWFm8C@*?+1^-4ZPlWXoxW7f@=t6uP7R>t#;(xGDc*_>}XC4Ij z4?m=`4`JLE93O1qV;s;Z!Q4t#ME8zsULK2xi4TRiWN@M-YVA-9 zbK8(C0@AYPxSS0MMe0*RRG2du9p?i3MHsPxOI!I21CK}40fAPTLvsxsp3zn%p0*BL z${Lwd5VwRYf5jolOqvDY5^g#5Ft_-?-zmL#{DYzz&3y)+CihgGy%;bj_YYNZ^d{6#0wswnnSkG^`WwKooUFkzf6!z0% zQUn(su?7)j%#62HJ~u-jb8ZA0W)?v!zCubVy6&D=&l!>lWh5v5>f+QRoNj#_oXD>jRl_74<;(lZDGWTNH z#qrp;b?|FMOpP6~%}87KWI1&B`z_!+b{;(|GI!Og@TYpw3iEshUoc;FtWxnwRfZCE@qF#U4-l znsX1PqqLG0z_10v-De9pYCs?whu6yG*68ijGg10yA3Xu5%2++7OS-lEM(C%YoCid+d)oBR>DGMo z#_BjG&3@viS-oUI^@d62j&*Za&w9x)cH+VLmg`wHT4b_K<(GbYy~q4=zRFV5D7*Qm zIlw&><;0wyMdC+^GE03nZBTzjD9+nTrD+9NgIcl;Yg2zKv!2cvZr@Hro(wo4dez)p zr_emFNqRRkOqxYzN(n@cT$p{OhTVN!d#R!vxtcylx_wOquxZp(OwL_qJnY72y>n@)r2pR3RuS-B`Wu~xBE|!@PqjKxP{kfHW z9JH4PqIMmN*ixSDW)r=g@*Kv8X5YqZjCdZ*HKs2=;}qiLH%d$nm>Ml}F&fRu=p(kI zTg>i*I&p(*kfB>FvY%@>`LF>!9}5{PrxMK4u&eM{b4?nTI6=faX`Liegp|gHOGvT{ z2`H+UJrT+leG4|DNl%>_D5NLs08H7n*4=FO{G07~Q=s)8*v8LM3$%h#jWGU14d*MM zqxnQBQL&a8&DLkHn**FtP~IS@%a}Aov`uS5;1`Um@~$DhyEL}*g+(u0VyT<){U2dgTIf*5k7C$?UvEdNnx7l`H1e&HU?&tbZ7{y~ zTG7ZNW?6l~yv-y%Z32RiP$)x6dABGO|1g2U*3l>~eW9(L9r)G``C#o`u>-eeBr@p9 z0^;Ndhsr(|N)ZnPAQ=S`a<>UZo(@jFy$Ra5k(u}S`PRN~aP+ZckqC$JfW%<4Wk}g= zbJ25mXck@A9*TM4kpi|1aQiFTJHA2kRrsd<_t%Q?e<&F!sjEhibg9QakO%;;HL-?f z<@(wJX9IK@9(LU<2ZK>-&pEPkkvv1}q7llvl$bp7ZqU+TQCk1@yH{&$W-rmk*bl zY3>o;z^I~y&K&m$&k6G(mWP_rozkyf5UTh7zpWI|XoYXB{c%*=-|qNZGqwzet-d^3 zA+?R2YW+O7g#;f1h% zK%H2_e}19vZPB~sa_iYcK5lrU(&l$ootFj<0|+Wev}e0xy8)gYYOut>@A@L7QaN!$ zTK)Vjwz{Omlq=(E!~68BOxPOT9?95|2NCt4-o;eRD?|9PN;2ni2!P+^25nlqKI;&1doRDHkh=xFu1okJnr1_ zZwnegu1jIhpEm5)KLIdhj*F6zDGX1TmuwtxKSLd%u}MUVN^;1ITuHM+Gm(5>9}Nu} z`U(X?`dnSdo#UOVQ5EdcEgqV(dwnCX^FRu6csAi2|LmaCpmIl+MOt<&wD=pU09H>0 z7ez+e%+3;rik0-3qn^F$2gB;`1OX8Q12K`8tol9X?>)5yOaqX+ilfIYyR^-Wy&J5LCjMQJ=9n41l5W#H&nE4t z!4YXD`1tpF{q*ybDP#Dp&72Lc5E&^<5$sz{26E^EkpiEkp3}f__?(l_n6)U~(_sKU zo539eaZB&xfgC`;brW=#jjsj@z^15&;7g>dmAZ8;(dgGFHtX<@MWO9rp0!-$^^Of^ z+hS^|O0>ovAc;HS84b^Y8^>W2#*LdY;C>WuxaqfS=O4KVrS&mOK;;aBZ7d*MK=6(u3*9w}r}3 zLy0ORg(1*~Vj1EvkVIT!+Yg~S-UOUdI+K|CoPb)^zsgyxg$hZ2-crgK+e!G5Fadvi zOU9{iv$C0vaXv(o5lMpDzYA1aQz@@MQ~KXj<`govZjKyO8);=7@gTRZYA0!SccZa> z9e{?(g!2g1RfccSICFT0#s+`5Z(+I*%`UZ0s)&{3e4!(Ij&S@#*O4+fp+bqgoD8F0 zNQ6q3D$%zJ+{zBMp^sj=K_QS3(P)-P&AG4axxAF zf-1X(Alu(%l3uCkWcW;1<3zF+t6QUTy~Wed*T_yBjsjv5hbf|I%bq|pR+A0WDroVg z^ur-ZXMap?(bzg)qMFXg-`FwiV8f(JuOo`SaZ-KxjERh2CeT_G6fe_WOf>qx_tgs1+%dNuM&@TCDWYT^74md4aZ?Unc13J zl(itq?FP8?3>Q4KM6<0`1$RhOh7DUslln#_171H1AHoP?vAd|p)n+wX(>=2V3Hl*{ zn#-cgHkUL=s49~rAICAsI1JfS7r=Rd7`?nny(p1C9-EU4MJ|rzsOu5ZhTa_7(k9GN zom~of8fN~UP?m+9TnzVBFZFiWn5dQN)r2=p{mr&Be?CLG_V^3Pra_a=+L}xp#>bDs zrKJ11ee9fG7c!>I`Mn?Jg5Ld?d(aVMs(!Zg8DrkLQtJV}+t(+721DC971oC!dmBd#!`Pqxe;NDY z62pXkiG4DDXpq(rKMc`8BRi$S>uLu+kh9(!;hCssI$66H&yU}0d`_-nN6g;HPC?*M|dGlI8`rw7LHNyhI?uQx!Q2_GIa-GbIkj-nW+{7+5X z|0Rt7Q4Ua4$vTpkbVO1SM!Gw#K&8rISVEIDf&f7Az3!izQ;N?_7d7JqExoZpD=s*L zK*S%6X+jlDr?WyW+^+fMSjN?Sp&-^`u8KbA9gT>~M>#%VJHk^b(?u2KSz`=7OQ-cVhmVCcv_ZFujuuO_NMB zw|N${M?^d&&2dt^a#n=#i5#+RBtmW6;14z@2i{TG=x*uOTk5=fW43Bn=&7mbm3D(t zQs_|Y#~SLNPj-ONNP-lfPp5c@Ar^Cb9`}F%^7VW>m-m2Xmug|BG z)Y}DuJ_X_>*wg9yC$+fOcPwk3WWasX-uUt|xVPR6UurzCdFv*FXfMLBlg&r>(G?+$gJ?snhKo@a8|TGid^9zCB2 zrjKBYGdL7&ClPUjhq$qnhD4EI2tq-z^PtU~HUu7oN`4z%Yv6yUk+HeH4S-(tFI%Ul z(6RJhmO@-m*=y1WO}0aIq-_y6_qb8T=;ouu!+u#5+6r`@HO|80g^xWN0rB^JzbRKm znLVre>3RYwbK3ZY99JrcCZ%MGTUnFnmdayzfd7ltnS$kJKE^aelYBrZ0SujZ7^!Bo z1ARhgM!u`~w0QI|bYm4#8lXy9$QbIjn4&ssOEF~=jC&^_6qyGc^F)_NtR4lJ*)S7F zKr%uViBEv>1@pZ1$mpl&y%I`Y=*N_}&$zY-RbOQ2q8X#17fpT-p~>6cBP`I2^$h3e^cMgmhf+ zhiqayO!2f|G|N(Q9-zfaTH(7%R4=?$P6;@az1J*!;>h^zz`n+uK;=i-E3IOkAdu{Hoh4Zb3wY;YG#;KFHk@v}W#8SpX zfs24p0cYhf!(EDt4~^n6o{JL{28Y9B`Tq~f2OU;zODxi)q%A*i#K9*fP-C2q?yW4^bF}+~3;ovLmQhI^`fmB(GZ%xAH zi3_w>3{9k`i?Two2a83R@Pb;Oj~n?>=Sb_p)EyGWzYY#m8@CxMb2w_kESuhNsF}E0 z(5cK3xz2y+8izGxow$hNYAA-o%Ld_STw-PezepHeb|$5l5VWi!C(sbMN|etBZ*k=L zX@0Xlpvj4auWk(9E`g)~>g(jPw^wgbMA+9koFH-z+v-`rFexC1T^ba;a;t;8E2KDG zXQLK?~$QU1D-atx0HXx?q zKcw(UxErMmFI?rD2(D1JN4>20^?%Q-i+b#+hqc3O1&R9rQ-8<;9ybWdYgyTra+q<1 zoHj0tm*F|Y?sX%rjSs+JrA41-j`f5FXQI ztV~!Gm+3rCAvEegS4O^a_F2e0xE}4Np}2dT#+|t=8w#A6bD5TDnlyh~s5RS$$alx3 zX6iMIgL!#~wP6~~;w7P3vwLia{*YUZieNXeZKkhKdcjoGj=UWu>T}!uVMtv9r8mS! zU@VZr8l@wD!OKjRumEUr440^O!OS?cFuR%T1URV8AS_N3me&3;l4%Gov_E#mTZV0o zXPf3gZxv)ZKfT5NJM#Oo4`kbzlKT#4-NBS)&;hR?+sJ(;!0b7zk;1GkCcSEL#bs&a z_;kH?N|iawpc10bLTnD+sP{n2Uq!#e^}P?veeU|$byBmc&kexG!A6^>bxv4TnbNpV zxi<1Sy%<2gSvl#;$Kz@^<~wiNpO{C_Tj*=)fCH1Wa2foH`BaD^wQ*jm{8wtG4BtzF zto1RFDgFcVX>eLB5F}PWFL*X38=Xg*E$uLLe?BmGpfxbd(k{S0ywaL{`sIR@0=H-R zAOucRtaP}JFqhxJ92yY)>}3MGOFK3l-0&R%tYzK2*gHpZ)Mr=<@|(Ej!Ff%k#DQ-7 zd!LKXdg39zZQH24)6Lg+>Z$i1ooH(P3?wQrBgcP?q(2+xkE7Iq34${9+6A)g2Zx{P z3V8tzjch&9{ejQIUY+&7(#a31&7TJdIaSRJlqT^89}K|pyXQmgmSR~H63gy#1;^Bl zS1Y|jVwtRFLzoF-qX0)`JfTp`l&9Ah8sJzdiaFG94yu%~KfHBvn?e9w!1}`#eF!Qaj=g^Y^Sobs=@g%-fE0eA zB09i|*}^6rV~3M9sVOxoRWHFq++3Y0I72a!v^?2z_#a*&%`A;FrhI`-V~2Wl#|X^s z_!|EXH`?gU2Z5KJH}td5`FAGyPRs`iZ2#pd2c`w?EIYxl}HG#jiPymy8@rqrtJH9~6lBZ(4Mmm0qB35|w(OcoAeX$e^6h+1t{MvFuG{}-JOLZl<59;*U9JyA|fnmVW zcyi_Oo|hv`5!36rp?~LyZkZUYENQ-ehv7&IXc}Qu`1M;|JxWP({;fqe-a+I*`pD1g z@&WZ{$_90!3RxWgobsgkT{A*cYXte13u8|%-pSITwLkGkE8l4Hlqz{Mj~@+#GDSAf zWDe#U_{j;TpN)PT9*bF28gdhckhYUzVcI@IK=nQv`%G zzKBW%9jd^yq}iyk>?=HZ$HB0eid;3*;DEWf!XXuwUZpaa_R>qmOL51alx4Sa!>ORf zVwYu3L86K>2`E(dSk^g-?H54O;->TjI>Xn^JX9VyehRN%cnwd1r19kTohL5(q{TQMhkoqKreOx9lBZ%X@>f+(|Wi<5&kJg*C_^of$=(~$yh7p&L>S8~!c z(M3GQT-w}EJC1b?+Mlg>xbC;9c@&cq6CVY^24}{Sy&%Q7#k=9**CM)YrBv-{c`rNJuIa^uOvrqjb)XRuE1fUiNF8w)>#B<21)tNAue z{soQc)3as@&}kU~-fb_KCIw}Dy8@(5ywe9hv@VhJdwL#BQxwvmN4`Z9tM$_FM8(el z*wU2yotxN-$?GzM*C&8Nic7dd)7cu2d=2|EYQ(nu-w^pF1Nmx=Zlsvw{9Cam4LN4T z5LfGT%W=-2v2*;j86IwB{}PL=fFn*$4-J9VApM&?Dy%6dRy9162{33?b9HDB#*kwK z23j^@x;hkn5v`}+mlH+^a~58O{1<4KpOw_B zpha-&Q~W0miRBR2vEb4egE%FfSg4k{vYrTSai=HJJ<{i^wv)#$=t^EVu3%Bf(My6z;T>d$a!)JLnO`#lVN>O+qL2@xHz&=w>o;T5?#6z z(xU&oUUgnvSm{Ni6yW4+2}G=|-~d2gnJXFsSU;cmBs8<|9oi_4+>Tz;+<6vDB#6X4 z1*Glwz}CH5AJ5zxLr0gHG=f&r`|8RI#wlHxdy-9!2iyU}Atn1DYU9%ix|%N1uGQ?| zy6f1{0!pC*c=G-Jh!Gg)S*3^`#%*pe+DS&ZPN99vk8BUX54t*ck9^%0gl@Wzy4ep$ zwq0Y_>gt^_oV{E(HtgALu{kStZtJIoJ$ZCnU6+z64Te|B=h@HC9S8@1uQ(jK9`sw| zpW%3bw8Q`#?Dhgz6?8jW>n_|C-_rXAx$9 zUoJnZlCr{>9T(P^y@FH4hBc_b=+n0i)X&%HW&|p;{Eo@PwpW_zz{@;dK-p1B?UuQE zLZwnH%e=1JFn__}8o)hV5_ChszxdDyLkRtZ*N zbVs~HKzpO6JZBqAgP)0 zD5&YSclfIrWBr6FhDz_97B{uY6t|gMeKZc>^0NS5o!8ij5qQtIR1WaatZq||hAk!I zel_YX2xBq|W&I0jO5p)DXjqJEkwPkKMFHBBk#DVWL(e@YbJemNjT?;lz}4@j^6#qv zy^jSUEQtftM(d>!$q>S`faV@ATd414#dUMz!pVj0EDJmA3Q?oVNshqX9wEcpt*HZ? zvaz`YNTE!$)+Y<6u)|K2G|9KG!RP~41jydfugfD7O_P5c{Y|;w^pWDy~PGf&A zjoUqL<_mA$eR(}W(h{w(a3rk8%lwHSpjwEwRI#&TgP^wqZ#5HnI=MFmV6(dPduVsuZU2q@X$&%w#z_6zv0S);4}dUmG~=eN!*)0%ey=|Am%M2X05*=qx;={I_)QiY@ozQt zwf=??{ z-a)S$af@tqOH!T9&JvP@)7x8ny51yer5|BZniEo^z#@-lN0O5zTk(~o_|D-Vu5nEK zfW4V5fz)`Pvi87jnpi`)Cf$}M+`2mH&K9BFZ8F&(Ae=4+#|cruM!*F28w)WV1U36! zGB2Z~i&UN(gf`ITMyVc)qY*>X*1ueK*i(PJ5Tm%S_%VK|&&3ikUp*5`gknVtcN}j> zmpI%MDo*S-kp!McerD1FES!p@3^B+L?6UAKqRYoJPEjDbFwK#oNEjkno&=7iOCbW* z)ZBU=P%fw`Y{7$SmH$`~Qo>u-3@s6-xZn@oud**)t07#>q^Ye{mXMIYjAxl19WV3;l{j74hDFmKZH12&GPjwBwM@dCq>u@t$N|FM z1Wv}iB9B0$8s!Icmu#u8zwuB6kjrO=JE7PF6vIQ$6<>(7I{kH-BYm{GDP)GC3sEpp zmNwle=OW4@!<#0*2qQ_hqlwP4sEFT#s>`huDQ{W|cas+o#frMuE?wuHb=kO~5mpLd zCOE6Z(Xb-CPlCuT&>6PJY)dkp0MVW(oD5fBhKBoMqZ2<*f@mvZIY-(X*aDfX66K8s z{9BRYS*7eVL7rb28-F!wD}kLI$o%7eLfLm*q2${&$Sd;%f{u4pSa@45k7q-_KJt;& z`%7)&KOg6`Sm+&~A8oF?d)*s5XS1w9|AEB%>tAZ`fHj6HDH>>SCxYE>PutshW&Fe4 z^)=zvPRO(oUm#9nBImR+$g^}`T z*?%vbqE0ZT88eKUpbi22SsYo8jUMm&rJ;B4u|NDthsHNgw{K4`{;d>U>z+;T-nSDE zJo>5pTK(%SQlgzyJnoJ_CS3!P<%#;`0PWZjeQzu_z#8u+80-=K4&ZhCEB`Tbd;5k+ z>3v~jQe%z4b0ld0(z|GM>B8(y+L&mcJ~tMw^fx#7zyNq+#2R43;{3=}l&`?SlVsLA zsc?ARWhp(InAH^)%q_;$zO%<+D2KGGv=9YV;h5Q(?lLny>f^-ShR!fEc*Zc3wJBX^ z5KDV6gI$y_QW?&CP1|zg-w%nBSYVy5LdH#xk({>>3PH41}QSLc?~6qk#9~k zU&Y3%J{|>ANyJPEl%di>n0A71t4x5(rV{KhJ!aT&An6T-OJi2NbSVt1k!Vk!6}#<# z^s)*v)X~Qwh{LsN5uGa_)MHTS7L=@p>bs}4s=Ls5l+#XYv7uwanNY( zOej|D{`Ov8&JP>T7@|qPnD~_A6z3QXho#oE1^)^=h)OB0n( z%uKN=BNjkvJCPATHL-~Eg=pmYEE^7uaohD}HEu*kN%Ke3aAEF_aM# zFS3F#ChsstM^Q&8D}9=12FjU^2;Lxqb;Vs6M-(vIjGE2ds4>LpKl5j3++u3p%mES^ zPj~*O_xDd0@?UKsob$Z?Yn;rA)eG*?br$6DPRlA{V_r6ug6vvZ>oUP|BlNyheWT1( zO*A%@LQ~yX8HxH17U=wmhz0w|<~EjKLm6txKvHF`Hb~gAOg?tg*Fld92v!owINIQdSKk3vb&?(c+ev%tM#f`80&Szd1J;d>m z8vLd1Tmq5Y)kAn`MCp>!veL8?4Entk^bvR}${0N*VycB891*}F>HuSyF~SICl;SvR z74d|YC&)EZCv?Rq_?Jp&wQ(#Aj`J67m*pywaV%u%+uY!{RCXFe)# z7TJUMC%4-*S2jkvCaa>LKFd<{d@_+%)EQ|Bm=Y3J6gv0E+cYV~)=$;4!KQ&2!+NK{ z1Q{I6S(DCRs%wCs9Pf<@Xvx^~t;XwE7w#t}Uuq|oV22qqyvHkx%M5oDgPEQ~eV0NUs*?yzC8LErv zg}7MvC&4*M=kK}^Wasm$;8?d6DDRn0D5mj6MdO`Vnlpeanc8Zi*-7J=6LhZBSRt+B zW~bOj8%uo-4>Nx1DJWlRT&cdMxDCBrvldRr|G9*Sg(>e!EnVY{x#%>@57eMCyvu<< z2`uQq!j-K5>(51#*P6qXR&B*4ADXACA%i=jC^YHM#X0;m#uC0!nYa&MT~sAns#pbh z_^c8v6|C&R!j`FT0dc5UGjwL^Tz5F~~Uf&LKCxb`vk#yRMxOeKy3|E>J6l*$I?l zY>iGa&n_g~yi(4e9-;d2bf^RR2lEv&9FTe*dR4nS zPaH#{WT#QDlUv1r!g=KVv;XZva=XF1eqnt&aC*LFIE?<}Pn_w@;E!<>Bymkx3^O=W zTW3P=dXcF{cAjo7np@j)0GZO|3x_W+JJEn(%w7io`xlctQfkk`NlxeU0YApT-5@I3 z>+G^I)yOrh~@N+xBpe4sR+ZVzU62aXROQXD+@kU~BI4pd=Q=J4M^vCA!? zH*5%E)20VKWvl(4n7PXDoYR?)d4A%oDELybatq5OP2!oRLQoV1)E~&UwT7tL3u~ zs~f#A2c^IooZ!`WrUMOF1MlJ9w*Qdb-H-tSIDU_lK|oQt;P-~q0HVJWn>6Ulqf?vjZ@&Ys zN4!wrN{CgE@r3L!+a7eTs=L7*!J__wN&z5-q~~8n@nasiRB|fhNrn(A?XdORrOCoEyX4J4SDrEDrSjtUf$v6{zdgx4~f#o>%38Abqyde{|% zZ-~7RO1*T#NFp!+Skw{5@PC+SH>$WrApbQLT%GJ zQ#bN8#_Y~F|BIoyrHTv;#d&_gekgXlF2bvA?#&%#|0H%^gdAez_sR;q>^R3 zHtSaoM3qc0%}No6iD>cQ3dsvT?Z9eE76qxWH%PNL)(8**f024z3}4v$7tIK8fs~`i zDzCv>EWnbb9#oUwwl z$boSUpcJ8FRr$1j^r#E2db3E{#W}hN$wvMx2ltOR|7UAKmt28E7r&9%rFA&40er@o z-=AKo!h`qw9-a8O=I8GIE4{5o!h!Nxf@`ZlNw|d-qVy%Jy2>W>j$kcR3q!Fbq2zm}@>D+hwOZFof%TPI9G@hJ(lz>m~0AW69?mCzUOtEfonRh0C& zbNh_bB&s%AyQL|w>ktnx44Z80sJ~B$Ohi-sWwo_5{1iIErD6eGf;0L_7wviz{%s9M zYK&8s>5FIn@jY=l@|&-j?aaU>Y&}X+BX!S7a>dD7=)|aPY%I|(5~&q; zR{)PUC&nY|nnO#e&s0z`Cq^V|HmY1_q~^kgZ1u=mn6W&jcoR%wII!!HF~*%NxBe3j z&5GsEayq@3@?13x?%@!uxz(E*nXt=6c}tl{m%(h+F>MdXpq?~m2{dJyFtyOmX2xTWtI%@!&WUavo{z8>1gby^Z?RHWfq2M1c0&C4Oq6mPR0wO5zGId7+2b|#Q?VUNB}29oJ(z}z+vSZ%#LvS)!cSc+6+|DS^D>-gd-yCtMFn@&8Gy*x52x(-DJcEXRJr8S?u(OB5v>CXol2) zka3~wr9O*foQ=jU5MNBk$tvU)yHy5Tb88kfF0ugXC$URtf|$M4;BW;R4{@dDTA>US2g28<1cEn)04niv@4}IRMM2 z@@QnBHUmM3n-p#>^pa+pq;|EJAZ4MO!1O4fDgRD*?#tiW-7&GALl)YJ|{e?p;{$%V%w%n{Yzd_jg8V$ zAE!Gd?|w7j)Ys1+gX~+zC@_d}jGjFVpELbOd_%4cra9V%#%fGRAkSEw9a@zq$a#9W z%T<8hJ-JIB)8 zZ25LOOP2C7#dfvuE~5J+siR7$&R5of9Ihhu%5URbHDFx@_`3+i#AAD!=a{Fhoca2L5!pOJh`BWI9qihM$kNhpj3GcbV7WsIo1_-p|SBJXA;VFT@G6K!WJB#E2c{GB1t4)G0 z9VxlLmQ-(~xo-c)54IWXUuWZ~vx&5Ap)G^ZOVKh0Ocf0k+k7Cz>bl$mm*aQ<$w&b= zZlLJeJNh6i?Y#2k=FDmg@>%7Em!-{gGges{)P)rV7pnwUS^& zmJiy?o)NUChhC1_U3ipYx_!~8+taBi31wUXRruD#kTNYLTwEt!nIa$e`!irIzA0&Upi+JDGCu^wcuRS-8l+K->Og zN1^5|$xRScdfT!}ZP3bC%6A_f6YGQ``1DF6BelP1cw;5p8^q<*EcFN1y7sLljw#U~ zmodTyJle5LJx`9=vU(i&pUM0fndtP*xW`)n!_Jp2XJb9#fabFc;y*#+?c1|9_9hgl zjZ&|T6Sw5`Wb2_&Ew!Ww^I222(-to%6YM;7DH0jeK`BIVC@HDlSqO&;D5%NUO?I8t z*S9fbZAf49L#lL%!L~^V{U$}NmO9t;a;F|blK1#_4Ijwknd*CO{~uBB9NbCNt!+mW z+qONiC$??dcJhmD+fF97ZQI7gw!S>iIp_VVR#)%ZRsBbISJ&>f@3pR*M5=o41aq@L zDap|9?51}V@F8wj^G+DowPLVkZ+@<;H!Q7~Q0 zj=mM88jOrU)?ZSEqAJ}wNoX*xIEKJ$C&2?~ewX{Kp;wMcdaIF;AXjDUXpz#%X7d8$ zFa`4z8@{AF=d)dQ;c@eaiS`@Ot@x6Pnz6YFh^R(>VMr^svr@30q5bfi>!SBra2 zPMW-HMXrpeEJfZ{75&D@8i+0}u3+82{c4gTAF>4Nn%?W`q3-`I&oWD^qrm)6ugMg! z+L-$knFJddX|p=Pa@*Q)**Tfi(_kjI*g;0ZWvl`YL>RVUdh1K+n9Q;&br*m zmpA=SB{Ea3*|n!K)5F2>cm7-E3h%yLGs!$&E#JOmm`?NCpQYWK9#x@npZ0|j%f6ax zR7N7`EBF?3$%XeitC>5#&2K!CP01GCb zr#aPe{{?eeidKs3Uy{3%9%-z#iyC>rDjAoSyQ+85>AW}dn0^I)3VyIHG3a4J(+Ay5 zM{&h)7^FmM8B3C*e~hGGluiASp=CO)g=IT?)r39L0N9d8mfNkN^W=$~!Sfc4aa4;e9mGy$i=pgu@(r+d z^FnB7%u>*3(QqhBnoxI!NzLw2N3yRg$D857=a$s8%#kk`*Nys6R@$x@c@En)pVU z5X(;#R`~ib3OlzbZXKBkgY65CS4NANT9I&|l_59{p$pko{fG6R1!DQ12g{@HT&<#j ze_JP+9n4uLoftOhYrRr80C;rU%A@)HUBkVm51eq)P)hl|FpF3i(mzO`HWB@Na-ye=mT^#|wd~jTMwzszaY+mSkf7}{qe_w8G zF|c=BU;Q9&-@jA@A0%qr0BfHv&!05d80;McwmW=5YKyFF=c4p;08v=TXq#S(crCFu zyMaUsgJYI7(L~eAy=#)z=m9%&6`j zBI_q_vFvF&M`@x1s96nA)2ylYQA?$PF_3U?>(Aro*OMwpoEtfJiwje?*OiP>9d``w z4fS6eLCd?$>FEKy@1u8Ny3XYC!E~gy^zed-@dn?1OwF|X+_D2iiyH#Lus&9FCJ^6G zKjin*(*V=io`U(Ie#8Qk=)+-JiOdfJ#w_ONGSID1%7IG&5GLV%4x0#l% zT*8<*E?y#TS^ayF(yFpqVawXGNcSvo6}Sn}hTuqW$T#W}_fGgf6CDVy1Q&d(KDF=q z&wW>cTM+-5So1M{j^7G(hr7idvO=v<=oEEO9#TLPQ^8gF8Tg<+D{P6m5G?s9KP!~R z0(PiwBZZQh!?1vqOe67H2Fryb6QZed(DOJ5z{_fc1}5tSsbk2W!#qAAGoZ+rzVMM? z4)N)RtJDeO)8;uRy|LSSkYyz1Lh1_3=}afpv=|#KONjkkg2+~+&+4Swx-A`})pM_J zlW^;1IU-K#+coA|ZKw55kjEW(DjnGj03%I-#eP$3m9Cbd)h>ZyBw>tcL3nb1=h$3E zZnV|8VKP*>PimczF00(pFRce+tV;dSwnnlemQ2PST`t}2=-fM7rhD(xx{f{;QK6)8 zPD=BiHFsiif5qNAf#*ctkYGa@ZNHY|hO;lu1dP0Lg3gG%^m$v}m)-|b^1BFq0%+Z{ za+zJPc>#mPZ@&ebITQXRzGq`w@sP7W{oNKh>PM|KFTkf0ZWugOFjvh3m)v zUK@~GfNe4(D|kKTdX{dUmB~D-9h9kBDDL1YDYo-?ZZ&eN96tYSk3Blxj+fP6cL?fP zn}x9zhc8k04<8^Kuik0{5z4B{mnX)rc5peo96({#kI4-Iw=^QO04byupdYw7tC4Lq z1WB_>(4s7NP{KpZ4wYcz7pN0#j(~+5-bna#qs^AK^t=DE&fig)+qUm`7@ps0M6~Uw za$$gKWO?a!H9ex)8+FE{xoA_f%G0mpS^eDOg6AwG`vP#Q@4(|4lh{mbrXt&bzYYVz zrE0l?0bf>k;P(sO43?ts7%~gy+!VNB{211jo;VZAOl69Ev8sX!n;UNsCrIe8x64|U zeUT_Po-+sQP|mukeO2hisCO`lcPa{-PM03 z-o5btbbkSveRV^5__c|n_%k|q)AbjIRpFQNtwt7APe8gPD<}x@X9o-&m{N13XA|`3 z&dV4!A!6u3M=9AUmA4iW@WId}Vcvogw#XVUjg1jAC1T#>fA<-A_r)EDzh&xQ_8Xzc zUI7c##yQ&n9nD}99Xg2fvyrR+4YBt#F~HC9|Hqb(^Yh%6m>Yr5BT>#YQBFIN#rI_d zKhLM&|Ae_-b^Fq$W_(1ceAs^j@_OR08>tlZ(D?|AG?jvR@rZ4?R+u~q0fP~%>&y^w)4FC=dIyCW8U4xx?B$-6LR}=fF zAWIU+&1cUKXJSEfjDO0 z$$>rQwF|?3)zhd4H^*Q+?UI}S0AZ!|DExy|ifvCXk@sec5k$wcxX+9%h(Zl-^VDt0$fPAjLN^q-iyrnHRn!mO)p(oCsQ20JF-K{Q_#~8%MhMov|~% zS}#@uVbOQqJS9R9^5YPDG}pv6={)F zb|jPl#$jR`xV;du)ZD@!Ofb20Orl(m4cpjd>Cp37k_EHxH)~sto&tUK!KHVTcl?e| zDu6b@J@F7DYxZLTE%_n#(U^MV7H&KLz{WRMfxKiAOBt-sex49{j>9|jd$4Xn1`UUd8B2U8mt-~#{z80wPGpCDLQq$dA9<)kQyjQnAec{#ZTGQ-ACyj32&GswJFWTNjPBe{|-j`&@PUCK{|_l;d9^*{uurZX)f{UJmcmi+1d_d6qW zcOo|0E)!wuZ8(TYxQ>O|51>vJiiC#B)6Zzl+PXEKgf$_1?8fCYjhj*Fbwm|iO$wb^ z25ODG&ZF!8&_9N@@!l{)EbDQKNeZz_p@Iz}$f@{FD8g!>`gpSqx^c0brJJZCxyUjS zai4v!3P!!CxlS0KPsAvF=#8~7cR$UX-g_n4t~>hcVLgVN(U*r=96;Q5u~<~@ndq7{ z*$eqerP^_`Y;!bu!))y+B2c|Amb@6CUg9koAjSN9_C<|a!HN6GoKS^)s;ofsOS6=! ztu_b-Wz5>~l~PTEFo8LlGxHxRIJW}z-|%Qqx*P09@bmr8H=;Nfp3Uzx2`Td!8{#20 z!xm;8ihGei`zX(@bpV*M6i>k)P*UF@1q?agf{LaVV(wY`%Y}qD_?*@NG2fbfSe^+Z z&9THkR5}}BEfV;xJP>IU=p0%T)!bSA&V|DK0nR>Y4i;y&mRrO4s^_5m8up=fWreH7 zEY`Vwq8i_J2E|F*O9;dR_w)2#DsM92xSW96x|`sTvTd9~UI5J-)sSlmD(#iEW=@9U z#6`UX%7-h)=|&Mhi|%1dw@F9uK41A=*L$v*E01Om+@OBu8_k7YeSXQm}W6$wx`sSzgr3#EZ>a;52N zyZ(|OHdNnRq-NA-Ikb?Yq`*}eC&0>Jk%hJ!oJ(zET%4w=`vuX(#mO+fRvg2)v&(QZYaq;zcZ&P%JcTfoUHl8{{xETsONnl5BYMg60N|%|y&?v|`x?^QAvqTCG_tCH-u8-Y( zi=&-IrIVe-F@!u^$=*6P5O_hzR?sk%`)|_SGCX``P{ZBTn_Z72awq4eASRsY0hj$3 zRD}`a6~I|312>};cne8Mf14{xe-+)nOGdNV8aKQc$trF+9S_dcQOa5FNP~q8e`J7p zq719>fZgaP4cL-05l?QQSINe-Y>NeA1@EYV&_qmc?B zmr~9W=W|T2oUmb&`k4mu2j&T@)guX%&BZzq_`KmKaI{I;-(5!nv~|4SK@Y+OL>1Gu zx5y*N|HBrMs^%lVX87hV+-K_e@@*KyuTIr7b*gwcn#rxt9D)E$zQ}0Os=l&cU3FNe z7iUg(89;VKBB<{I{+c;Cq;L1*d26)3qbl)@n97nh5;o{n`*ylJx!k%7=o@kn*%JSV z}Q($3O$cbC3 zmAMo*g{UHws_$=TUsDE&#bEJT%tP)*uQA;2fn175WeUJ~L%$AK4*7-2g~9G`X^EYg zu(t2P73#CbRrRvQZ6keGO?$j*&2Bw{hHfi+<;J+P&<}1m!9Jo)b>sEOqWkv7TqC15 zF*#pkV|JdoQ4%{^u-D;V_={?aj%qgyp_SJvQDmouS2G2sLBGKv=J!(pm|6_PXM~fgN(kg&>WEPs_^~$SNL%cVK zcbSPhl2oQk zaSF5g74&S;q=6c#X9nwfzy8MiG>7W2x{>AoZw-KHj_8XiF}ZK!H2X3YMg5CdcoBzU zxKBs(R+lDWPj#}P1FKW2kj}!-69|EWZ4vW{!XzrY=6!~kp&q)&`PBAP({_BKv|{K) z#NnE^QG%dZEwW=%r#LgNp|^QpRKPP23BBWzedO{ZHF;Q3G z@I%<3u|KN9j1 ziq`SU?p@2GtNN!N$e}cu^m_d0yEzNp=hw{D8n;}22JvHQbJ9!TNQI&!RnpN0=WLsZ z17nckd?Y+!u%C@UKRE`JRSiod29$rg>HNNzO#V>`P~x-mcZf$ge^F-nvi%1Cfsveb zyv>xO=sN*?<+J1E`DMI`G;4&-(Y?y69l)k0 zzfJCvNOla^_@n6<+O-tNO>L!;vgsLl;H!0-Z&3qSJ}w~QH00#)@@;XlS~)R`TprJy zXDhB@o^eQN9!mA}WsYfSKGpR$C2&+-<1)^{qZ9Mn5-x^Z2@sBC2<4myvuFQDduMWcnS%R!T}~E?31wbfQ@A6ec4e6?)$= ztMQR@zj|!1VHP}0pDFDKEJ9_~kpk%Bh1cFtc)8t@5<3o{Opsq48J)*SAI#H>m}9;O zDqvWI^pUF4*Rj9%oQ-N$^J#Yy`UDsJPzL~mH-AfL)=zKl-^EQ7f%A>bCc3*z^1Prh zzo5A`(VT0xmeDs?c5k$DAwyG!JEN1*w&cHIR2G4mPX+dqgQR8BwI0)Vza*hN=&_Xh zdxzbb%%9w|Ks0mS#)|Zk?kal*S%we9>s@^U!JKIAY(jSW9E2fsiO3e^RwV?fdyaxy3Fj!?*J^Z`zL)osLTh{!ve!pfGq$AgUe z17Z2!4EX8~Dl}l1QbrI=UH>+XEz~u`IYY=a!@UH80%ENMZ)(($dhC?6r&}ssQ9L3A ziVt=DR-}Lu5yt!7pbkO4mWF&aw{S;JltGtfisu;|mb=Y3j}-#QwCiA;%GI$?cH~mwcz7_DIairD*Fz#vh$79D2`lXMkdmzzEBgo9Rp5Dtu`k)} zqDQ9EszkxDHl+IG;`85i{HQ5KYmo#LyeOF*=2*(Z$o7<*gcKtEs|Bl%rP+MSQRX$% zApaqv)G#3I0mT}6`G|O1x~SXv3^8qQn>y8*5{k`0gS735>+;@a-bjO9jD>cE5}4Df z)bSG44IL_0CezLW^wjB&gWo7te=#weDs4kh;liu9)6+hn)#EbWeqgF}( z>2tp+a5FF-nZ;Ni$vgnDAygoue?a)6lcgm-r4MkU)-Q;9;NJX&%23H)m=jzTj*Tu) zBVPPe9#hZ8uF_w$yBs720eaBfo{R%%CqJTkMu&GIbb*%YKn=&x>g^VcW2~y(8ECbv8Y*7*XsKp3;6FA$6JSj8Vm{sODLhp=+k5 z$9C@EivwY)oUqi;Xs}tRSXQbC^kd4MUG{L(+LYfl6QUWvj^iYeA+R2ZOcSVWL3ugZ zp~1T4c8T|1O?BDf$(@NHn6?YWse)+r2oJa)a#qNZ@F!+@y$0jh#kd$&D`q5hIed$I zenscy1dB%%jM6jRVL}u^*SI4XOAuCcjK!P;s~P~Sigk`-a0rD6(dvEHD7`mz%Bvbc zTy_}%cEnU5$OL`X4D9N5)Q^+|KZG^LyWH?9F1n!xwuPvH3{mr9s(;}~RmaN=fdJTO zdVD}_qr>gth22|J>$G0Cp?4>*%sCU`a<8{U2l&)#Q~tCk1H@|? zz|k(Q3!!2_|CKVGvz4fLSk5^<{vJ)Hubgp!6{zeQ?wteNSn)i>~>tLBUo- zzD{YtMRrP)UJ<0y|L`Alx93cs+&aSSIV=1ICuv2h=z86N=>cU8O^}+?$Onv*TdCvo zGSk0JM=caEr0)YSS6dJi@ii`TxW-|xh{;4pl3OU$L|Al?Fy`kv2h*9-#3W$3 z5fv%vtQc|S1O563G8M;xXrZIYAVSM3MgtScFfUH8`D63qNN3^%D|o*$L%k|d4_7w7 ztl~%2rf2~E>l`yl&=5N-6dfRLh^>YTH-_yMS=OJ>{Nrm-ra$hgpYf(YE*l&3Xr4W! zv;3-IvPEQOXOg^;qerks14NJy0&f#r0DUmk9uL8fjsSL;Tgno-Sn896do@ygRm0*{ z%XGd$@*^U`K)AEphL^k-bUr>fDNR|25!0rO7aP2-hd zoYoVSCB7*Gk4n05qg2iGHEg431m&I3ys2tiN**rmM=I8FWUioN$Ot|BONXoNIO30Q z{>o*CwTK~NE`0jtA9$+4Dz0NY%TFy0&{lqASNc+L9BKAZ&@>Mpiu3YS@80dwxMP)5 zQq7?-f6LlX@!Z9a^u^mHvX@+51PQse!oS|i8cabcds3wG)iw!r!1*323uKs1R*6oApfz68jCkoqCL6OHvFbi;y>3`^Hy^uE61 zR#dDu;EXK%bPE0gMpsvD$>4DjRwOPavLZ_sUbd{r60ej$LkmEcshSX@Tcg%EE0is# z_+iaBkQT_&zfl@w7m!xiY_^5zu~6SDd7E*uno9u|#WD-X=v}a8QIzz+qXzq(fcPDo zIP(-fpUmTsrzmJN>x1CN#7+C76-@8EJpW`4 zFLVDQITDaEGy5Yk<;Ih#G>R>fv8wZ&Xr=1ehEc8RbuA(?tW`qF&j%-fUf^)#>IQnq zk0P$yD>}jqP1}<>d+}=J#?cy9M~tDiA1WIuEZbiuDhy}q`)Nv*=0=B>$4&IE;aGC~0 zhSKn4shf3Db|$noz1CNU{6@NWB49TCDF2om|EI(jyMg6@)-0TYySo`VgKzA{Xt6+o zofT_5x3-CAGRbItb%Mrqt=rkk?VY0Q;i`X_`lomx_xnzb1NEcBghUeI+V^FzvLlx7 zZHAi}QR z`?KY}W1zIx`}^i;3bxkb?CPfUojvwi7vS}63ODh(M{wQq{&g;g50I|ejDiPDU8RPl zY>ueazC2o$^&x;Mumf&x2L?zUx-}CUg|reL$RFc|$*Dp~iI(D6ie^jm<%DuWx|0*g znC%o-%?%2JqtV$eD1%vHtk9Qfs~&5Y2Q(3^c>g;X=8!b732H)G9yXmyydhT*$DKF4 z4CKspa&&vy-(t5rxhLob0AAj=_7X={cD8zQ?lrr)KCW)w2TE(q`C1vgVc40*f5rG+ zWc-4%g2Z29wm$B|e7tpj|9N&Tv3h*uL6bGxo$tfndn-GC_&&&uT;7|!jzwl`mp28n zp-uuU0!WTyPFpmc;uCk}dvI}yrul?KSy4cgi;g334K^LInn7~_8E6_+O-yD|MJCT} zrctNZ>>~q1egodOGkC3O5IJ?#ktPccUe5w4YNTtu3#25xJP>Am34I1BFtV!t*D)lR zdpTa*v00H^a!u0FvF^3AzZ0JLE`rVxQ?N)s?eUg3{>F`Km zNw|aBDnFn6oAOTqDG*PC{-rPE0#5@*86)xd*0}d^-I@1Q_G~+x5YsB&5T|yd4$X^< zUOqjm>o**KqW*4jx|iv|&$OQijHSX@7An-Y5Y%=|2Fq$K2GjSP2=Hc4WqWMhQ^FmZ zbhSOl8D5`|L1{ewWgqX|l>Z1Q)RyYt{1X&VRM@+9!^ma=D10!x)wbB0Pf@@lnDfK4 zJgIY)6~ zMQUwb{@l%5w{k2J^d|(ad28=EjXDotUx4b8(j_0yum@$yolbIa@ZXya`YO}xJ87f^96x00MA`VfTyOz zm%GWE-)|@3J%;P|6QZaA=aa<@Ly*T_MiGU^v@6uv1={Zt3MqwvBEV<**i`uSs&w9S1Jr*=0Z$m^`wARH zKw=wxYo6!CGRukm4;RikCC*YDTM=eV5E=)Ujr7N`v@E|Sq#OIq@?Yi8fDg_G`)z+# z_+S?BbNpYl3LUf##6q%DAvW^Qg7_y};nTtj>+)Xf3w+rjphMbEzRlZIb$caf|C}3@ z-YqaLhtUVK!0|;nIp6>NK{%1@C=Izx-~nFXY;nZr#IVT<%<{*34iV#@X50wR{xPWj zz4-~>d(5?s&DZqo0mrkAjm`_$zg@OZ{k(B!XokpIi#)Oz-0tb;i!;|vy3@I~xLBO1(L~cC?ukeFYp{Fv z`6L#mOs2+BN4WgCA0HhhgY^`82=#XSFw1Y#ZxeVxrp53;n`O215h4!Y3IJvonK?MF zXYKjfwClUg1V!6e^=XCb5s+o8c~u)hB0X}ooYJfDE0t)bu#ZdJ2w&l<1`&h8iJ)-D z{#VgSfZvBcP_t(1j_Uk~_i7;L^%yonBfN(jB5pUCiZ9$O^0C=j;N`AG9;P6hOvdGbC_y-sitKl z@Xc)-fBS~zdi?1>9}C>p>aDOg@11pkOl^3*_n&^RV%xhx~0@~=*(+0S)Ani3yHBvd! z32oUf2$R$-nsgU!I$yn(sY=Kwvi!S`57H-h>K8`NeFf{A3f{;Q&G@DtXs+G)d^{d8 z!}YZBiC!t_X4?O1)NKE4Rr{e>v9hEZ%>A%YwWMMf#1Xqs)L#CXODw2-qOT`E0h@D1 zH4cb-0m0|=4G52u3MCj|`0^gDj;)p?w&I->Z-EY`$*R3q)>L$yIk`Vj?a!TW+o^S( z)C5K0I$^swyWn6&MKwsPBkA}=Z4UvS6^2e9YZ^2>0laVP1bKD08=()TFF7zCiIbs# z#M_3CD-$lsM2(DZA;uiN&Xb7m-cP2UWLl-8`=?tpmHX~;~UUw&=oK+;_4u|1=r zE61$TR6nw`$t>!DvqhFZo7S!)>`L3wu-wB38fT65vUp3DZC2FzjDjvPpEYzXG@3MJJc5&8J}BDN#EF3?sZhW?R-E%9!!etYpSz@pj~;Xp z1r%IyS+E$I)PzO}s>5Gd^YZ4SpK&A=DepN85^y)0V7kyMDaPk&rdBY)qc|u@7N6(R z8h{jFpqy@0OBT(wE~iY@+J*oS&rAEoL7DJD8@GuV_mxCTeau#BtRXYztt0vLON?wR zz$|1)g_Y^wRA!b{>+j(%bc`zm zh}499TH@LqJ2J2DS=91&xEAtVaeGf3v!)WnKGDZ_MnT?Boc zhD{2aK(W85RnT;-bZKtFvjR$r#0%mKU=35fj?)(yDX9}tCT3Yc@jrzOU z@`*f;Z0LQ5^VvX@>G3Qe;t;Kpr8~iyoX?1#*3qE3*8lGwEnt-NyLEJ3cua&q`GdAc zXohdPrsVX)q22uRg_^xGZN9oW9kSb&*?^T@*+(qN;9q@0v?KMZy&hr7$f{%K3KmAGmQV zS^L3*Qf{0imxwxYzaK8@-4!Va=&qpx*s~7PaFlhb2*Xx8_L{H?*`Pj#_ z+e5>V=FLURqTMOLIbj+k`-HFtxIG-6A|l{ey5aqT4=Z~96uH01&t7p;;?J}HNbFb{ zCgW|6C)z@1;D}Q4wU0HsK%2*!q7spXpp%53wsKtwtBN+3UPBeV zFQxORPkLv^T2U0MSza3(Qtx89MRhm)cXa`cjJZgYfEy5i8tl9}nhTq}aby$t{6Zo5 z%hp&;sC*+E86tzSrdGfcP7N50sM5p>Rv86$5ovK{7yNuW1C3ty7)nghnYw&b6oeKZ zRhk2Xaihd+iIBGvk4(KoCID?~JkSK;pFM)};@zKl@HN>WUhnzU6)ivf;6%$q)&5y-4LN2NOnC@+28RD{|K>vCY^_(4E|A&w?n5;ya^{ z^B&{pUCojK9Il!Ep6foG^OwN6ckLlE(KW_f%rJHkXqP18n5e`G7V&0erOaz^LVr`g6?%isMWTT+UyZr2zruo-61b4!s{$h}?Aa%c3E zh-S>rU#VZIdc1HM0Q(x)CwgG{uR~VQ56|ZoV0#zH*R%H7J10pKVe4Tu)_o;*vbxea zInrP0j9GYa>Umqjq`;Md_eX~haB%cDUy**u1~NClt(ss-8T*_1&qZ!5?^c4)D+_~^ z4%RKhbLY!;vA=6w?pu5P7r5Z15rN5Pp+n6$VN>l6tRphN0Jli^l!i@=S4hL*U`WDI z;xzXZG1~8{GZ{et@|H*al^T_rTmvxKhh%Un?&`d1PUo0e^nBFmE=xL$QySG2bBRF( z;cA9|+L1Kx1M7um1pV`(EBMsK2#&A`1J$_(L*+sybSit6c%v0Npo z;BrxWPWe#-0pc)OA%lHbbwGiR79YlR9pf++q?2 zXeimaduib2Qa&k`bO`1{_=@0M+|aR6_jwUd7B>0J=yCg1zS_+FHsRv>CiTMG>4S=X z2o6Gyfcy-Y{aq&`Erj6k?(QKxYqls2Xkf+XBs2}f9)H~>e>NmPrJ_^dG9x)CJ! z4}F&-8}k&RE@jFRCgcWtmT!*X127zhgQoUhz|IshL2txOzCo|2wEic(?45tj!Q+%m zGv4BFzDmovTOjLTB8#8r#|F%r^vAecv1cg1DL(93|;6ei0VC9IM-~wt7E7T z0H&X0;&1hxV~`Z_kpKjW%hzpQzsDz_mdww=&v~NCqt~yspO${J>k#BmeAj1mS8F?i zmVVUKg|870Y_E1SaHUA=>u3UTbVr-;<&wDI3g@b|QaqFVVbLlztRl}8f!b82vh<(- zE{MnZVB~WZO6Pp+d{Wot;QCP7L?h>X0RGTqi|j68yZqB!uwyIzp;fb)SQ z0ZcP9pZQm62{Bm!3#)=Q)oz7Nckjyrmn^+wUUbz6L^}rN31240I(x^dK~RDbP;1@& zm#!>HdH;ym*R!zbYQD$ zxh+wK!GMonMv&nPdM@(~y#6Gs0#cHna%3hluaUj#*E`jt-yMKV|3GTKTW9xT@+P#cZj_|EQ*oZ%{}zqtn;Z$ zN_cld@v4ggTE4j4k<-lKC?!y@*3?!zGQ4EK%*fnf7ssnmrSd?% za)LPOSkF+8o-s^tZ9_`V4glK(RjbPMuVU~oUD0JPJ4-W-7i*jT=Um;`xX%Y;GNsYo z#!2PT60z>EgaDQAE?9%A&{c0L034rOShOkGq5#WF#UHG1Y>3A zU`M0TMCk$o{_q(?Yhf1GLc9dkgh)%C5u0y z@C=0kra-pmp4EBwxirvZh>0`{K|-D0C6r(c{;l5OZX)(mrBuFulWL_A{lK8Rq_1${ zPqv#>0bMl$Sli8CEP6jM5X}%bMqO|fm5d{$9fRBtQA_+v^Ju6%}_vFm?kXi zN4oOHHGwk~{Uu*YQ_v?5;V_y2juyaXIiE3OV6oXs`Yj)rKw4NJT+yD6e6a}&zwDbJ zs-1C^SS@)?jovWNOb$F&E+B|0=WHej{K8(aBNrM8xMe9K6bTtSV$_T^7n+Hm1M`a$ zRt=;FMNlG)1{qQ-l()I5);$~}1M;wjvz6?**(~$7FH8)>q(BOFO^DKuTF4blL?Uh7 zX3OMHm`L901$E{M>PZ5h5+W-oVTm<|oE5v4Yb9Frj{J+|S* zA|S)`>iJBUn}MMl_}b)B)hBE{E6)z{OfE_z;*j-nI6{!b1ZMUO~K^u|y|OSjVk*s{|d z8TMDYr{YtKzr%&JGX-J@{zoE#+KP50;i8s~}@-0Dy>$8Lf{mq(Zlwp!C zq{2tOX!D7{hn#gNXapc~2jWJ1`%@g{0A3D|$wQZ;SM*vwiO*jYB$s`Bad8R2=BkRq+)I>wOxT%F|p*cThGsOY>^wx0sk#oQ-7 zN{}{6FV4ADB5!nP?>Vg;Y_si7zHjU*y14z#! zsRlB^as?%nm&{^G$`U|)IzuWVAw0R?jixld{GfaUWqXNfU~i!~xBcU2#+c=oh-Sbr zvrj{8{m-1%A&MeC-sKg4@5aF0t+-8K+r7ojfDbt@EBnr+FKs_FQc{RV&gox_@PfcF zrF`w7r6yYV@oenKp(pz=m(@s5Sl~SaPY58K z7)97BPEbAVkwSo`1)C(lB!O>%MCTavE`35A%%oZDf@*p+3*4*-;TqjwI_zQwYmVM@ z8E>-6`=Awi4cf?VAFAC&7|>Xj3hz&aF7~)lwCmZ{A z5K`!DFr1=7nKLn0Im;%=MX}uHI9K0+PW?dH$$V#-f=Hg*e9a?)_Ze%gO?a_{Y0Duu zp5ud$WK6ihTY~BZ7=*pj6QvmZA5gL&C&_APG zR@_k(=T+BDNOb}$U&>w7O4o)QOs5yd>{xhcY@6%pFzWMS6dLILW+M^Vt^&I$(W1iW zDB-lr4u^llVGCC_ep^$*i=Ol&3T>PI2Ip?Mf2F5d0O2%3#b(OU$V1gk0XGrAXGxdr zj8(Gd4HOP(0!!if0f5nQ5i6hT6s-&1HhXT@bwlghMbgHGx>o^RNRHwygOMZh${BOB z&<$Y;R@(yHnPH{D+b7}OQ6H0z_5NMtu84|7J-u09jM`uNL{uB1c^nUFz3}-*x~na2 z&bw2oO^@3ix5doB7#IP_s_sHF9AF|zTP`D)!127w!{MadD5{$Vc}e^k^D{dAWeoED zvt?bFRx;=7uGk%JJZG%KyI$!()k9|?F^Dz<>5OH(Dk!!++i>`A#B{qYhkHq~oM&bU znGdf$&A+GY(4T^3^wz(D`zheQ|8HxOB@tMdGPQ~t;XggebxElIF>aEH#T|j`x~?fR zN)VFqsg0oJXVlk{M4S<+O_lJUXb!W0gi5lwB+6$>Z;6&^SK;Jm*1A|BQ<}`LVPlR* zKWc3PB^%gy!3(3L6NY6dGg}eTD``QKW=&b=7h7*W;%nLhhILM6Ei>9B%!R8O9+5P0 zmZMz+D*OktWPapuh2EoT^lqG~-Y9fWriixQ$*t~RMcXCdttzl)=D*;AtjBhNG1pp= zh7&LXDUn;911U)uO#(R-ciHNIoYh$Z!-`Fb&e<$?iI(B4DB5JVMC1BB&7!o>m|6@s zgIMlqLZqMorM9LB#K$18dP%=4(mA8F*Cvrg5M0-@8_`g^I<*9LY;xwMWMi!?R@ zkcMl)e>s(C!wDGA^BpXh=2-gUC%m@s*)ar!8Ir z8$MPAdDZ35k*gJ^>!!e*B9|gQcYvwQS>n~@z`uzN4pui%c*dtB%i(n3|vros1}~rL#%&k5Ug|Az`~Y} zC>pnUK3!Nozy0~{hVQVmv$eghajoI|bhrDFnfH$M)H<$h|9m-r-pcfMCvIPTHNM|p zy|b?Y__Qy5TYUip+eynt0aA;74*E#YD`}W=I@1nG{{J6e=MV45SebL>!_Fm6g9=luzn13J>HaInGf;gYi z#abeH*6Dt187t2?qVY>x-#2JKztlkm^U2BLtYF`#h-}EC0FaTms9C7;k7kG-+1bSY zu^w<7y_xOP)r6VV6?xg!Eo37JE$sabeXd@_2Ken=b0c_MxH|EbY?L>Dnl^@iQSrcT z_xEhnRTj5&oibp(=fm^;Ynfex9hkh zgc?`FN|mL%&Blec>pyICqV9CfHAdI5t6F|=x8y_Bbe)If9KP@`ux(^F$vMC7Yp71r zGXcpLZqKa4D-B%5NN=Aps|0l>jywY0KNH~Rsae`FTCJWG-_g#p8fR(U~=lK+U%V zsgsA0znmqb{m#H#YDF;EtaxIo)Q?m-i`I}M@FbxVX$lB4WkBBkE;vqOzz8bQ8ym$= z3UUYo7}xhgaRe#HL2)rxR4B?Q*(Gx+0AvF`}hmxTb2jGHGx&XEN<69!T z7T>*c5)pC4|!as8ENbmM?-95pXaO+i$|Q512!wd z#>^)fK|$Hygd`6)i~M7)e@iEhI_Mf=<%05ao7f#5>Hl+^?t${W*zN_rI4Z5gn|%ZY zr~#RzHAPArXtKL^h})1wg6MmC9w}QOYYm@`L!>08Ezx`S-CldNd_>$p)3L19X?eNU z3qaEF5c00-_HEVnhOcICXrX2U{+5eP#Zu>2V{s!nf3=T60Yic0r8c8Z8ily)Vbfuy z_JI^6pLdjuUi?5)&HLq>HNQqJq`%ho`Q_sj<@9_px*EB7>9O2xk-O2~)_+vTl^-SQ z%RtT&_#QB$F1h$KdOHDq+OXp&97lzr*#P>JMid15Gj1rT5^H-85q@)*G zm@Q_TvGrzqQiCZvb|VdxPiId&!(oqT`&x^@aWXtZqkq;@@I%5XqS=eBWmaCj*(lnr zGB0_MPmL!TBe}je8~6D%#5J19avUmaf1opV4t<09M!4hCwhE&CtZQJh2XXynWdOe1 zqVYZIFopHEq+OO76eolim_mPC=_jVAA=#hxV&0G{= zqq5Bw-ut{Z-zo^&kj91}YuZB6jR>~e$YOuFS!Vs8ghS@Ukqs2^OzF{D0fBO+*O_e& zK3ofWbPN7#Bhw`nPXcBAK42q8%hOV#gB0%o)kkn^ocMn3SclWCKVE8<9u5hGPdhU= zY^(%kW?KkOT2-ereQE%Fh8SP>cnBZ4lrM26O6NTotTn@DDw?9S+?`qY!PT%wxdyEq zgk5dz$)3tOw^ynlQ`)t#r&Dn$Up8S|blja&8o1|pJT8~69e3!Y80rC@f=v{5^m7^IIP-kc_2U zQBKcL1kGXh0wR;Fp#mo`+@3Cfc28&iS3aY5UYrK0%~&WBRD5}hV9pz>N8q}?D60L) z$ljA;i^PPO0FBpA25lgeMK|~0 zIWa__NwaZ!FvOM16lEYMMwkrrNj4}A8Zz+1vdY8N>S5cp7$6*_2IgSVukwCe^Mfqg z@f(50#A-~=o-)F#IYgn?PKluf|5+Tnw=h})bYKr_>yIN9at!>t7-?Du8&=z`W(}oK z>G%HQ7TKQW#>F7OP_rGwC@F`)7)4tZZ>{00TT=Bd?f{!92?nv;zK#7agnq^ ztUt~~5m|=QXO-l%Bh1El?UFoVujnTN5-cDJCQB{rDCz0%MrbI3hcDM5Vv#Guq3?$a zsMK&#jq`&NiCqf{SBZCHpEq&kpn_BjbPSzDs)$Mz(g8KlfUp)ZZ|p*mr7=Z=u`sQj zs*(tds;qVsN!9%pMj6el9A#@`Fpu#~b#G|IOh5S8AcpZ{2TgNP0>1#~6m$O{o zvp$svH39`rfHtsVY&V)glNa&0s4xZ2JaUx5Y&)gagp89C+iqjC(!$3E-Msvi=mM`k z$^Ls@2t0c2mcrfqu-c!5=$E`J>j4#90?_utk9n<8+ksEWf1)~I?>2vPX z;QN-jQ`*F)i!OM=`FX&>n!_|f3w>z-Y9Z}#u`J|u4vnh|qJhxa@ziAmAkKC3lu>cn zUz)@TX%q1I>d5g|jDLlVr zX^em>NUWOiUD-=2Nn|7d`0Y=ND%Hj=*r}UlqjI#Cnnr@YSQ|!F#x|QN6*$dA_LbL~ zkE-vHqj8-U4kX%|pA#@ec*t#juib=(;4bETlEPw;tfzvM%j?`jfCP{48gOUg*&hcW zBsIkAJgjwMmQ=vk@TTexQWF_b1ieyY6cq81ac?@vE4>Qom6kFNOde7CDCi~@6DuVIi&Nf>BQmkY9GM3pE>}|?C>{ok zejv+l!GD6P(z*YHKSHVHB2y<3hW%zWLAeuKo=y1uOWM|>veVP<_t(%;{M3>=QihK4 zc;yyBbVWX;B4StvKv{j(CnhL`Ekwr8pJ_IT*M9;KtI7Mz#;bsNy8}MucOWmdBvlG^X5wZfpuBRX))Rd($YYR(UrNSNR_!l#40BK&~#yk#wajmCYvVemRQ*j-ujz}7|$SxaL zuO07{T}qJw7zn`jZvZTaudiE#M3ay{C~UZQ-1i#xXdpQl4kem>YK%3=9Bqb&3hXL^ zh2PrL_^}%4*Qn!59jSjooF%T2b^>cZv5%U?^Q7>%V%+yya`Uf~@)+uNwVv8nQU)&fs$V3V(>Zjl!)pc?v0ws~DnPa74%A;Uv`GWem!0FC z?sBv_WCLN!ON$VmPExKG3py1ehQF~qH{ls)eUfq#UTPK0X(;LK`UWX7e+to=onASrDTKsk z?(~{wd#}~5anCRmhK1#|!IZ0DpIjkaZR9PnjnrBt4#_?I9FFH z+Nv8eFh&rKz>z|8+TuIsA`hllwL}eCeizMC-rtkSm}A^ZnMXy;^TsK~L7Ar%ortM= zbB#+$ucN{t;8ow$7Ib5|>(K6HoA>Kb&5fLY>j0cM&f$Q$38-V$a-K*(&3NLQ^(3Vi zl0Rg?Pzj`m4ux}NW0c^XJxz1Y(;#cfm zq5{lO#`r+}L52ju${9mYjc^HZ`}@4HDyb9%qW0pa@+rJ6zTR=fC{|W%=Txn{TzYSD z?|w}|n3znmTgHU$5(xI&^?~mfVVCIpe>-u@{Pv&NHTNQ5=0`p)mCRw2N%cmHCUm(a zRTCIn(?)@==(43IrPsG(FKfPorABJnwFZRB4KoRGG!$eb@r90OmFguO!~mmv3Pwjx z$ZxIlNvSTG5P6>*mI_aL4#;|FZ zXKVi0|3gSjfPq$^xB`G+RpmGO%=bpNQSUn7xxAmiRFdX^sTe?2s;I38K0d*DIIAKB z{xXQKsMUbkQx#?D?xKcG**|GMQ*I99qVPT-pC80LPV&@dn9paWc)@ao=`SK%L^V~h z9$8*(>&*cIQYp`uh2hCydZYl?Y6X-g2PzIJT%e)H(R(fg?JE0yFf_N2^ACiMCoLq= z(bA76Iqi*(4sLfGu>qZAqb9$~7HQdHX$+Y}fKhVKN`x4BR)6GkoMut&CEXTJ^xhWr zV7agwk*4MaJqu(b8x5frollDWDFz+j3IYl7tl#~txG$@8mgs$;HwyqI3k4u6cm~AA zPcgW^GSlLJ&e7(IzZ2{kmElE1e{a0JUiOBE4Q~r68FIgBea(8VMWR(RRUa98w>x8y zXEBB-YeV#perIe_+3&n91&ib(jPGMQx&-`q|8@9)5+_GvERUye1uG-AK!Qe7pSKzf zQA=Meb}>qpmbe+qEEu{x3<>6t zQ6LNTj!~&0EL0mLoB8?~MeCPh00v}w`dmTrESd~b#FI@IR|t#LT(u0Q1k!y4Y|Znk zpCai4OI6Ulb}hW7`qK}Mz5GCcZ*uRgd4 zWF(SeFMtEOb_}Lv8j;MIa1C4km~qXm5b5kJ%gY`f#ojS%B3X)VrFCuAtY=0=ZFrkH z$hR=3a^5v!EsO!?774WWl`NxucX_6*igA~0cpHRdo4fGTKZG2m zfL2#EP}xjOUOZNge&KwzRyyj-U(0}2dyZUL@wwt&uQ{nM`t!19!$^ATa=3@m6hp{` zUF}?j>t<~=3|!G}Iwf;v|I#}8lQVBa-vP&{K|KWe^m_t8vg>g78LnO}I*JNLh5Hv^ z?cjpby2BaQW~#rWzPhwYABNFt$Rn!7T``V>lHU_p1lDPG`~4(y?xbsYqRXQ9?QPTE z-LP>9rwt+6)xW!v4i2nZ83@n}_K@M?9F({9@LEn4-)uX@-#$jyFW(QfXQ2yA5057{ z-^uJvti=WJ;gZV-H(240L7EY_+sW#*Um_j7=Sj~-D9qL@gT9!o1>+r z!H!fT!{u()X;p*@32gYI1oWljO%eCN$lYpwNTj5#Kim5+BXx-w-taOPABrAj_IEtM zvz=j=q{W#H>3CIZM+9jw2w0BBwE8({%-YJQk&XZW&L#j)GeMUn7oD1R+zoro1ggVX8q5YvT)DJvd9kZ-#j{}ZG^HG zqPLLVkWRQ@fPXzm7vWbr4y*F%R3~j!(hx1I357uln)V3ZINDg-)!Wm!xmikoSn^HCrhRPB zE_`6l&2IW8i{KDev;I|8kzlKpAWhato6bH=1DPNlM)xGTe*mPp;QW?bfgML~^k?{O z4KT7d@x_E(`7+bzy#cWdP@K&!`qNCaBL6Nx*QmFj-=A8R9;-g6=ila?(q$JW<^zzI z>-`C?+Q_(a;0X}I2&f-SHL#XoL5u763n6>pY8{`Q2@y{Bzb#YIinUK+HvZ2}8cHM` zc?^wNqE+F2Kva4LgEYWPB6gO4x6f!jLYRY~=H9A|l$;{qc^ZG$*)%$_97h4-Q)>|L zfGRlW62Z9z_2*UfuBV5VaH#7*xEt5fFwrNy!gJ)Z(Aur?6O?mCQ4iLs7~*?cL9Ys& zvi9oSs=_LHaUR5}O|9FIO9cOS1Ie$GN=M;8BjMf#N04MhWl{mWco0`=A>3wD-T=Qv zWm0u#hdU+#QNL}>6#Ir$2F(yM*>C`W65pEHWL2tlJ8&?B7m7vLTp?hip(01D%`5&k z`g3K6(lkR7Xr_`+7&M(!DwUUxeYgliK&Fjq(T)O6Bf`LcwJSL2P)2sX$*scZf<~?H zRBJsog-}3iWm;)I$NSAA>Uzs!8WA;d-j2l;OASFhj{z)euZ5kYm%b2$W9bASr_okR zxh&zy9E|ih^AFk}%|S>qH>}H;J#;!^oYau3uX8e_(o4{9dKXL|pOXTQACf$&ZdYv-FrndD%L7{FjB0wR?l z5uWoMpZ(zx%HT4GdY><{SJ8-c3vO@PPCnLN5b*pB8CcVr4(x#WA5`R%v^EDWY&{9!X43Ly7B-hGF!Pi&4oEjg|;Q^6uw zr)&RdRZ~W*wqTbg(R`h%t&d2du;Y-*tEAu1Ro-K@nDzRus-E8IHyxe)jJSsLnJ+7o z?$zP$V)PF;38va(iOaNc>)h)v+}|*o^_hRoc{nlyY$9QT4br2O=gxjy+~G5Fnc0BL z5pss?_m@yR=tULvWaA6dhsZ$tUWT^J;h2S~UtfZtIWQJw<+p6HMP;;r;)yA#9r|me zP)x9QMb!98R-(!0iGvMvP?810_@y7rgDCHaFA8c);YUJN{E>Ii>p0 zaXlLbAl^ombZqDj+3Bhx5jzi{|FKe7N!QTBg3O*w2Bn~ov0;D_n^b~!!k|fw^coKe zJ4J}myC0g1$oh$grSm4l7E&4}YD+7a%LRM^{zbvTTpk32xGh08{yAHD{0#x(Shym* ztNZ7#M)C_dI@pg4|V{O>CK5r5AT9HxF;365nJKN_MOP>tTyD>s{0IymX}dU#c}>Gp%dU-R$0-#woo zW-bBpdtVP=zWsR-9QZ}cIq+2Ic+vhIaMf#egaL^)Aw0Bf?a^!FyA*xL9v!~iISztO zt|7-;hY91V@RMcIWxjw0#ZsAzRdt7D^_v_kj=JK>z!LxTm*{o^j{n;osj| z_OxGq5Br~E;*f`PQ7>(TyFESreJ3@ClYIu?w};tv4gdwwWHzx-J+xHRXIPy3gK6G` z$fEFn_XBeyF9G#v^1$|h%FLC-bnYxgKOY?F2aeyaVy;83WUeKyX0A&o6|?h4%9Mzm zxbhBc9rH&L$^UP`=XHD3pA4x;z~?nqLYbT==go6|UQ(W%r|_R*s2a6Nfq=*B?8rDd zT;98N&Zoz=c3Ev-zc?*H?+@_@&|4&T#ZA5~02_ot+|T^AZ)9C;e8_EzdX+z!o{Q^p zEi44aoRSB5y!RaA-l&~eR6hW!eOTT$hJGR1aX!sap3An^9d5SczDAuZV#k*fx9Z0$ z{%ZSAy+tMKps;dk$K7H-@r+CQ7d9zT`Xud4nv=bg7M-Re;vsjmJ!^Na9|_iVqUU@h zKg-#f3$pAS?8HQE<#kET}uUz%Dp5=2^0R^;VMGu*^Nngm*iqC zz$ui{;U81NESTyG9n=0AUPnO~HYotcHx80E31U&E$-1ha@*zhGwhs5tMlVzOYp^6m2O=Xn8+Dl=oE;ZWM9Qc=$JA-2 zNj8LRM5)Bisy(D{UlQ6<5gp?;p3QfVbZ);$lH&ql9J{$p&CKUh!Ip+ZtbuYd3w>rO zi_~eRnw>VQl06=2rZ=wc)G9%aFCk9XkL29$H)%w2jqiaIjGGQ)Ew?QNu}wW4AX+uH zx=0#F>1i=2W#zL8+Bi(SEmK~KjW>cJU*1lr)$Tx;2y={rEG5m{0u`mU?p@U!6*q@I zn+xJpj-w^*JLb~Zs=@l2fL{b*lSiJbwLI3AAu$Lh>YFR^3STDV6X+nB0_Pnc-; zHYKfipZN}{WchRaR&0yT+0|lD6_3Z?>&&9s3#x_8)4P6p*KK+*0+s=rSkrvrQK_5cTOguMs#=A~%sdbnK^;<^Q4qdbkD z%6U`vI%TRr<)gH@N6z~t*J#hMJzM2#$w6|IB25$PRnyDm|2w0Z?jQ9RUt`F)A1=|%!1F`AWA_=MYZGe zFEw`d1t@r1vms5tf7X9*#9QLr(e9XA^x5EFeQoUu%=Y2B7z0LZUJ}(H34$PWv zya|d1!p5EM91cqhkdEIRL+^d5+fx>qlDU$F;Fe1OXN3g4V@n9$bUMOVmKW1)F0udq z*KLxBCar9yTx2HSW>-Lt5gp&s{nFDC5?l@h`Q83L`MFK_J>zMVkf;Xnk{sX?M^zfg zg2Ox=^zMA?d|OA19(*=Ad*ROZ&hp6tSGf?pn>KIy5r7Q<;MpGxf8^SJBFPue^SEHb z8NVC@!+xwTGob~~gX!EF9d1yU@eNUwpm- zyxgH8jLd!61|YNYcuIRugD^l9$qc+$-)?RT-Z=5_#z4uz{0O4`M3RiaIiGO^*YeP8 zeJZ&=j&(W#dCMb+=TXXfTFkr>!0Boo!&%iu=V!KTtxc7542KcUL?=A{9{e&xU?@{& z_!h;^BBg_30eJBLadd3Uj)2Ap`N=xOpMPO@RF{InM&nuklzDGBcumwG!QK9~8kjNg z&XrXC!J{G?M#><6=Pn2@N}^6L9?UdVEtR;Us)i4MN;_-F0|iyeUt2TzPCyD0 z(h=#}Q)v&s&ac6O;)}4Hv}TJw$re)@aA)AUeojC0Vl(r+?elEV?Lbl+%< z(HK9Z9&h%-voBI7QEu`?;5&uVvDsyTIVZ|1i)JjYeDB4pk!U&^&*ImBpr&uq|59oS z`NIH6>SC8G=NZ>Rj~FM(f(ikLhvBb8{g9q6Le=6GZNxm>u;<{pxmEq_RnB!MVh5#B z_LLDv)8v_}2K{}>y+wV=U0$z3^hB&YR*yzQNYyW&Q-r!Ri@AF6*W$v%DQ}{a5l#IB zp%|HjQXi<$mkK_J9!Yu2b@uHmFMUK9dASHc!%xVoFw;vE-sej_xkr&;^4HVpf-7r1 z;cvgk1{X;fRk{JGN}khX9k_$vUW4^Vu7NjD^5o)LPYanbi}2oKP4u$0h&Yo@uLieMZUby&c&fi99 z>HLsN@`v~PjeDKD8%u7TWSt26wL?R+J^Fofr zyX24&GufWI1mO34!CoQL$ixidUhNY=19deuso#!wduXz<=V|&2n*Mh`J`a|Bc{DL< zFy>~rM-QcFTutODL+b_ARW`f*sTV15j3MYAz81 z-c0$NFtoI)P(hNxt#dn~f^)Wv(U`0&#!x_>`qlqLvieo*-k`K~xN2 zpb-=mYVAjQIhufeW!SnebFi*r8BhDnx{N+7(phNnL{7eqS&X6dnCpiC5b+`z&WQOM z83tIX?V02!MtfK$ds84SQH4j5Z=_da>}S3G599gbgLUG{thL1lv%t{B2w=M1L ziT&4YpIRo?D_JGp%&=n^q_4 zizQtWnE41smV>MWSib}#;-p(fC(jwANfsQmjY@7x6U%gp5QkWk}dUDzmj%2Swti~|RowY4Q^cDqm585ai z%3LKHtfv`rZ$=TUrR8VZ>xLeenExm-4G?kk+WqfUHLc+QnM_jIGG;F@=u7eZ=qi{X z47V4yLaEVJ6rqVs_tTYSlV}!(A;!G>>=(Foh(;dLNj${W-wOtrS?|s(pkBu^=VK*a zRc{@VRezdxMt!nNbX$6d_xT6a454n|?IS@A~Xpoi>ttIOtNg_wV4X4{D&52$hwGEULt+A_Rt}8;$ic zq|`e$ndoyNfY6Q77 z_;HSrCN7oUzR{CMWD9n-i|BgoVti~IYQZ9P+t>_%vn+~>)$25QAd2Zw0h9FnU|hz# zll7K3`#YRy4Ql;Nvh$U3ZQ6qw9pO!9%Nn|;5(fC*O9kKcQYvD-7gephGMDR#JjY3u z_{CR2(Y*qyNd^J?@?urMln~UK{c-{`wQI{{hMJ0~J)KNxsnd3OAC;+5$ovKDTL`h$1%eN+{rPgdj(HwISe4*8r zE=)=-fushfR%=XZmC?{+i|+y0oZ9M>({e#cY|&^NN|RSz_Jy3-t2LesD7TI$sP%x! zvZ@L0@og3-{nOA?I{kRj9N*CBFY=S!N1Fm@{HilsZj)JYRc~ySs%y`9d{!I(oBg-F zSyk83#Vg`QJ+%?z_~lGRV*)X)(Wa!~OcYtRxI0RleBTePNv8OvO4~TEqfIWe$|AH? zgq>E;e7Rc9(i0?>U!y5X?8NcpPZg~t{|rIF$Z``%@_x!ylK0BT2HaP`wmW_fl^&cD zM!w#hOkh^`O3(_10;!ah*I{#6)Qa2jvx2Uxn0a|V+U|Fun-5VIiHHhm5@}di;SmG} zF_~w5u6Wg}bMEV5PX9(^Zn~VbyW2P9@+untf1AAY06t(eP*zsvbmG__M-YAO_)RVp z{~N=7NnBiKPr~f&aDJ9(Y$H&)vOqs69N1rNow{0W+jq>|{+}4)(ir9wMRx1k!a+n0 zV#<8Kqtp%66JZFp<8RLlF#&zuujiH{k`UO^$7lBrC1+CDu^AS{lbiGJcK`~tn8k~} z8jbVAr^`vQLYa5~K*q5V5s-10ea@phW!SOs>zppPR^`_qk_RSX{hx0=1r+AI9bssK zI(_cp6v{O+H4%80j?Ry#gX!bpQCJYrLDB<=ALz}-?ZNZz3nt#7@M9HOV(M(ZynE#^ z0yd~3$%!BL)BkQ0oPi9JI1-=%0#Bb8Z3tn@Qh*<`+7 z9Zf|4SJH{7y`DKX5l>=k8kN_LFk4>L8_jI2LPSIECZ2!{IKaM2j?g|Q$vY-)bRolj z=p=oAC9_G|R-)0+TZYx7DT;s0-)5qQvyzj*p+L6I7+Qy0M0ED^cZP>j_cOx(_rx@i zH$Tv$v^Q6vwMGz>_NvFY zPyyKpTDnPV7PBd`aW(EGfDo;r#c$9OEScmZd8gJb4HU?b2)m=e>-gh!wtP?h4cfgP zxj9g@U_$9INqW%g#fBjif|-yuLPV`KE>AKN4c&hTaQ}CDD|0Mj51$TiIQTn{i7zY_ zen9f_?-T)N{Bu}bQ!4EgLB7SgDUabP@zoKBpUi2S(}m5pJQo3DTJ2xm&9ld=3I42^ zXp0^m!^L9~dK=$~6~x-d6^Uu>&gu<)^OpzoEV6})J4RPc=+_0q{0?m&tV<4kOgR6k z6DIirz$Q;uAV}b-;$&#-?(6~up679%rR|GPu7Di<`Bw&0!Qlk@OyjqF!Sd2J{o?zy zUFRiyi?u38NA;tnQL2wz8CYZuS+P_{N&#N=96nJx7V;UkLHg7Tn1+==gT;Q=Aq%2M z%+~K5krmcmB4@*?2DNv%B%vU6jc1Pr1U8XBfZy0C+hd1dd#4r}PCRKu@|%>%wgt@q zMHGh7y4|06FAItV_PRYAjJYZ}X9-h2sa--EHg^oLKO4WKbp0_F2>x0zu{AH+^ zBr(R0?ultv4BlXOD&Dt!XDrs2Y91JC?e0<-%5AG6FZD~)E@PMJ--ag?_t6=5@K2dk z0o6z+spD4Rs!K#n>hS%GHAwXdI~-ZaVM`brCmTRxlm*a}PT(3bX=Zd5yGqZxCTz_H zt!s3&3us_;+BLNW5y5%sxp0TPF9C~lZGcD;yFQJTQ)B|toNHFyXb!heGf zLm@tepm!*Fcnog{w6q-Y-cLrg*={A!ivvrM_I+6c$1pseEj)w6-6Vfve*7%+o*nQ0 zfKO=?TnE13D*y9>N2-~_@2>r8-Frk&M#H0Zh087qN0kDFW*h%#eKo)Hsuy2T04SdQ zU2!$7HAr`+%<&4gKI}1#OzH!MM@d>_rkJPmti`y#=w~+jD6fh~?(>(sV@JkR2vO^d zCzkWw3Qi;D9#iO0%hT%HAoSx`445?!f4B&9FA<-+B(A4vNY!1wk=#B0EdVqDG2`ySb&21c7-Bs?HBQ!$y>b%q8x}#_h&*47)=?o;FCHtF*MD*B?C5Nf z5v?#5*2WN%AW$@k7$gj^K)yyP%@)8^uP-Z9$C!$f!&fI|?c;-7ZiYO6RsjDV6K1wk zqfh<})AVRhMVCFyDR~|03>|uTI~JeJ<-wL=DxTK%SE#tFmK{%cR$O046MF6?BrNe&kmuNg;e4gml^eWM*vGBx)MMW zev%X5sV2w(Bp-($v{(o-2h@P2DJfO}XwZfz8(ocl5;f|?(6>Vc?g3y#u9n+*_b;MM zd2R<1(GnwwpuBg<3hGSuWX^!#6&FCYJ2;eFh6lo;E&>@82{_G72LZWOmMj~P<7E_z zrA(9oEw>mQ*pR{W`_$+p7?H)|0fRw0Up8I9{kqC83S{QaG?zj-N0j!IT`gkW0zC5) zF;_k{iy!zuRtV5XV*@;E<4zQ|(nZPj!6a;KWfe2rtTjD$s-0&dEJ8?!SOVNp!dz+c zq#e0g=FN1JX5f;Yrd1_&mrWj77cxhiWa8TdTV5jq~3o+y67U;vu{)2s7WhRZIzRmk}V z1+fR_^W1ufemNv(E`bYCpGPi^M=hBNncQ1gYR$;_ZJ0% z>`1XRay*5iup^Ef8~Aj`K&ZTA zM^4HEm7o#D{eYr}&@&hUqpFoS?x(8Nt%)oQz2Y8v2;eqlBbql%lzBlScU*lZ5*cUZ zMG6u0w~3sg8%Y8Vgw|ZhjF@L7FIE|ILr2$>3u_-Y13(gcZWuK3%>ew2xPe#%wTm<``XsY!ZX|Q?^L~YChWOGP^@bMWB&-ZBgNV!E=RuwVF#G5L8E;AI;8oXLJ+-U zy;S`=48WEX%7A>$Zod}{cNET8;a>+d`h{!fYk8EpYCu-2tY)+iDh~ljCp1~Bb+m+s ziWJKZ7vpxzRyZ%Ki|0Z-!8Qo*01%f?Y)tTmy=yf$BvhV8GJkwXUNK_@}hMv7hu}kZZko&Sz$fWS{J-gG}sGety)!X zEpx}Mh340$oG777L;3412gN!i*?>n+aHr(c?~P+tM)+@~an>NH72YYUYo{iS;7#XA zgY28h$AP`IT= z(W~~(=W3XjnUB3Zteihd;p$e650j4_(qE2##GV(Jj~{*umqEvU&QscvPabi2@o%Za zb32WZ;wIhbdR$QB7JkjJZ0hTnU6+a`+_ zfJf*rOz|H!IZBDUkU_G){qsOYx*fnLmrwEMR66lq-Fxcl7e)tm-L?T=Fe#IE`Z*AZ z%kbtfLcCKYEck1fces*oKS3Lbt)^t}U&-tGYioy>QU{!90GoDg@4v*Mbo_@+DZ zH3%{yg%~bXL~Pje!F&D=6T%^}b42<=&3H5y84`syedFxPh&7CpoA?G&)mqHEV{wst zAW2SjvV>#+pd+#1B_TBkEFfZs$p8W=F5F1+%HLa9*6j~if6yvc`-8Zh6hJZ4|B!)# z2C%%C3&GOCI$a0a;$Ebowa*J_xa=8h5>cn*bUM?*t&eE|o6v5BU&4TqcgNHeE^)M@ z!*yv zQU21fqF;_T0_%wCn}^X?T|gK~^WCzvhHr?+;wsrHn9`LLHlK+X7i`%*pd3{VfSMf^ zsHX#yTTOzRB^UHC&@RobY}?^%M8RFKIlyvKjYq*LZAMj}0;MkW!yjo?|0IDVRpL`T znYH5pJbw0&t1Ik6FAze$BF9OI&-AdFJX!UsVctO;eu`w~b6UK{@sP1y)^@~JPBJa@ zhs-Ro@?h}XjZ?#xKen=lsuO%i;AVSW6@pf`pCLO>SIQwlAf&lF*TS7((N4plXkxAC(p;&*sk34vtzGjI(hSK`CeWU z?+`^gBS5TmwgXtVR9;4{<)&xj1_eT~l_kG_T@LhE`*Vlv&9*hEC zw@kI)&)3(xoL!DTfyqDYta{Mq{|QXKs^VjC@Yvn%^@FOTYLl9yy;Pu65;XzD!ey!+ zLrG!1xO?7{T^fXJ=ieCagl{k2h9eRJ>c2C-ufMJpktbe8Zzefd)-wVlO zY0$0(z8)7Z7-K>REBFVn5D@_(j4?2q{Cp}|Lm&WePqTAs82ly*H4cm~yQ8M}u5jWi zOAH*kpjhfzqvGKh;|>;|;Ei%GRJ&=C724K9cLa6`_Z?9?6Ik&{bi5#&JW}HcEpwKT z;6KZF(27$SFzK|&y5`u>TV1C&H@m&4=M&&#y3fJUWB1_B z;f6o}&Xu4*F8u$bE&nASP5((-zT3`ryaphM-XP7866-Z5H8jnY|Ku&3Vsn}2qJ~}j z1BH+`;x?1lEB;oDN>W{?&KDL4_Jw$dd&aIpN_P^dJV>bH;j^tbFQAD&Yt6fVhMGg<3+cAXPdooDt0p=RtHQnD$~jo!1~BHJH80 z(RFp0?qEM%`QL^6=?bPpUE7^~mZ{7bi5Q8lQ}`jJfiIjp&&XZVnMW-KFbBqE@d-*( zsFAgDmAM!@NnLyW;jF%C*oq<>soVfAzQ}_XPY1veD?*A??$5rKo=B?;4Bo_Mzi=25 zZO-w~;M6?aIT>F!ex5;MC=u-q-`9!E968w}hPG^PI|J&A)&l_|^>AF!K2qMp8Ov!5 z)*>E!6FIX>l3VMNd8=0X^MY}S2X^lV8lNtW>-eqb?IbGV-$^M8yYjttrOc)!s)(Kz zDK&uDuf;OE`+*nsw&?OB+X5kJ%xE2S5vM6CTjTf8zs@7et%ztvP+A)1&v1kxVi+pF zkMEsfohK%^`mfoBXp0EY*Hf&5(%Pb}x7&ASwdL@s<_&Q5pjM36iLX?ss_8XF5 zR^b?h(s%3Bv!i9ucs=?((8+AT|EkIeBFq5N0{NAvdO}6m7MM(`M)!hY8teVfUD~on z7x}TEh7}4C3g3oMC$K}3_iQdJ+|U(jp^Tn%1~QGxoDd4Q)19!g)xh_g)L+ecwNkB) z(OxW;UrLi>!oau_i>WI|!-8&*vRtJtC7^4aW)ox>q|O>_w^UN1i>;M15txSW2Y3J? zR>H9knelkIP5;uEVYyT`50%X@Vi6Ct)x&S&+osZxiT@G6yVO~YvWy0lE(JGl}TOa$Fhllp) zJJxCNg~YIJ`h20@+EEjXL3j@F(3$)%s@^%cvtWxBj&0kv&53QB6WjX5wr$&-WMbRq z#I}Unpt%BRMWs#{|b*JF*uyJob7&~IDj)E z`{d4E8`?GMavmlup7>e*=l^hND|IOs^Il2hMl_?KaxFWEO}1X|d77kYK%QD>NApA&oJ|o1FBC_apSl=v09Md~w(GQg1To~)pUV>fChvV*>Q|-gp z5Pbj3x(4MhRs<1NjqvG>WTPk=@fl~cv`+=+{sKXmf;Z{tc`M6xfXWp0vG8LEsT_)42H0Zaw23p4crH(tDdxJTRwd)zC?5HYCF5yMu3Dxait*#$2P zJrVeOp)0%v?{Y>DMuaa zBPVxU`4Se9ao-hx(s{S^6IZy|xS$a5h_I^AI)3CsRT}=?6W&u|HP~B0KrhIb=PCwJ zuOr&Z`#WRoX@X|6dl6&f{WXmo96>*F9cblKwvcQPV6~X^iriGHR{NlL35KLgXyt3A zYQR7!G{0m)$f~B-@5~9->)asGX%m}@4ONbdZu~j&65e8+1uoV6+F4h(Lcdu8SD-!G zlj)sJF62>12AJr?`h4kMHCLpTKmDXq;Jp9ldPHh*r0{1`P`$rddU!bhB`wEa_c*r5 zQHPk>CQX^}Ca{KL@a7`}yVgbA=T`BXgR)DFrE!Pk(pk8|UtPlvLh5PMx)h{Zixkeq}bmxMn)|32`)R#;?FGg z(4;eRm5RCCbKoh@W2?K^lWFFvKV)2fYbKNqP~1=5<1 zG}r>gWj_X(elyFNWMTUevofOL<*&a$q9Nd|~FyRTyx%7Oa zVF3wSd-A4CI7~;jSlILXdzeeDNW^-x6g%l4j(kAGM%0|SlzNU&?jbp^Jg5`-<$<|I zR$o`rpEinujs>;mQXe=t`e$>|*wid|uHzF9v9b)1wTqqc`_Q)L*rY~rl=@e^A&oKj zncg!kgIf5FOXCp)TYNYb{`{_A0utO2lQR#v=qkTyiT83m>9-lMZ!QkaB?mGwaXN{d zW*1mA>4d6b(bIdrYgjF_OXG4wNK7AUE{kyj!Sp}s3^2$FkP3wI0)H*3-!ub8T{~*} zYWUg!(ef#w(}xD%__{_!yOg3X#DjksOzQPV2OK;6+?EV8sC$E0(r|Go@n-Z0^hV<% zBg62>rYjAu&6}jyvuN97AjsUyhpw{!{3i~MX=0B#!!EPXMkSZVmM`DcQgFYZeYk6H z(M(MkMRG=e2Ok>s#-{p9@R0&AW=@=c{km8JWK1|*T#DY|(KVP@?9nHP^yM9&SK44= z2Mdv<%43;oQnTHMd&^SK`}3qlfrhc2Tj(;6ExUh4La<(HwGqr1?}RA9oktnV>oa!z z^U~tlICaF0u~_Ky@*WaKIjiArWv+jLiz5BnIu1<8er5(ImQ=>TT3ql&`ON_>-`k@I zpfi5O&rRO(OmxC39h&F#vwKT@Dz6c;beIxJeXr2&Lv;susuI$GRI7@S*1y&Ju9 zCfb|I#f~fhj-B#tu>3Gd1l8{)EZ>^E0AfF6ME6xlUcq#OA>8A7+p80uS`^T$qsw!H z!I&5G1bbD*sxn{)r-lA(MwAzj!;*@51Thy(W#1@qn#k$MkAkK6?#9eir%bB|Fo&BMWOJ7~S=I9FRg!-x|ze^v^%%qA#yPwKKMtp}PK{n=2 zq$XpAZ@?1(nP_N-U4=$;Pf*n)DyN`EzK@}%yt)${{*j&lK%;5`GFdyL*kJGI zTXBx<$_osvk?8`$9-^-aYsHZjjBkwdN%6dojq-08zBp% zGmOw4o8$9aLM+zRbhvqfE-9x(S=bya+d@^a9k%rp&qp-k`z z8Ta*U^#b{F$N84u;jr~Wl~axTAT~UBO1PS6dj#-^U>+UJ0hao1c)t#q8<%J*=a9VH z%yJh}&i(NRiYY(mg?Z#@Lay;)OL%@JV{njq3X(Kp;U6C|NbuqTpTe z3Hfu17hIb>#IqR4mUf6f<4 z&w|O&)mE)4T-`1PYZ-rgm?Jz{c7SNUEE}5S9HCTFEJVHg1T$S_9->6-qgfyF^Q~SI z3)RsDJUhXH8PO9Zzb~9y2@Ox{O^=L`Jn;&Bfc8N7NjhYo1M{(X--Y%7TCv&Y^02Sf zhQ8a%Z(RqFg0C@zS%hv5q)m2EAm)>K0W0#fBlf*kecLqPKaYmCI!Y23j_%3V;{Zz> z%%pE){2eVXmqP+m)oe5?btP8VJVda9J4!hJYMcECcde(#Cu@s%`&TfqG##i!4kQmz z&WO5rrlJQcvp-ps4xMxkEq-wMl`x-LHL|qxIKk+GFniP$;+_&7A~rMjx`p;oX_)X#X4Iv&ck@r{p!X4U!Af zYYK<(WWf(jpoG&cU5KYN&>uL!Me+G3)>mf#IE>r97{duAUBOjqK}RvtM^DAHkRuSY zP_?{fb?Dh8xf^=PonXJuq49x{eBXA6lsRPhmYO1F>I>=mXBFh~RW!R)f=aH>rk)vK zp#j%V5-{7e9bCEnK3AS9GuYsh!Hf8hucZ)YL&ahS1OXovlJW0g*%)ZLzT{vp+u)M_7>8_K1dU(Q#}l9^!M97L*>Uf zPCBcyu}mRN?^a_V-Q%=Q4KX5iMGopKprRqe#~VoyXa5#_%nCcN{*hwJkB^7o?r_N* zfn7tten$0nyx*WioDS+2v@ABs@QO2&brU%Q0P&TnvJN{x?v*Kt_N$3GC;L#q-Avb? zKQTGKmN_o{r>Drvte}2XDiFh>snZAYlG;jfd#Mb5fFMUjd^YQ_i9OcG>>x2M)i+?g zSW3ppHAwv_ru~gNY5LH^0(KW2(_T0E=Y9N%WH|UuV9t<9)T`l5Kq}-jCa9r}+`~KK zw!Wt>WMKJ%x9p~t0FltPwC?o}pc(utcb(}NYuLOv-*dg)UK|hxI@uwo31 zrQb!R7G__R0{?hh!c|DGvP|*|y}B8BG{lleCU&ieC57-w(+%Rt%#-%gKHe}swJUK7 z_cYV_Lz3)C7P$3=c`?Lm`@bxQg*6Sh2MjH3e;kt*aH*{mxAET`r{E{YarVSaF(#aM zQ@Id8TQ!~i$#JR@xUr4QESD3rCjVY@les>c*{spG3Lz7bs-Q6*-{oB6C5ju6;Cvol z#XY<4{6%GvmMrXuy&^11mvA%=XCmn|kRZea7&x`mBif&@+Yv;j9Y&6r-|nrMzf#he zrUE!T)%=cib~gG;TOI|$3cmJG)gERx4yEbmB`gY}hTELS4IBTB~*HwjPQDY_%^)Q@MIMr zGxO&nDTAReDZg(wlxIVx+^8Iph>N1inx7Em4!_N1N--2TbOO@>k8+kB2-lTU&YdlO z;{6qUYC|YrY2xqT3b>zvTVUQ%u8gZBh%!>2c_Sr2)_oyW-fs)gO=uuK6 z?FO$3Co3@O%I|+IvHjA@D*?pO#Q+^hAa1((zf}aEJ4a)0kU-d*!s>08mM0NsH*(V` zpDS9e1ISAx(Xd@^jLTh81B0fO_067FK!oOEY8#Kjr<+P)vRwY}kc4tZa+KLrMWyu= zGyd$5%F;2n+PIqJSUD;K26J$geLB#z_B;mIxNx%m~a@}7lw2_L|M|Rd(xUnm|er%5-?95 zLCxbeU?h0A6M_#4N8_wiLqK<2*S<~BJe-5*By%OLF}bu#OM|jAfaqKOdQyv`4f*YBHZ2bYS0H}2v7L~L66gz zltDwl4boKCMIx6Ui`TI5vnJ!F5-h~bn4c01s{?SS*(q5At4r5okAQ%bLu>CLHplB= zzjmZ-7H^CF-GQc7m1}~JUC$;3i2fH2_$z*cB_qOfB&lJD(J(N7N}OyGyT`{%e{l_E zns6X`Ja83$oasA`L8680lAhsGjhL9@a_SO^jEWOhL)p8PL@)}i+ zCFKTiZOPba-(T4*6o5^a0YlUxbL<(}EwV_MeO-f9ygJlN%6CHMs) z52fy3NkuUD$nn8cwS|3c>BI!_6+{%N-HlIXG(_BNwvcI}oq)l+Fi;ayEe->LTr<8!e=y;#U2*7mZzr}(O82)Y2UAv`;^v1hhcc! z%}`x&NnYAYL;+IQ6zU$Y9x8XzdVxT9mMh-0XX`bqA}ZzYvXFu3Utypz35J*)%W z{44_)GXb=G8ZD1?Oc}$RMT1ibP(H97oNRzK+gW+WRs}rH)mJ;gFvkNx-|KwpnVd$J z-9n75O&4t5${y}tD+1+*<6e`@)B^p^(Gk52qsV%VPJq8`9JyCJ^vX_&J{Lf}*!9vX z)6Z(LKR##bu>9AZ-+altXL&lrboV?PFc?gZPpvW<`uJg$3Moffm%V2~*spOJPW@+r z-sFkm5VR;9+Lkz52}pbIyw(2SYC#6JcUN!fMrWQ`&rgbSyEZu8{scJNLpz9J()P)- zrixnkQGmC%(e z7(J;0gsD;;i=Kgvsd1_fOBDVNyyAT~dESg0g__$;wF0>H-#t4_qZhoD%xsnD@wgKzaRfz4u^ zfjEcNH*p@1rVIX*d`<9jSNoR%Iy8eM+{g7`LYO+1W!LN_$c-lBr6y7m`3h)SCtV5F z{5)7=o7?L*A33Z@^!&GF6n~=UfLjaR+CgysaPaV0IH^LYf3t41bL?v^Vksy>KNuet z5THmg&-E)-0)#HPP=5djAGPN38V7XH49k!U`PVn2zds_dmP!sRSo|hML?<|s!(g)L z4j5GXtmx3kx6n-&P#`n9!?E_&&4*(|G#KpGsPx%67zS?tn-|Jm4yYJ15ruE&_ffCW zQ8|^`RpdTTyBaH&`osLI8- z>&P$d#ip#|BeSDEGc^u@1*=#!%vi%#)C$2H^!sLiHJee%4~|_UsO_7D0Qa4XUR=Lv zF#8uL(Yt|7$Q$oulfmel?dy&Hf9Pp2q3n~pA@}l!;0K_He9_*4@Q!sgPL;xk%K!;N zVK&(2cmg1a8?SJqD&e}P&}n@-)}P3QPdWt!g{7;dyY#mugU2> zC_uZN)#QP!AS*_P{2gI<6F+SC<>nXGu8v9Dg2_t)iofH$-@CIssgemLJ%SXy0t08- zt3ZRjRvuLvWsN_|&_nud^oandU=%8JMiAIRTG@%fF;jz-{H-sw!M+)|GmCs-4IJ z(_PqfPgqx4zyO;O-XCA1CP0r@tgS-FR_TUfk(&fmL%;Fge{hlwT^0}`Ybb~x>xVDq zoOgx=6q|dtcVYdZI<|fjq{g#52vS{L3bnafXs04ZY2GXIrD@x-)h~RXBS7Q(l{yv& zMY7P)hhmt$h}#xvc+o8XwkAp4$clm0mog{va{ZkOV|@`~uNZG7#Zf3cZgJ|&L!ydA zzJsQ|aiuRh(j0Z*ehex(nA7@hK&jKNFTvq~In#ip;AjClI#IeE$Uk^^!3Y_m)sh@0 z6Kt1tHW&(%wICU@-;Gz8VdEs2f#Lo2eTsZurVNVv^N}nkhnp**)MJkFR!OOLw6aw2 zH+RBWF`46a(tL4$QlseD9>+=>WQGb>_JQ#XQ3e=YiFSW z|6w+%j}5@N=?<48H7qn)v29{z`iLkDUNs3(A6r992gBE)_*O?tC}#P@YHl%F#y`nl zJROgT!S6mf@>0piFdn}fILch3ZQ05K%3QLrAckX^6X4~g=d(BBi#JO}Z)8(2O_LYT zSf&zN8{x2|c>l=^1bWI$YQS=9KZgmZkT$`kf?T0nn zmsO=w?R6^oe#E;gXwsyN{ioze`~B6AG|wvB^dO>DB`}Xeu?;yOfuu}!xZ|@k<>z)4 ztjv?Z^*fEW$=F+JlfWt3=F-r;&SpcUVi!B6(1BWLJFuYF=W3=oLz&(PG7Pm>xaF8^ zzcT^;JWq8I@c2;=(0pMGEGkk1XDsRq7AiTTOf^+iP{QXUSW!N}Ef*U1HPoBy#mr?F zE6&0q_i1W3{fb-M!ztA+bm9YIAl&GrgDboLP}kOklT{33QOEzz zrh{GP8Pa@(yv?{*8Nz(#8R}N4gWhQUp`r)8e%YCAWN%1i&5mW40W1{T&p9s9c_aFKHiogpR zTm$T{vgspqHGzV@3-67mrnx zc~Ghb51_Lb!XB*#YlmYAOT^Qoak%Gf{$?DPb$(-`{Korp7Cy%nUM|2u{<;%Pwj5^^ zdMvh)A7WURnMxNH9`lqW-m}FZ`^e`sFq?v@MvYk=+mj*O*=9n3fizncP8&~+_mYX@ z4waJ|zrMQ_qQqDuCPZ29+WhF&Df7J4TqgEuP9HW&&@Bmc!M-vu8ug0Hl*umXINKwg z&5xB|;|CuITo%!>Wf>sf69y37$e*RrMUtV*RbQnPH_?3-+JQ-`i=IqJFii*{TO5{?8(Z`i^7YQ;Uhn1M-qggw zEnnm9v3^|gTrc1#toePy;5!wE{2xRI@pbp>-TjRHUzS9bnqb-fSgeXI)_k`?N#e|! zI7m{1&269Dx~E^}hoTe7n7Z+?q`w&Qiiti47e86+aGR_1{_H35S7C1RQW>8&y;fWa zCTP@l)*2sK*M1;qIX}r3Ndq_-}4@B zX6~Jm2CcFr0Ng(x?`|O@=vP8lj-#qW9a)B^aC&8lXjP4tmQO{cU*YwvXSmnf-xmWg zF^f$h&y_Yz=p|tmF%E^mfbYT4WJ9tbs!um!9xx6ag6qmcF1HbWbW<5wP&9qSZb`-K zSPCc~#~e){=OiMXo%v%WR#=B_G(7K2><05TKix)(UA3vpHKC+Zg^SMpod0_D3l+`@aWIhsh!>8sZEBSm?OnMU- zY4eJ9YGbLm?Q}nI)_b7k&1>1laVc55=4CbwbzRa-vUA=EALNGsYQ z-GxU`+2Kk5XFmbN=Xm8ey&oCCCSU~7fY&Pjha2Jz)iqxBG8EcshZLFVyPCwDqb@wawlY(Hhk0R_GCzmugxmHt7NrSSC8M{l!nmCbN>{k zp?KK8t?#4(&m=iKoRHdcNc|HoApnnCsA&h z5<$ikEG!#MbM{;|QI0JmbU)<|bsR@Ifp~CiR;Xv~bzu zg@D#l)Gdy~pOEhC6g)u8aRS4PUt89Qsc{x|U0jzITki0LLl^Q4X&T|4yN$e8=uQ1Y+a;55_ z|CrU%et zc5gjZu)xBR0UqI_Bg(|5&W>UC$jy62{5IV7lfK3rk!Xpib>SCx^q5G>h%YqN}XZ#3YD zsgJ<)bagR3X>ab=gctP{q4}V5oR&3RMN3QyDPI(8H;gO|9gct!M9m9OX9<$3kIsA228?$+Th0Gb<*4nSd0Dp;biGva=0NKi%yR{t;sS-M)+q;KE~ zY0}x>8TG)!lI(l*R(^`G{qAvJd;e5=Zy%QALbsoA8z`wbEjsW%eJOzvbMn>|9^k<7 zmb&>9SPucmls>!9xgN(MOsJ3eFBD?sV|+nR6=C}}xZV0L3A|*W`-&#n^*uT`065d> zSGca`{K(ED$_6}gq2xta&coOezoe@c*2Xa{TQxMA8-`Sufi?8sObfB$nli$b8DEVIU}WoA9&~@E%aA2E6BSw)bs`JUOx;GAM|jj@Ty+9rL#dbjsyEWYPVB z>3*BmuWLwx|Ysd^zSnbW0Vg-IkSLhM|=PqmAMJ%C7Z{Ev|wG( zoFoX13PW>>3+&H^R>aT=+4CfEWhJASVdrTJ@3WJP#$a0OqmcALYMl1gb;WEV8>PgV z*mY&Xnc9E-GyPNpT;x$d4@eCE3f;uNCYzcqdEm@FE-uv0V_j=A)dqxK%#GNkRQ=vH^D@h4)9ae@+ZStm=K z7SR?Svh#1E)j~z-St=a05YPA@b{uS~dpHA42EkOT{mba+_N`_b1@vy5*T6upA`CkC0dmRR6mEfj{e z%5-g%rLA9*n`nC4z%p<*T8yy5_Nx?nMb;WXE^w=P^|`FU8w^j$E;t~Gbvwq}hTa-l zRs^Z<+6T4RX<(P30MZMe_v965Xu}$u>0%`T!xe5(MHo&CEI`tR<92P0hPHuo^9WQq z2&s(ld6xPf?q)hcuOx~t3W@P1%UA}zvpi_}itnR-eJDZf<+G?0GygbsLUVmLR1(*8%P z)KCbctS$HCsc6bSor|We%y`Xd5bc2`UkmX1p~ zmdMAKA=unFtjbD4>=cqv!RS{E@qJBat<8lCk7*7><^-$B)!F=!mV4T(r`hXr%@Ni#9Tu zW8wPxv!H5w-aWBX&p$Uo4G+vaGM6w^y z&vucHQzX*EPH)16GeE7mY2u`ILu+8AT|>56>6}^ADf0?lnHkuc4?5)fp)7NIEcXBa ze{nv~72_qR)<;^Z2d1s<+fGGy-n=EUa{AcmHiFkbijUQhp2bVY&dN#5G%k#g>Q;U$$dl7jNi0;s}; zzPVH3Ws$>a3mG%bkVTpIZy z5?xw32pj?+MKZDwh*U^mw^axhs{zv%o)Pc&PX~@U3;^i#@3l;hw?~o~&uB^V3G8$Lu)KL#uk zP~|jS%&C!WKOSY1e4Bbl|6UP)xhR3$#Mm z=@JyMrH!2>E@i93e#IZ)ry`IDBc~)iUwW@LC+oc?DxF>>Mah3!&kby>sb%%0tT-oi zTxA@>yX_jO`PN#|d*O=j3`S?p`C~>U<@->hBcp!4EQgwEa=x4-wbqGUEm7LakytUM zHlH}@(JF?B>)Sd68?AkeMk5>3DyAqE)aD83eTb!Sb}S&E6)xC(tMdUUpG)m+RWTYK1Cd>a{bXl*5@q*9)(U8zRh+&fQ+?q>0@sIR*1X;#Kgm7$27&hk!y(Aw2H?mOvhnZOHh zTL{*DQ5)Eo9RvH|il-}H4xWEsE;|Adw29u zwveZ=(^GrDcl7Xi*`;vGjyaVs6r2OdAQ`Cngfk!Z4DO$!6?CM}L! z*(f@C)sXKS-=2opvm~Brv|f!c^es8&nN|)#NW0A@=Y_Eh%0f_8fEVhOI&|D^ezoA* zVCy*KO+4Q$O4hRCaDZ)P!b3%HP@2_ zy=18Z*{L<^uI%vsigKBW#Mi1wfmW~Um{dNK4Jt15?D56N5y5)Gd6Es{F)sC9DYzZ{ zGizq2h&V0u0hJk|9{o$;*%PRKj_ud-;wcq;-IIeb$AMbbvFH6FvCeZ*dafs5OAzOj z-+JRf`@lPeU%1&V3$hbH4xe5Vt03-!>mLr2?pD_&$U=RFw<`c03(M+WBnlsbf=vI2 zkS(Kysc3rBC@dlHU;dq|p(J1ZO9PDVMw3&>)C)ISoZksLn}h8df@AC~ zoxF`tle&V%G@Cx*OW(dxW{VC;vwO!RJZoTMSmt-q5wEDSm;fw*e5Y(-=j$sjIC@@s z2A}$Q>p0KP>t0ZM+C=$>(1TM+#P^djDc6sA@_6Tyw@R>b&nEH?^97E9A7cKw-AfG) z!5aT-_xka5wUGUFd@*97-o`M~VR$Xx-^P#qPCew=emwQ;x~)TUzc)Ah8euN8^+K1>@L(I)t#?BZuz z!?^u*|8(>~zkT&|wJ_pIB&gP*=J)6OV{hy7No33KWo3hK=kMpy*D)J?M@%T6Fsih~ zDh%Dj&;}yb@I6#X&A>xwoY3m@GrleF_D%^7O30!}V|*dNKB|ZQt@R{o+%S!-7$Y$h zjYs>$qCi9>EEEAAABTs{#p2|I*(ol;JKBc1acC5SROkOJ9x!<5Tr^Lx3QU4yk$J@b zpTz~whl^jDm1Gx!VA@W}&r|=im$7MN0=0N4Rt8t`tZ+flFUSxC7<>R8KbM!o!|q96 z8i6o6#)MG=9>xTUDhdyoi{uH^#8JHs!v8a|FJoz$n8qZqi(mcktu{^m5j^-V+?p#% z$5j{gcY9f{m5oMutae^A*H4N_Tu#jN@+|Njh_{b@RWw8yx_g~fHZSoRrU4g?V(+D` z00IK;0&b9))Em2I9Me-GXk~~0E*B0{8{Q0nabD`fqjKc(*oPE!%3QGNu=I^srsCXG zzjx|cNGds;C}kdcTFD_i0X|zT`@zh^Q>6hZ>EK&bi_Ivu4Wj zqQ@a~U1Qt%N*H*Guc`Od<|K3-s-rZ|x78-^uHFN{IX>xGDo4dey;)~K&DQ-q!T0*Jh< zAnp+gH_bcMv!Z{2$Bcb=IL8mW)9Ac641bs-?eA_@_|!%gls_H(>h2%GkrnI3;-LCF z=#GzNp;3&)3x6j1fC*S=bC4-kqs$}1Q3v)zsJ*v;5*1t!>3KruF?h@y@3=tS+xrH{)1Mf z&N)^2#1H9tSATF7b}ZsBk(3ut5&$=`fRWbRd85}TJ;84N!*+D!nl7130^sevR!~?l zsj<8{X10ix0;nCHxfhs-pAzv(wDe7-)eB+e&eLi6rJH;t6fc1M!hB5y0rb^W7?F@h zN3w`JZ!f>ZO5vt9_#GzBBEZ#eh^8>hSxR(j{j%`Xw~j^#i~WiOd{eZ{@!JlNbQr$Y z{_$}6t)2k(k+`<5n+0HwVUsghX4a|3Wl!&6pHjvrbIci8>qMH;GK7n$FfN#;-dIqn z9nUfG?kB*#=(EGQe{Bp!0h}|aZ`>|jN?4rB)+Qz;X6fiz`G*o<5sjPcu)$%Xq6kb z40hJ^5=p2d6D7GFk-(%xudXgG`2J>)BM5+Vz1Tk7FP%Js9|Q=CD`V?!fk#4&TMV+n z*4hP~-&}`BGIe-nm5%M3f1$-x%N`0oxonPTWIv(E= z{}ncMXu<%-1XCj4d**A$`(*Eb?PDTwAo%IAaSI{q!+~(q@7bXQ0ghAkME>ZJZrTra zN0uDOq0j=zCoVR?gEh2*p@#uFQvK?VWLD1~!NXm<5-5m%1AlbdE(_s}cK75jaR(C- zyD}fgNxAeF?Csg#_khvFhG};OZB$9Ueo-`Ts=hHH&^q? zC65iOL`^&*Kl~<9&3a~FaXP-Wh`mMw?l~Bh*|^{1b#aJ)Nm45(Z4%Y~7rWjf*RQS~ zDC1v55I1nU!RZWPU_acnDUV5~=j+cyehE}!wB$!5(9O1mQf^f0a0#f?2J>s3*>%76{+H#yD|*MB*{MHkrXX083tpZ*N4+~<2*A~f6!2C zCP(n$UN3DoM&5La+fTp86{phB%KS|xYwiY7&2xO2tD$9*X$rU3=3ym)bacDTVIKn% zvUF12w>^gXYF>H?C)}v66d5=niyPI9F29g^k%Tb|u_eISWGZcxQ-|!UK3J5Pyv| z;0`&3X~V!0jm&(#WqGx;G%BD=dIgF)CjIUntt6fdJmHtmBA~<25Hgc$SY;J^?X_H~S8hSw zze+(%RU)-5-oCk6oE1Xva9yz2QgdapUXag@@QVw;*{oo;C|>5zEH^XT+ODd1liDG0 zosh0TGPNco1ORzYB$}4{e%S&99Ke$4KX9FC^6A$CCD*d+wekc2^U$ zZmtY`q0Auu!;#ILvRRiU`jCAYEnsnCqeBg{#ZOObHb1YL0gW?!UwH$B5KrVtDh)-A zz}7*NbN^ToZ0b`Ot-+I%lVrLHOMwqU!E-T(Ti*SUjfF|o)!Ku@fN;YV#82`Nt21%47UVo;^Su#c}&w7UIF%_QV{BB+3BUYQc1}Gzk zQPRh8>(q<3ul|T%lOW*a%xI+U2dN=vW4vthO&>L_F1WXu3@ZZ|M<(7I7UN2ubdtI# z1vPbx*i*@zpYbDqoLCHWuNe$l?noU8!%Ic#j+Q!`*e8LK)O0@@$-%L~WYJK~Wo9-8 zT+}Vr@U1h^epk8>+J71vIXXISm{*}gjfJj|3(hFS<=&q~E%{=PQ{;@Kc1=04yx^kE zwL=Sfun!}1h|K}W!&Gr~T)Re0GtgVtm7RrpF?^~XnDMnsMAp~THPsU>e>b54bufUt zZuJ{op69pP!w?~kCiai0{{wqk_2WJc8k+peqsWT{41=S~2bV}+a+9PM;=St}J>GYK zF-BD^O1;svBiJmuzswsBJS8ebo|#96__(#vX|?+12LlRF&?rg~Qw5~}DOf|>aIGn= zoLKJ}GG1LWN|tg*-vS@Th7?f4#9|Cr3SlDO85z;+#(Vxrt{-iEB=e3$_Tv#xRqltH z-r@x=L~1aJt~&d#Bf{T zf+jOu?isDU4O!s@OERNaHCg?5|5N9sJ(4BV3fX+z+govEDWxD&qO2yB6D5s6ZTcZS zN+B{&G!<&vHyHNsr*^6g&E7)1G;5Qjed4=VNR{TQT0}*qW=~aEe5jPL9KXexVD?_F z>OE?!TUC&|EpC?}|@}yk` z)we*qN1J`ISanuxQ<@~VSi{l{YTcy9KwS4lm8s8W(V<26H4Un6He4U>N+Fn>6GpOz zQ6HyLcdkzzfdwA#j5AgXDierQgJtMM7m2gRH*JA*m*UI-2W-M_mw6BQlO=U&}Lz7q9guo8Y{RtTCissNk0N)Z2g)Uj1^I1^za_jkV#Vf6e(?(=}1`ZLf-DtO* zDbU8RTOwa1DeCHkSZvu6gXgz(=WlMN#vJZ4Di4GD?Bl9uj}~fbWSgQ zQ85+9yPmwJ1CRNrLS4>4=Wv5VYBQi&6S5)r8lWC%CQ~~pCBKgjhSaf zyWNhKFTBX6C{gm#wK1PZ!%$Ge%Ukf9huA)Ij}^nq1GW?9NKBg<6oFeOxM|q!T?6GZ z5jlF09ft2O%(jjMA29CBfunIMv*4LV@VBb{9U(-TMwpaj@}G3H7NdzDvVPCl$=7{< z)@?Yvy{opxg_i=~^Z*_!MU!MN~eGU|U+)c>-KfcZ}IFhiB_8Z%_jSVIn+qRR9 zvoSX2#I|kQ-q@bl+}IoY=6&B=b-&%JuIi_1s%vWcLr?$DbI$MJ=H5Nr9nBjkY77Az2qW<3=TMUob_d6Vhp5_bRf!3K@ocHS%&h)K>t4>Q&IixYYx%cAucq;#-L#Q zs2qzrJ9;|o6>_jlrEq|x))%cGNw-!lBfG@Jdxu6Za@csdp;$V&bkN!0n zCIVH%roWdeBAng_mpV0BKX5gA7fp@xfp%4&1HN$p1nm~9(9;mSaP*;Ha!qQBmo~*FhyUi;9j;D{^F%dq zu=Xkk_eeh#uSxH*ly)fVFy%64bt?tH>_8|vES=x-_^_9u6B+SOMo5@h|3Zx8TFY`v#|qinIG)7)y;aq%H=D_eAJh zUNZQ0nzGC+%wDl3jZB z<=4D0%zByCJ7G)Avtl2C=_^+WO9ypaUjqmzTbzqTaVYj8fqdOlnR{^;HQcJjXwi8D zAUK`*#f}!{pQab{yKnQvu>f!btuz51iAJ8Fe_tpNU0x)$GL{qPEc0SCJ0e-396;0n zL1Wd3q?OqMcsA1{`X%6Jp%H6O%$CIoi_=m3+%)3YZuf51DS{;rJLM6#8SL*+8qfb+ zU4o-fs+Zm$fX$mFcp43YPmZKnf*$}Dv&%1!p5Gc}3<(o8wVf0x_x($c?PpZ15|&Rh z*)$@wpV+u%&G<}LnF)0n*~{&B+r4|d0>W~HrqCN(!MWuEKb|i>JrcNmC(C_zgww#> z1MhniW75*sd3xT9*aDg$P}qX#J{KP%zYsnk)$f>**47>jH{cMq8!{_3rh35Scc4XM z>YaNroF@HiVz^?zVVdd0l_Jo&YUY(BxRV^Y2HoSN0=QbFG=c&i9jnFY*x(PSk^tIC}vdpYM-E=;c9Y zY#B7v@A&ForCvp$6<6P|7F*!kd4j@N$%0#XDcw|qPs&B3O|Ds|V!2$oLb<%9eV{IX zXHqGp>Kxr_(!-Cov0K`)DsgirHtTrp$Vna3C2}(v7a3cbMx<=pV;j+51U&0?&jy*F z&9^`re|hjs$RBVv=qr@h(mRbvxwcO>1HT9a)~{DXW`20LD4U0~$tD4{3ntOc7;aqS zM^5T8H%!G=hM6`u+HM+G3DP=cOKW!2g@09$CsYflXiWa=W0E9vIcfX$VIDe`!7^0n zXmC%@V$tOUbPE+0(|)7lFO0;{tZTrk#Bu8_P8zMg%0M$blb zdh=)v5(@QzG@dgop46)Nn*2-k|EO2Z!>Xd@Tu-JvV&B@^6ITIqw)J8Rtz9$Xt%72G z<0Nou6}8ZLvRb7BuZs;M^h@m@nkq$s=w)B0z=~Gi?7_1j54o@?Bmx{dQDaqhuJ0`3*xQOS$fU1MVFcRI?j+oVm6 z--3vQzc2k3bxu|hG`99WI1d>vVY7rxnW-Qujb8)=#LZnt?odUk!pR5V1ztxUS-Y#$ z<{G)zy>X2jiw4f>9!!E4_l-NCn%~ftFOAyExZ)lNU`%cqWfbF2E+!b{$>BeJ-SbBt zz#KX_kds#4E`Iw-DioTa=iSK9&GA>;%~!86{xA~XyGNS2$9PvCfw|`l-uc{8n2qGO zm~8UNNYSr8LHt;*45P4HBf?!JCcX$Ep99NFN&F*6mY*cWpyHACMct}lrw3?yLsIvh z5mS>Ik_kR$J$43av}$5Z3-7*UcS2)AZ_Sxht)`VR#~85M>hb*2#l9vBZkK6ZJ|+lp-q5BX;S zZ7t9?FF{^ViC-^L;S{)?FC{}srA$sI*|H(aXqPgOZExQFoT4{vhxe=J!59Bdz&jzr z;~E-?V1q>s9yMP3N{D9+dik91sWFx(OhRz_2xJQIy$rR`zdj)A=;+x|(MQ^UUA+r+ zzGK9f9Pmi`36$D7iAAV+o{4=|f*Byd-xbb^p^(J-O;V7LR{-RG+ITgaeJ!Q2aLIx* zPYkA=-D;?mzIsb&w8sCOIRRh#Bp6+b!a?L0j<)BTLQl&gkwT4;c4&=g@M9_QyeuOG&0m9M6!29~Q zSelbxlirKP4R>Q^{qlo@%0`P6?7M{eWFJ+^Ja&m;#-HBk0y`{X01#&sDYn7Mv*ffvJ1M32 z*BxqM+mu%Bt7#HI(D+_Yfs38zE#GF$)!n1;y=Qa84JmbM8sT_YIm35;mx}{eP%tTV z6Cb6I!(tgbPSmW^I^|-`O~Fl9`tbsrr$e&=3-}0vnn4N5Kq%;_Dut)pfIgE4Vi_57ijzv;NP;MQG#_^Sh4FWm>^7yfQXN>;7t(R$FEbnU}mv z^v+Id|8Q1VopfK-jMne|HO`w;XiJoK;KGk5_$GN)&DPm?sCwP4mBe^Xc{J|)D8Yx} z#`aM%dMf>bD#(L+jlUM+JY^dDrY&*}rEd13`%P6_R}@Yk--}ee0`~!<6)WMPt(!?P zEPfiCDm)M!C1_M*m@iM5APxiAD( z=UjSK+c(xt<3@F;(GW~hEy^HmAVWhPU-Y43;$IdVEbF@CTCZclgeaK~QSZKW5jVVS z0kg(&71~tjOfF9KnFP zIyD=YP*Qq2nTY$9l-O>`D7V_L_zJ&@R*2W{yVZp_wYK&ucZh?kLl8MAfEBGth1#Qp ziH2e+72cwH3zCm^vAxalCeBBEVJi09#v8U;<;(Ca#N{5n?JXK~2_6{Y{1m5yl5iuO-w0{Sa%O zL#J3{2Fj&c9F8Fgrb)v|9!KI$toX3g9marvG#V(m*3DcRvpeU{FX5hSq6|3XUgZTs zqJn^N7~q}yI4H7aG)c`+qxLuC+UeW}giD5ZBfOcNsgv_>Gb3C0)D1y6xKw3uT&&by zqpvZ1<^~o4*e%^_#r8

@@ -48,6 +54,8 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT text: ℤ; url: #ℤ text: SameValue; url: sec-samevalue urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: dfn + text: embedding interface; url: appending/embedding.html + text: scope; url: intro/introduction.html#scope url: valid/modules.html#valid-module text: valid text: WebAssembly module validation @@ -174,7 +182,14 @@ emu-const { } -This API provides a way to access WebAssembly [[WEBASSEMBLY]] through a bridge to explicitly construct modules from JavaScript [[ECMASCRIPT]]. +

Introduction

+ +By design, the [=scope=] of the WebAssembly core specification [[WEBASSEMBLY]] does not include a description of how WebAssembly programs interact with their surrounding execution environment. +Instead it defines an abstract [=embedding interface=] between WebAssembly and its environment, (called the *embedder*). +It is only through this interface that an embedder interacts with the semantics of WebAssembly, and the embedder implements the connection between its host environment and the embedding API. +This document describes the embedding of WebAssembly into JavaScript [[ECMASCRIPT]] environments, including how WebAssembly modules can be constructed and instantiated, how imported and exported functions are called, how data is exchanged, and how errors are handled. +When the JavaScript environment is itself embedded in a Web browser, the Web API spec [[WASMWEB]] describes additional behavior relevant to the Web environment. +

Sample API Usage

diff --git a/document/web-api/index.bs b/document/web-api/index.bs index c2aa74b2d..e001b0430 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -18,12 +18,6 @@ Date: now
 {
-  "ECMA-262": {
-    "href": "https://tc39.github.io/ecma262",
-    "title": "ECMAScript® Language Specification",
-    "publisher": "ECMA TC39",
-    "status": "Current Editor's Draft"
-  },
   "WEBASSEMBLY": {
     "href": "https://webassembly.github.io/spec/core/",
     "title": "WebAssembly Core Specification",
@@ -40,7 +34,7 @@ Date: now
 
-urlPrefix: https://tc39.github.io/ecma262/; spec: ECMA-262
+urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT
     type: exception; for: ECMAScript
         text: TypeError; url: sec-native-error-types-used-in-this-standard-typeerror
     type: interface
@@ -71,12 +65,16 @@ url:https://fetch.spec.whatwg.org/#concept-body-consume-body;text:consume body;t
 
+ +

Introduction

This document builds off of the WebAssembly specification [[WEBASSEMBLY]] and the WebAssembly JavaScript embedding [[WASMJS]]. +It describes the integration of WebAssembly into the broader Web platform, for example with +additional APIs that are implemented by Web user agents but are outside the scope of JavaScript [[ECMASCRIPT]] itself.

Streaming Module Compilation and Instantiation

From e9cbf1a88a2877a2c73c4651c712beb36f72b80b Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 1 Oct 2024 15:15:41 +0200 Subject: [PATCH 176/230] [spec] Fix typo in relaxed formula --- document/core/exec/numerics.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index cfbe1ae7b..38b254491 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2163,11 +2163,11 @@ This is an auxiliary operator for the specification of |RELAXEDDOT|. The implementation-specific behaviour of this operation is determined by the global parameter :math:`R_{\F{idot}} \in \{0, 1\}`. -* Return :math:`\relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), extends_{M,N}), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ]`. +* Return :math:`\relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ]`. .. math:: \begin{array}{@{}lcll} - \irelaxeddotmul_{M,N}(i_1, i_2) &=& \relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), extends_{M,N}), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ] \\ + \irelaxeddotmul_{M,N}(i_1, i_2) &=& \relaxed(R_{\F{idot}})[ \imul_N(\extends_{M,N}(i_1), \extends_{M,N}(i_2)), \imul_N(\extends_{M,N}(i_1), \extendu_{M,N}(i_2)) ] \\ \end{array} .. note:: From d5f586877a04971845a3dce2761fc087f71459b0 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Wed, 2 Oct 2024 11:35:03 -0700 Subject: [PATCH 177/230] Add Changelog sections for JS and Web API documents (#1817) Co-authored-by: Ms2ger Co-authored-by: Andreas Rossberg --- document/js-api/index.bs | 21 +++++++++++++++++++++ document/web-api/index.bs | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index d9c9c8722..88fcccc8c 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -53,6 +53,8 @@ urlPrefix: https://tc39.github.io/ecma262/; spec: ECMASCRIPT text: 𝔽; url: #𝔽 text: ℤ; url: #ℤ text: SameValue; url: sec-samevalue + text: Array; url: sec-array-exotic-objects + text: BigInt; url: sec-ecmascript-language-types-bigint-type urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: dfn text: embedding interface; url: appending/embedding.html text: scope; url: intro/introduction.html#scope @@ -1319,3 +1321,22 @@ In practice, an implementation may run out of resources for valid modules below

This section is non-normative.

This document defines a host environment for WebAssembly. It enables a WebAssembly instance to [=import=] JavaScript objects and functions from an [=read the imports|import object=], but otherwise provides no access to the embedding environment. Thus a WebAssembly instance is bound to the same constraints as JavaScript. + +

Change History

+ +

This section is non-normative.

+ +

Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated. +The following sections provide an overview of what has changed.

+ +

Release 2.0

+ +

Multiple Values

+Multiple values can be returned from WebAssembly functions into JavaScript as an [=Array=] object. + +

BigInt Integration

+WebAssembly [=i64=] values can be passed to and from JavaScript (via imported or exported globals, table get or set operations, function return values or arguments) as [=BigInt=] objects. + +

Reference types

+JavaScript values can be passed to and from WebAssembly (via imported or exported globals, table set or get operations, and function arguments or return values) as [=externref=] values. +Multiple tables can be exported and imported to and from JavaScript. diff --git a/document/web-api/index.bs b/document/web-api/index.bs index e001b0430..c9ec517ff 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -303,3 +303,15 @@ application/wasm
Author/Change Controller:
W3C
+ + +

Change History

+ +

This section is non-normative.

+ +

Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated. +The following sections provide an overview of what has changed.

+ +

Release 2.0

+

Media-type Registraton Completed

+The registration for the `application/wasm` media type has been successfully completed. From 97c2d67e8a2dee3f612020832ee56350162f1d42 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Wed, 2 Oct 2024 17:09:05 -0700 Subject: [PATCH 178/230] Fix validation errors in changelog (#1819) --- document/js-api/index.bs | 6 +++--- document/web-api/index.bs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 88fcccc8c..034a17417 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -1331,12 +1331,12 @@ The following sections provide an overview of what has changed.

Release 2.0

-

Multiple Values

+

Multiple Values

Multiple values can be returned from WebAssembly functions into JavaScript as an [=Array=] object. -

BigInt Integration

+

BigInt Integration

WebAssembly [=i64=] values can be passed to and from JavaScript (via imported or exported globals, table get or set operations, function return values or arguments) as [=BigInt=] objects. -

Reference types

+

Reference types

JavaScript values can be passed to and from WebAssembly (via imported or exported globals, table set or get operations, and function arguments or return values) as [=externref=] values. Multiple tables can be exported and imported to and from JavaScript. diff --git a/document/web-api/index.bs b/document/web-api/index.bs index c9ec517ff..7f2b98a2c 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -313,5 +313,5 @@ application/wasm The following sections provide an overview of what has changed.

Release 2.0

-

Media-type Registraton Completed

+

Media-type Registraton Completed

The registration for the `application/wasm` media type has been successfully completed. From 12bf474e2443df28dd208ba627b8bce077f3a6cb Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Wed, 2 Oct 2024 17:28:48 -0700 Subject: [PATCH 179/230] close dl tag to fix web API validation (#1820) --- document/web-api/index.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/web-api/index.bs b/document/web-api/index.bs index 7f2b98a2c..4bbc8a5f2 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -303,7 +303,7 @@ application/wasm
Author/Change Controller:
W3C
- +

Change History

From f1e8a19b947452fd4e9c451ba52da9144107e012 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Wed, 2 Oct 2024 17:37:53 -0700 Subject: [PATCH 180/230] Add a minimal Security and Privacy Considerations section to Web API (#1818) These considerations are aimed at answering the questions to consider from the TAG security and privacy questionnaire: https://www.w3.org/TR/security-privacy-questionnaire/ --- document/web-api/index.bs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/document/web-api/index.bs b/document/web-api/index.bs index 4bbc8a5f2..c086c4320 100644 --- a/document/web-api/index.bs +++ b/document/web-api/index.bs @@ -305,6 +305,18 @@ application/wasm +

Security and Privacy Considerations

+ +

This section is non-normative.

+WebAssembly provides no access to the surrounding environment other than via the JavaScript API described in the [[WASMJS|JS API]] specification. +Therefore, WebAssembly cannot collect or expose any information (personal, sensitive or otherwise) to Web sites or other parties beyond what can be collected, exposed or processed with JavaScript. +WebAssembly memory has the same lifetime as the objects in the surrounding JavaScript environment and is not persisted or serialized (other than by copying it out to JavaScript and using existing serialization APIs). +No access is provided to the underlying platform or hardware, or to other devices, or to the user agent’s native UI. + +WebAssembly is an additional program execution mechanism, and can be executed wherever JavaScript can be executed. +Therefore the threat model is essentially the same as for JavaScript code, and has similar considerations for delivery (e.g. WebAssembly code should be protected in transit from active and passive network attackers) +and policy (e.g. some loading mechanisms or execution are restricted via mechanisms such as the same-origin policy or Content Security Policy). +

Change History

This section is non-normative.

From 8e5f4eeaa1aaf407a21cf0f1268519dba8ee6b4e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 3 Oct 2024 10:51:18 +0200 Subject: [PATCH 181/230] [spec] Various fixes to SIMD stuff --- document/core/exec/instructions.rst | 31 +++++++++++++++++++++-------- document/core/exec/numerics.rst | 30 ++++++++++++++-------------- 2 files changed, 38 insertions(+), 23 deletions(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index e52977425..24d73e24b 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -1601,6 +1601,21 @@ Most other vector instructions are defined in terms of numeric operators that ar :math:`\lanes_{\K{i32x4}}(v_1)` and :math:`\lanes_{\K{i32x4}}(v_2)` respectively. +For non-deterministic operators this definition is generalized to sets: + +.. math:: + \begin{array}{lll} + \X{op}_{t\K{x}N}(n_1,\dots,n_k) &=& + \{ \lanes^{-1}_{t\K{x}N}(i^\ast) ~|~ i^\ast \in \Large\times\xref{Step_pure/instructions}{exec-instr-numeric}{\X{op}}_t(i_1,\dots,i_k)^\ast \land i_1^\ast = \lanes_{t\K{x}N}(n_1) \land \dots \land i_k^\ast = \lanes_{t\K{x}N}(n_k) \} \\ + \end{array} + +where :math:`\Large\times \{x^\ast\}^N` transforms a sequence of :math:`N` sets of values into a set of sequences of :math:`N` values by computing the set product: + +.. math:: + \begin{array}{lll} + \Large\times (S_1 \dots S_N) &=& \{ x_1 \dots x_N ~|~ x_1 \in S_1 \land \dots \land x_N \in S_N \} + \end{array} + .. _exec-vconst: @@ -2335,9 +2350,9 @@ where: 3. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +4. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` -5. Let :math:`j^8` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. +5. Let :math:`j^8` be the result of computing :math:`\iaddsats_{16}(i_1, i_2)^8`. 6. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\I16X8}(j^8)`. @@ -2351,7 +2366,7 @@ where: \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} (\iff & (i_1~i_2)^8 = \irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ - \wedge & j^8 = \sats_{16}(i_1, i_2)^8 \\ + \wedge & j^8 = \iaddsats_{16}(i_1, i_2)^8 \\ \wedge & c = \lanes^{-1}_{\I16X8}(j^8)) \end{array} \end{array} @@ -2370,11 +2385,11 @@ where: 4. Pop the value :math:`\V128.\VCONST~c_1` from the stack. -5. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8, 16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` +5. Let :math:`(i_1~i_2)^8` be the result of computing :math:`\irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2))` -6. Let :math:`(j_1~j_2)^4` be the result of computing :math:`\sats_{16}(i_1 + i_2)^8`. +6. Let :math:`(j_1~j_2)^4` be the result of computing :math:`\iaddsats_{16}(i_1, i_2)^8`. -7. Let :math:`j^4` be the result of computing :math:`\iadd_{32}(\extend^{s}_{16, 32}(j_1), \extend^{s}_{16, 32}(j_2))^4`. +7. Let :math:`j^4` be the result of computing :math:`\iadd_{32}(\extends_{16,32}(j_1), \extends_{16,32}(j_2))^4`. 8. Let :math:`k^4` be the result of computing :math:`\lanes_{\I32X4}(c_3)`. @@ -2392,8 +2407,8 @@ where: \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} (\iff & (i_1~i_2)^8 = \irelaxeddotmul_{8,16}(\lanes_{\I8X16}(c_1), \lanes_{\I8X16}(c_2)) \\ - \wedge & (j_1~j_2)^4 = \sats_{16}(i_1 + i_2)^8 \\ - \wedge & j^4 = \iadd_{32}(\extend^{s}_{16, 32}(j_1), \extend^{s}_{16, 32}(j_2))^4 \\ + \wedge & (j_1~j_2)^4 = \iaddsats_{16}(i_1, i_2)^8 \\ + \wedge & j^4 = \iadd_{32}(\extends_{16,32}(j_1), \extends_{16,32}(j_2))^4 \\ \wedge & k^4 = \lanes_{\I32X4}(c_3) \\ \wedge & l^4 = \iadd_{32}(j, k)^4 \\ \wedge & c = \lanes^{-1}_{\I32X4}(l^4)) diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 38b254491..44f823eef 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -88,8 +88,8 @@ Conventions: .. math:: \begin{array}{lll@{\qquad}l} - \satu_N(i) &=& 2^N-1 & (\iff i > 2^N-1)\\ \satu_N(i) &=& 0 & (\iff i < 0) \\ + \satu_N(i) &=& 2^N-1 & (\iff i > 2^N-1)\\ \satu_N(i) &=& i & (\otherwise) \\ \end{array} @@ -97,8 +97,8 @@ Conventions: .. math:: \begin{array}{lll@{\qquad}l} - \sats_N(i) &=& \signed_N^{-1}(-2^{N-1}) & (\iff i < -2^{N-1})\\ - \sats_N(i) &=& \signed_N^{-1}(2^{N-1}-1) & (\iff i > 2^{N-1}-1)\\ + \sats_N(i) &=& -2^{N-1} & (\iff i < -2^{N-1})\\ + \sats_N(i) &=& 2^{N-1}-1 & (\iff i > 2^{N-1}-1)\\ \sats_N(i) &=& i & (\otherwise) \end{array} @@ -860,11 +860,11 @@ The integer result of predicates -- i.e., :ref:`tests ` and :ref: * Let :math:`j` be the result of adding :math:`j_1` and :math:`j_2`. -* Return :math:`\sats_N(j)`. +* Return the value whose signed interpretation is :math:`\sats_N(j)`. .. math:: \begin{array}{lll@{\qquad}l} - \iaddsats_N(i_1, i_2) &=& \sats_N(\signed_N(i_1) + \signed_N(i_2)) + \iaddsats_N(i_1, i_2) &=& \signed_N^{-1}(\sats_N(\signed_N(i_1) + \signed_N(i_2))) \end{array} @@ -894,11 +894,11 @@ The integer result of predicates -- i.e., :ref:`tests ` and :ref: * Let :math:`j` be the result of subtracting :math:`j_2` from :math:`j_1`. -* Return :math:`\sats_N(j)`. +* Return the value whose signed interpretation is :math:`\sats_N(j)`. .. math:: \begin{array}{lll@{\qquad}l} - \isubsats_N(i_1, i_2) &=& \sats_N(\signed_N(i_1) - \signed_N(i_2)) + \isubsats_N(i_1, i_2) &=& \signed_N^{-1}(\sats_N(\signed_N(i_1) - \signed_N(i_2))) \end{array} @@ -922,11 +922,11 @@ The integer result of predicates -- i.e., :ref:`tests ` and :ref: :math:`\iq15mulrsats_N(i_1, i_2)` ................................. -* Return the result of :math:`\sats_N(\ishrs_N(i_1 \cdot i_2 + 2^{14}, 15))`. +* Return the whose signed interpretation is the result of :math:`\sats_N(\ishrs_N(i_1 \cdot i_2 + 2^{14}, 15))`. .. math:: \begin{array}{lll@{\qquad}l} - \iq15mulrsats_N(i_1, i_2) &=& \sats_N(\ishrs_N(i_1 \cdot i_2 + 2^{14}, 15)) + \iq15mulrsats_N(i_1, i_2) &=& \signed_N^{-1}(\sats_N(\ishrs_N(i_1 \cdot i_2 + 2^{14}, 15))) \end{array} @@ -1901,14 +1901,14 @@ Conversions * Else if :math:`z` is positive infinity, then return :math:`2^{N-1} - 1`. -* Else, return :math:`\sats_N(\trunc(z))`. +* Else, return the value whose signed interpretation is :math:`\sats_N(\trunc(z))`. .. math:: \begin{array}{lll@{\qquad}l} \truncsats_{M,N}(\pm \NAN(n)) &=& 0 \\ \truncsats_{M,N}(- \infty) &=& -2^{N-1} \\ \truncsats_{M,N}(+ \infty) &=& 2^{N-1}-1 \\ - \truncsats_{M,N}(z) &=& \sats_N(\trunc(z)) \\ + \truncsats_{M,N}(z) &=& \signed_N^{-1}(\sats_N(\trunc(z))) \\ \end{array} @@ -2006,11 +2006,11 @@ Conversions * Let :math:`j` be the :ref:`signed interpretation ` of :math:`i` of size :math:`M`. -* Return :math:`\sats_N(j)`. +* Return the value whose signed interpretation is :math:`\sats_N(j)`. .. math:: \begin{array}{lll@{\qquad}l} - \narrows_{M,N}(i) &=& \sats_N(\signed_M(i)) + \narrows_{M,N}(i) &=& \signed_N^{-1}(\sats_N(\signed_M(i))) \end{array} @@ -2220,7 +2220,7 @@ The implementation-specific behaviour of this operation is determined by the glo .. note:: Relaxed unsigned truncation is implementation-dependent for NaNs and out-of-range values. In the :ref:`deterministic profile `, - it behaves like regular :math:`\truncu`. + it behaves like regular :math:`\truncsatu`. .. _op-relaxed_trunc_s: @@ -2243,7 +2243,7 @@ The implementation-specific behaviour of this operation is determined by the glo .. note:: Relaxed signed truncation is implementation-dependent for NaNs and out-of-range values. In the :ref:`deterministic profile `, - it behaves like regular :math:`\truncs`. + it behaves like regular :math:`\truncsats`. .. _op-irelaxed_swizzle: From c157e6181e43bccae6c08060be5cf4151f71bde5 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Thu, 3 Oct 2024 14:36:09 -0500 Subject: [PATCH 182/230] Rework IndexValueToU64 to allow more inputs to BigInts (#86) * Rework IndexValueToU64 to allow more inputs to BigInts * Address #86 feedback --- document/js-api/index.bs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index daf3a0bdb..a14b5559a 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -208,6 +208,8 @@ urlPrefix: https://heycam.github.io/webidl/; spec: WebIDL type: dfn text: create a namespace object; url: create-a-namespace-object text: [EnforceRange]; url: #EnforceRange + text: unsigned long; url: #idl-unsigned-long + text: js-unsigned-long; url: #js-unsigned-long urlPrefix: https://webassembly.github.io/js-types/js-api/; spec: WebAssembly JS API (JS Type Reflection) type: abstract-op; text: FromValueType; url: abstract-opdef-fromvaluetype urlPrefix: https://tc39.es/proposal-resizablearraybuffer/; spec: ResizableArrayBuffer proposal @@ -569,7 +571,7 @@ enum IndexType { "i64", }; -typedef ([EnforceRange] unsigned long or bigint) IndexValue; +typedef any IndexValue; dictionary ModuleExportDescriptor { required USVString name; @@ -1356,20 +1358,19 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va
-The algorithm IndexValueToU64(|v|, |indextype|) asserts that a JavaScript value is the appropriate variant of {{IndexValue}} for an {{IndexType}}, and ensures that its value is in [=u64=] range for WebAssembly embedding operations, by performing the following steps: +The algorithm IndexValueToU64(|v|, |indextype|) converts a JavaScript value to a WebAssembly [=u64=] for use in embedding operations. It is designed to act like [=[EnforceRange]=] [=unsigned long=] for {{IndexType}} "i32", and to extend these semantics to {{IndexType}} "i64", by performing the following steps: 1. If |indextype| is "i32", - 1. If |v| [=is a Number=], - 1. Assert: Due to WebIDL types and [=[EnforceRange]=], 0 ≤ [=ℝ=](|v|) < 264. - 1. Return [=ℝ=](|v|) as a WebAssembly [=u64=]. - 1. Otherwise, [=throw=] a {{TypeError}}. -1. Else if |indextype| is "i64", - 1. If |v| [=is a BigInt=], - 1. If |v| is not equal to [=!=] [$ToBigUint64$](|v|), [=throw=] a {{TypeError}}. - - Note: This operation is designed to mirror [=[EnforceRange]=], which [=throws=] a {{TypeError}} for out-of-range numeric values. - 1. Return [=ℝ=](|v|) as a WebAssembly [=u64=]. - 1. Otherwise, [=throw=] a {{TypeError}}. + 1. Let |n| be [=?=] [$ConvertToInt$](|v|, 32, "unsigned"), where the destination type is associated with [=[EnforceRange]=]. + + Note: This is equivalent to the [=js-unsigned-long|JS conversion rules=] for [=[EnforceRange]=] [=unsigned long=]. + 1. Return [=ℝ=](|n|) as a WebAssembly [=u64=]. +1. If |indextype| is "i64", + 1. Let |n| be [=?=] [$ToBigInt$](|v|). + 1. If |n| < 0 or |n| > 264 − 1, [=throw=] a {{TypeError}}. + + Note: This operation is designed to emulate [=[EnforceRange]=]. + 1. Return [=ℝ=](|n|) as a WebAssembly [=u64=]. 1. Assert: This step is not reached.
From 8012c48d7fd868345e5459b95a09d153b0661612 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Thu, 3 Oct 2024 13:45:04 -0700 Subject: [PATCH 183/230] Remove redundant runs of bikeshed from the JS/Web Makefiles' tar targets --- document/js-api/Makefile | 1 - document/web-api/Makefile | 1 - 2 files changed, 2 deletions(-) diff --git a/document/js-api/Makefile b/document/js-api/Makefile index 7893918d4..bed0e6595 100644 --- a/document/js-api/Makefile +++ b/document/js-api/Makefile @@ -35,7 +35,6 @@ diff: all # macOS tar has no “--transform” option (only GNU tar does), so on macOS, # do “brew install tar” & run “make” like this: “TAR=gtar make -e WD-tar” WD-tar: all - bikeshed spec --md-status=$(W3C_STATUS) --md-deadline=$(DEADLINE) index.bs $(BUILDDIR)/html/index.html $(TAR) -C $(BUILDDIR)/html --transform="s/index.html/Overview.html/" -cf $(BUILDDIR)/WD.tar index.html @echo "Built $(BUILDDIR)/WD.tar." diff --git a/document/web-api/Makefile b/document/web-api/Makefile index 2ea8f11ac..83bf47f3e 100644 --- a/document/web-api/Makefile +++ b/document/web-api/Makefile @@ -35,7 +35,6 @@ diff: all # macOS tar has no “--transform” option (only GNU tar does), so on macOS, # do “brew install tar” & run “make” like this: “TAR=gtar make -e WD-tar” WD-tar: all - bikeshed spec --md-status=$(W3C_STATUS) --md-deadline=$(DEADLINE) index.bs $(BUILDDIR)/html/index.html $(TAR) -C $(BUILDDIR)/html --transform="s/index.html/Overview.html/" -cf $(BUILDDIR)/WD.tar index.html @echo "Built $(BUILDDIR)/WD.tar." From 924c1f816d30c760bd4b66a9cf8d8f83f7f9ac2c Mon Sep 17 00:00:00 2001 From: Nikitha Rao Date: Fri, 4 Oct 2024 10:52:19 -0400 Subject: [PATCH 184/230] [test] More tests for ill-typed call indirect (#1822) --- test/core/call_indirect.wast | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/core/call_indirect.wast b/test/core/call_indirect.wast index 79b8dc393..74b5e8d2e 100644 --- a/test/core/call_indirect.wast +++ b/test/core/call_indirect.wast @@ -990,6 +990,15 @@ "type mismatch" ) +;; call_indirect expects funcref type but receives externref +(assert_invalid + (module + (type (func)) + (table 10 externref) + (func $call-indirect (call_indirect (type 0) (i32.const 0))) + ) + "type mismatch" +) ;; Unbound type @@ -1008,6 +1017,20 @@ "unknown type" ) +;; pass very large number to call_indirect +(assert_invalid + (module + (type (func (param i32))) + (table 1 funcref) + (func $conditional-dangling-type + (if (i32.const 1) + (then (call_indirect (type 0xffffffff) (i32.const 0))) + ) + ) + ) + "unknown type" +) + ;; Unbound function in table From 2d480da2357a82308616ad6be0f55d2cf2c6bd83 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Fri, 4 Oct 2024 13:21:40 -0700 Subject: [PATCH 185/230] Check Echidna publishing results for failure or success (#1821) * The API call does not return its results synchronously, so the status check script polls for the result and exits with an error if it fails. * The Makefiles and CI workflow introduce the ability to run the publishing step as a dry run, so it can be used with pull requests. * CI also supports the ability to use W3C username and password secrets instead of Echidna tokens --- .github/workflows/w3c-publish.yml | 19 +++++++-- document/core/Makefile | 9 ++++- document/js-api/Makefile | 11 ++++- document/util/check-echidna-status.py | 58 +++++++++++++++++++++++++++ document/web-api/Makefile | 11 ++++- 5 files changed, 98 insertions(+), 10 deletions(-) create mode 100755 document/util/check-echidna-status.py diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index a47b1211c..eb190eddc 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -1,9 +1,11 @@ -name: Publish to W3C TR space +name: Validate/Publish to W3C TR space on: push: branches: [ main ] paths: [ .github/**, document/** ] + pull_request: + paths: [ .github/**, document/** ] # Allows you to run this workflow manually from the Actions tab, gh CLI tool, # or REST API. THe w3c-status options correspond to the valid options for @@ -23,9 +25,12 @@ on: - CRD - CR +env: + YARN_ENABLE_IMMUTABLE_INSTALLS: false + W3C_STATUS: ${{ github.event_name == 'workflow_dispatch' && inputs.w3c-status || 'WD' }} + jobs: publish-to-w3c-TR: - if: github.repository == 'WebAssembly/spec' runs-on: ubuntu-latest steps: - name: Checkout repo @@ -43,10 +48,16 @@ jobs: - name: Setup Sphinx run: pip install six && pip install sphinx==5.1.0 - name: Publish all specs to their https://www.w3.org/TR/ URLs + if: env.W3C_ECHIDNA_TOKEN_CORE run: cd document && make -e WD-echidna-CI env: - W3C_STATUS: ${{ github.event_name == 'push' && 'WD' || inputs.w3c-status }} W3C_ECHIDNA_TOKEN_CORE: ${{ secrets.W3C_ECHIDNA_TOKEN_CORE }} W3C_ECHIDNA_TOKEN_JSAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_JSAPI }} W3C_ECHIDNA_TOKEN_WEBAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_WEBAPI }} - YARN_ENABLE_IMMUTABLE_INSTALLS: false + ECHIDNA_DRYRUN: ${{ !(github.event_name == 'push' && github.repository == 'WebAssembly/spec' && github.ref == 'refs/heads/main') }} + - name: Validate all specs with Echidna + if: env.W3C_USERNAME + run: cd document && make -e WD-echidna + env: + W3C_USERNAME: ${{ secrets.W3C_USERNAME }} + W3C_PASSWORD: ${{ secrets.W3C_PASSWORD }} diff --git a/document/core/Makefile b/document/core/Makefile index df245c881..20b6ac4ca 100644 --- a/document/core/Makefile +++ b/document/core/Makefile @@ -13,6 +13,7 @@ NAME = WebAssembly DECISION_URL = https://github.com/WebAssembly/meetings/blob/main/main/2024/WG-06-12.md TAR = tar DEADLINE = $(shell date -d "+30 days" +%Y-%m-%d 2>/dev/null || date -v +30d +%Y-%m-%d) +ECHIDNA_DRYRUN = true # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 @@ -196,7 +197,9 @@ WD-echidna: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ --user '$(W3C_USERNAME):$(W3C_PASSWORD)' \ -F "tar=@$(BUILDDIR)/WD.tar" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) @echo @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" @@ -210,7 +213,9 @@ WD-echidna-CI: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ -F "tar=@$(BUILDDIR)/WD.tar" \ -F "token=$(W3C_ECHIDNA_TOKEN_CORE)" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) @echo @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" diff --git a/document/js-api/Makefile b/document/js-api/Makefile index bed0e6595..79a3ebfc8 100644 --- a/document/js-api/Makefile +++ b/document/js-api/Makefile @@ -6,6 +6,7 @@ NAME = WebAssembly DECISION_URL = https://github.com/WebAssembly/meetings/blob/main/main/2024/WG-06-12.md TAR = tar DEADLINE = $(shell date -d "+30 days" +%Y-%m-%d 2>/dev/null || date -v +30d +%Y-%m-%d) +ECHIDNA_DRYRUN = true .PHONY: all all: @@ -49,7 +50,11 @@ WD-echidna: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ --user '$(W3C_USERNAME):$(W3C_PASSWORD)' \ -F "tar=@$(BUILDDIR)/WD.tar" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) + @echo + @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: WD-echidna-CI WD-echidna-CI: WD-tar @@ -61,6 +66,8 @@ WD-echidna-CI: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ -F "tar=@$(BUILDDIR)/WD.tar" \ -F "token=$(W3C_ECHIDNA_TOKEN_JSAPI)" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) @echo @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" diff --git a/document/util/check-echidna-status.py b/document/util/check-echidna-status.py new file mode 100755 index 000000000..9bc3f6026 --- /dev/null +++ b/document/util/check-echidna-status.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +from datetime import datetime, timedelta +import json +import os +import requests +import sys +import time + +ECHIDNA_ID_FILE = 'WD-echidna-id.txt' +ECHIDNA_STATUS_URL = 'http://labs.w3.org/echidna/api/status?id=' + + +def get_echidna_id(directory): + id_file = os.path.join(directory, ECHIDNA_ID_FILE) + file_time = os.path.getmtime(id_file) + if datetime.fromtimestamp(file_time) < datetime.now() - timedelta(hours=1): + print(f'Warning: Echidna ID is not recent: timestamp is {file_time}') + with open(id_file, 'r') as f: + return f.read().strip() + + +def get_current_response(echidna_id): + url = ECHIDNA_STATUS_URL + echidna_id + print(f'Fetching {url}') + response = requests.get(url, allow_redirects=True) + if response.status_code != 200: + print(f'Got status code {response.status_code}, text:') + print(response.text) + raise Exception('Failed to fetch echidna result') + + return response.json() + + +def get_echidna_result(echidna_id): + response = get_current_response(echidna_id) + while response['results']['status'] == 'started': + time.sleep(5) + print('Echidna run in progress, retrying...') + response = get_current_response(echidna_id) + + result = response['results']['status'] + print(f'Echidna issue {echidna_id} is {result}.') + print(json.dumps(response, indent=2)) + return result == 'success' + + +def main(argv): + directory = os.getcwd() if len(argv) < 2 else argv[1] + echidna_id = get_echidna_id(directory) + print(f'Got echidna id {echidna_id}.') + time.sleep(5) + if not get_echidna_result(echidna_id): + sys.exit(1) + + +if __name__ == '__main__': + main(sys.argv) diff --git a/document/web-api/Makefile b/document/web-api/Makefile index 83bf47f3e..22e82cc6c 100644 --- a/document/web-api/Makefile +++ b/document/web-api/Makefile @@ -6,6 +6,7 @@ NAME = WebAssembly DECISION_URL = https://github.com/WebAssembly/meetings/blob/main/main/2024/WG-06-12.md TAR = tar DEADLINE = $(shell date -d "+30 days" +%Y-%m-%d 2>/dev/null || date -v +30d +%Y-%m-%d) +ECHIDNA_DRYRUN = true .PHONY: all all: @@ -49,7 +50,11 @@ WD-echidna: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ --user '$(W3C_USERNAME):$(W3C_PASSWORD)' \ -F "tar=@$(BUILDDIR)/WD.tar" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) + @echo + @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: WD-echidna-CI WD-echidna-CI: WD-tar @@ -61,6 +66,8 @@ WD-echidna-CI: WD-tar curl 'https://labs.w3.org/echidna/api/request' \ -F "tar=@$(BUILDDIR)/WD.tar" \ -F "token=$(W3C_ECHIDNA_TOKEN_WEBAPI)" \ - -F "decision=$(DECISION_URL)" | tee $(BUILDDIR)/WD-echidna-id.txt + -F "decision=$(DECISION_URL)" \ + -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt + python3 ../util/check-echidna-status.py $(BUILDDIR) @echo @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" From 535bedf3e6fc05399623eb2c40964f850649fb21 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Sat, 5 Oct 2024 17:09:59 -0700 Subject: [PATCH 186/230] [ci] Use build matrix to run W3C spec builds independently (#1825) This ensures that all 3 specs build and upload even if one fails. Also use 'uploaded' in the status text instead of 'published' to reflect possible dry run or validation failure. --- .github/workflows/w3c-publish.yml | 14 ++++++++++---- document/core/Makefile | 4 ++-- document/js-api/Makefile | 4 ++-- document/web-api/Makefile | 4 ++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index eb190eddc..54809d846 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -31,6 +31,10 @@ env: jobs: publish-to-w3c-TR: + strategy: + fail-fast: false + matrix: + spec: [core, js-api, web-api] runs-on: ubuntu-latest steps: - name: Checkout repo @@ -44,20 +48,22 @@ jobs: - name: Setup Bikeshed run: pip install bikeshed && bikeshed update - name: Setup TexLive + if: ${{ matrix.spec == 'core' }} run: sudo apt-get update -y && sudo apt-get install -y latexmk texlive-latex-recommended texlive-latex-extra texlive-fonts-recommended - name: Setup Sphinx + if: ${{ matrix.spec == 'core' }} run: pip install six && pip install sphinx==5.1.0 - - name: Publish all specs to their https://www.w3.org/TR/ URLs + - name: Publish ${{ matrix.spec }} spec to its https://www.w3.org/TR/ URL if: env.W3C_ECHIDNA_TOKEN_CORE - run: cd document && make -e WD-echidna-CI + run: cd document && make -e -C ${{ matrix.spec }} WD-echidna-CI env: W3C_ECHIDNA_TOKEN_CORE: ${{ secrets.W3C_ECHIDNA_TOKEN_CORE }} W3C_ECHIDNA_TOKEN_JSAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_JSAPI }} W3C_ECHIDNA_TOKEN_WEBAPI: ${{ secrets.W3C_ECHIDNA_TOKEN_WEBAPI }} ECHIDNA_DRYRUN: ${{ !(github.event_name == 'push' && github.repository == 'WebAssembly/spec' && github.ref == 'refs/heads/main') }} - - name: Validate all specs with Echidna + - name: Validate ${{ matrix.spec }} spec with Echidna if: env.W3C_USERNAME - run: cd document && make -e WD-echidna + run: cd document && make -e -C ${{ matrix.spec }} WD-echidna env: W3C_USERNAME: ${{ secrets.W3C_USERNAME }} W3C_PASSWORD: ${{ secrets.W3C_PASSWORD }} diff --git a/document/core/Makefile b/document/core/Makefile index 20b6ac4ca..f0016afd8 100644 --- a/document/core/Makefile +++ b/document/core/Makefile @@ -201,7 +201,7 @@ WD-echidna: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: WD-echidna-CI WD-echidna-CI: WD-tar @@ -217,7 +217,7 @@ WD-echidna-CI: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: diff diff: bikeshed diff --git a/document/js-api/Makefile b/document/js-api/Makefile index 79a3ebfc8..acd14cf25 100644 --- a/document/js-api/Makefile +++ b/document/js-api/Makefile @@ -54,7 +54,7 @@ WD-echidna: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: WD-echidna-CI WD-echidna-CI: WD-tar @@ -70,4 +70,4 @@ WD-echidna-CI: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" diff --git a/document/web-api/Makefile b/document/web-api/Makefile index 22e82cc6c..0deb3d9d4 100644 --- a/document/web-api/Makefile +++ b/document/web-api/Makefile @@ -54,7 +54,7 @@ WD-echidna: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" .PHONY: WD-echidna-CI WD-echidna-CI: WD-tar @@ -70,4 +70,4 @@ WD-echidna-CI: WD-tar -F "dry-run=$(ECHIDNA_DRYRUN)" | tee $(BUILDDIR)/WD-echidna-id.txt python3 ../util/check-echidna-status.py $(BUILDDIR) @echo - @echo "Published $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" + @echo "Uploaded $(W3C_STATUS). Check its status at https://labs.w3.org/echidna/api/status?id=`cat $(BUILDDIR)/WD-echidna-id.txt`" From c0aeee7a255f1772214532170cdb49ff14578e2b Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Sat, 5 Oct 2024 17:11:11 -0700 Subject: [PATCH 187/230] Escape latex newline commands with extra vertical space (#1826) Fix a sequence that Bikeshed is treating as a macro and rewriting. This is a workaround for #1823 --- document/core/util/bikeshed_fixup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/document/core/util/bikeshed_fixup.py b/document/core/util/bikeshed_fixup.py index da3d2efa5..6a72d85cc 100755 --- a/document/core/util/bikeshed_fixup.py +++ b/document/core/util/bikeshed_fixup.py @@ -87,6 +87,9 @@ def Main(): r'\1', data, flags=re.DOTALL) + # Escape some latex sequences that Bikeshed interprets as macros + data = data.replace(r' \\[1ex]', r' \\\[1ex]') + sys.stdout.write(data) Main() From b5c848be5c3cc2552eb79ecf90315e6f8a001879 Mon Sep 17 00:00:00 2001 From: Derek Schuff Date: Sat, 5 Oct 2024 17:15:23 -0700 Subject: [PATCH 188/230] Remove some unneeded bikeshed fixup hacks (#1824) --- document/core/util/bikeshed_fixup.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/document/core/util/bikeshed_fixup.py b/document/core/util/bikeshed_fixup.py index 6a72d85cc..5499a8cdd 100755 --- a/document/core/util/bikeshed_fixup.py +++ b/document/core/util/bikeshed_fixup.py @@ -12,11 +12,7 @@ def Main(): data = open(sys.argv[1]).read() - # Make bikeshed happy - # Apparently it can't handle empty line before DOCTYPE comment - data = data.replace('\n - data = data.replace('
', '\n
')
+  # Clean up the input for Bikeshed
 
   # Don't add more than 3 levels to TOC.
   data = data.replace('
', '
') @@ -42,18 +38,6 @@ def Main(): '

A.' + str(number) + ' ' + section + '

') number += 1 - - # Drop spurious navigation. - data = data.replace( -""" - """, '') - # Use bikeshed biblio references for unicode and IEEE754 data = data.replace( """Unicode""", From 9c69d19f429fb3766fe60cd63accf7578fe16235 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Mon, 7 Oct 2024 05:15:41 -0500 Subject: [PATCH 189/230] [js-api] Fix up missing preconditions on allocations (#1793) --- document/js-api/index.bs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 034a17417..8013e7456 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -61,6 +61,9 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df url: valid/modules.html#valid-module text: valid text: WebAssembly module validation + text: valid limits; url: valid/types.html#valid-limits + text: valid memtype; url: valid/types.html#valid-memtype + text: valid tabletype; url: valid/types.html#valid-tabletype text: module grammar; url: binary/modules.html#binary-module text: custom section; url: binary/modules.html#custom-section text: customsec; url: binary/modules.html#binary-customsec @@ -108,9 +111,11 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df text: global_write; url: appendix/embedding.html#embed-global-write text: error; url: appendix/embedding.html#embed-error text: store; url: exec/runtime.html#syntax-store + text: limits; url: syntax/types.html#syntax-limits text: table type; url: syntax/types.html#syntax-tabletype text: table address; url: exec/runtime.html#syntax-tableaddr text: function address; url: exec/runtime.html#syntax-funcaddr + text: memory type; url: syntax/types.html#syntax-memtype text: memory address; url: exec/runtime.html#syntax-memaddr text: global address; url: exec/runtime.html#syntax-globaladdr text: extern address; url: exec/runtime.html#syntax-externaddr @@ -675,8 +680,8 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each The Memory(|descriptor|) constructor, when invoked, performs the following steps: 1. Let |initial| be |descriptor|["initial"]. 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty. - 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. - 1. Let |memtype| be { min |initial|, max |maximum| }. + 1. Let |memtype| be the [=memory type=] { [=limits|min=] |initial|, [=limits|max=] |maximum| }. + 1. If |memtype| is not [=valid memtype|valid=], throw a {{RangeError}} exception. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |memaddr|) be [=mem_alloc=](|store|, |memtype|). If allocation fails, throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -836,14 +841,16 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. [=Throw=] a {{TypeError}} exception. 1. Let |initial| be |descriptor|["initial"]. 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be |descriptor|["maximum"]; otherwise, let |maximum| be empty. - 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. + 1. Let |type| be the [=table type=] { [=limits|min=] |initial|, [=limits|max=] |maximum| } |elementType|. + 1. If |type| is not [=valid tabletype|valid=], throw a {{RangeError}} exception. + + Note: Because tables may have up to 232 - 1 elements in validation, the checks for [=limits|min=] ≤ 232 - 1 and [=limits|max=] ≤ 232 - 1 in [=valid limits|limits validation=] cannot fail. 1. If |value| is missing, 1. Let |ref| be [=DefaultValue=](|elementType|). 1. Otherwise, 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementType|). - 1. Let |type| be the [=table type=] {[=table type|min=] |initial|, [=table type|max=] |maximum|} |elementType|. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). + 1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). If allocation fails, throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. 1. [=initialize a table object|Initialize=] **this** from |tableaddr|. From 85a7ccb0307fb1284ea22f74cd77bd833ec25440 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 7 Oct 2024 22:40:16 +0200 Subject: [PATCH 190/230] [ci] Update CI action versions (#1827) --- .github/workflows/ci-interpreter.yml | 8 ++++---- .github/workflows/ci-spec.yml | 14 +++++++------- .github/workflows/w3c-publish.yml | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 8e0f4cb54..928f939a8 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -17,15 +17,15 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup OCaml - uses: ocaml/setup-ocaml@v2 + uses: ocaml/setup-ocaml@v3 with: - ocaml-compiler: 4.12.x + 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 - name: Setup Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: 19.x - name: Build interpreter diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index 2dadc3bb1..fb3e70a30 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -17,11 +17,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: submodules: "recursive" - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 16 - name: Setup Bikeshed @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup Bikeshed run: pip install bikeshed && bikeshed update - name: Run Bikeshed @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup Bikeshed run: pip install bikeshed && bikeshed update - name: Run Bikeshed @@ -74,7 +74,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Upload artifacts uses: actions/upload-artifact@v4 with: @@ -86,7 +86,7 @@ jobs: needs: [build-core-spec, build-js-api-spec, build-web-api-spec, build-spec-versions] steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Create output directory run: mkdir _output && cp document/index.html _output/index.html - name: Download core spec artifact @@ -111,7 +111,7 @@ jobs: path: _output/versions - name: Publish to GitHub Pages if: github.ref == 'refs/heads/main' - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: publish_dir: ./_output github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/w3c-publish.yml b/.github/workflows/w3c-publish.yml index 54809d846..bcb26699d 100644 --- a/.github/workflows/w3c-publish.yml +++ b/.github/workflows/w3c-publish.yml @@ -38,11 +38,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 with: submodules: "recursive" - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 16 - name: Setup Bikeshed From 1fca55a558ffe8d3e5d13930afd6f1453c45a250 Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Tue, 8 Oct 2024 01:04:40 +0200 Subject: [PATCH 191/230] [test][js-api] Fix import of table64 and memory64 (#84) Provide imports for 'table64' and 'memory64'. This fixes a js-api test failures. --- interpreter/script/js.ml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 7bacb5182..c0bd6f2a2 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -36,7 +36,10 @@ let spectest = { global_f32: 666.6, global_f64: 666.6, table: new WebAssembly.Table({initial: 10, maximum: 20, element: 'anyfunc'}), - memory: new WebAssembly.Memory({initial: 1, maximum: 2}) + table64: new WebAssembly.Table( + {initial: 10n, maximum: 20n, element: 'anyfunc', index: 'i64'}), + memory: new WebAssembly.Memory({initial: 1, maximum: 2}), + memory64: new WebAssembly.Memory({initial: 1n, maximum: 2n, index: 'i64'}) }; let handler = { From 2e89dc5869274b9642c72631706c168525c91c31 Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Tue, 8 Oct 2024 01:11:33 +0200 Subject: [PATCH 192/230] Fix js-api tests (#87) This fixes four things in the JS-API tests: 1. Pass BigInt for i64 WebAssembly.Table and WebAssembly.Memory constructors. 2. Use reference types for tables (would throw a TypeError otherwise). 3. Overwrite 'toString' instead of 'valueOf' for the 'index' property which is a string. 4. 'index' is read after 'element' and before 'initial' in Table construction. --- test/js-api/memory/constructor.any.js | 2 +- test/js-api/table/constructor.any.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/js-api/memory/constructor.any.js b/test/js-api/memory/constructor.any.js index 43c7f1bfb..910e2c0e3 100644 --- a/test/js-api/memory/constructor.any.js +++ b/test/js-api/memory/constructor.any.js @@ -153,7 +153,7 @@ test(() => { }, "Memory with i32 index constructor"); test(() => { - const argument = { "initial": 1, "index": "i64" }; + const argument = { "initial": 1n, "index": "i64" }; const memory = new WebAssembly.Memory(argument); assert_Memory(memory, { "size": 1, "index": "i64" }); }, "Memory with i64 index constructor"); diff --git a/test/js-api/table/constructor.any.js b/test/js-api/table/constructor.any.js index 466fe3445..a4c26a289 100644 --- a/test/js-api/table/constructor.any.js +++ b/test/js-api/table/constructor.any.js @@ -161,8 +161,8 @@ test(() => { get index() { order.push("index"); return { - valueOf() { - order.push("index valueOf"); + toString() { + order.push("index toString"); return "i32"; }, }; @@ -172,12 +172,12 @@ test(() => { assert_array_equals(order, [ "element", "element toString", + "index", + "index toString", "initial", "initial valueOf", "maximum", "maximum valueOf", - "index", - "index valueOf", ]); }, "Order of evaluation for descriptor"); @@ -220,7 +220,7 @@ test(() => { }, "initialize anyfunc table with a bad default value"); test(() => { - const argument = { "element": "i32", "initial": 3, "index": "i32" }; + const argument = { "element": "anyfunc", "initial": 3, "index": "i32" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the // index type of `table`. @@ -228,7 +228,7 @@ test(() => { }, "Table with i32 index constructor"); test(() => { - const argument = { "element": "i32", "initial": 3, "index": "i64" }; + const argument = { "element": "anyfunc", "initial": 3n, "index": "i64" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the // index type of `table`. @@ -236,6 +236,6 @@ test(() => { }, "Table with i64 index constructor"); test(() => { - const argument = { "element": "i32", "initial": 3, "index": "unknown" }; + const argument = { "element": "anyfunc", "initial": 3, "index": "unknown" }; assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); }, "Unknown table index"); From 2a30893e2868adbe0831af3c277728203bc70e8d Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 8 Oct 2024 11:45:33 +0200 Subject: [PATCH 193/230] [interpreter] Fix JS module invocation (#1829) --- interpreter/script/js.ml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index ca25ac3eb..2e796f7e7 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -614,13 +614,16 @@ let rec of_result res = | EitherResult ress -> "[" ^ String.concat ", " (List.map of_result ress) ^ "]" +let of_module bs = + "module(" ^ of_bytes bs ^ ")" + let rec of_definition def = match def.it with - | Textual (m, _) -> of_bytes (Encode.encode m) - | Encoded (_, bs) -> of_bytes bs.it + | Textual (m, _) -> of_module (Encode.encode m) + | Encoded (_, bs) -> of_module bs.it | Quoted (_, s) -> try of_definition (snd (Parse.Module.parse_string ~offset:s.at s.it)) - with Parse.Syntax _ | Custom.Syntax _ -> of_bytes "" + with Parse.Syntax _ | Custom.Syntax _ -> of_module "" let of_instance env x_opt = "instance(" ^ of_mod_opt env x_opt ^ ")" @@ -628,7 +631,7 @@ let of_instance env x_opt = let of_wrapper env x_opt name wrap_action wrap_assertion at = let x = of_inst_opt env x_opt in let bs = wrap name wrap_action wrap_assertion at in - "call(instance(module(" ^ of_bytes bs ^ "), " ^ + "call(instance(" ^ of_module bs ^ ", " ^ "exports(" ^ x ^ ")), " ^ " \"run\", [])" let of_action env act = From 29b1fd4d3771b08d6a505fdce4bb2b3373dd7d61 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 8 Oct 2024 15:41:38 +0200 Subject: [PATCH 194/230] [interpreter] Proper fix for JS conversion (#1832) --- interpreter/script/js.ml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 2e796f7e7..adc072cb1 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -236,7 +236,7 @@ let env () : env = let current_mod (env : env) = "$$" ^ string_of_int env.current_mod let of_mod_opt (env : env) = function | None -> current_mod env - | Some x -> x.it + | Some x -> "$" ^ x.it let current_inst (env : env) = "$" ^ string_of_int env.current_inst let of_inst_opt (env : env) = function @@ -614,24 +614,18 @@ let rec of_result res = | EitherResult ress -> "[" ^ String.concat ", " (List.map of_result ress) ^ "]" -let of_module bs = - "module(" ^ of_bytes bs ^ ")" - let rec of_definition def = match def.it with - | Textual (m, _) -> of_module (Encode.encode m) - | Encoded (_, bs) -> of_module bs.it + | Textual (m, _) -> of_bytes (Encode.encode m) + | Encoded (_, bs) -> of_bytes bs.it | Quoted (_, s) -> try of_definition (snd (Parse.Module.parse_string ~offset:s.at s.it)) - with Parse.Syntax _ | Custom.Syntax _ -> of_module "" - -let of_instance env x_opt = - "instance(" ^ of_mod_opt env x_opt ^ ")" + with Parse.Syntax _ | Custom.Syntax _ -> of_bytes "" let of_wrapper env x_opt name wrap_action wrap_assertion at = let x = of_inst_opt env x_opt in let bs = wrap name wrap_action wrap_assertion at in - "call(instance(" ^ of_module bs ^ ", " ^ + "call(instance(module(" ^ of_bytes bs ^ "), " ^ "exports(" ^ x ^ ")), " ^ " \"run\", [])" let of_action env act = @@ -680,9 +674,9 @@ let of_assertion env ass = | AssertInvalidCustom (def, _) -> "assert_invalid_custom(" ^ of_definition def ^ ");" | AssertUnlinkable (x_opt, _) -> - "assert_unlinkable(" ^ of_instance env x_opt ^ ");" + "assert_unlinkable(" ^ of_mod_opt env x_opt ^ ");" | AssertUninstantiable (x_opt, _) -> - "assert_uninstantiable(" ^ of_instance env x_opt ^ ");" + "assert_uninstantiable(" ^ of_mod_opt env x_opt ^ ");" | AssertReturn (act, ress) -> of_assertion' env act "assert_return" (List.map of_result ress) (Some (assert_return ress)) @@ -705,7 +699,7 @@ let of_command env cmd = | Quoted (_, s) -> unquote (snd (Parse.Module.parse_string ~offset:s.at s.it)) in bind_mod env x_opt (unquote def); - "let " ^ current_mod env ^ " = " ^ of_definition def ^ ";\n" ^ + "let " ^ current_mod env ^ " = module(" ^ of_definition def ^ ");\n" ^ (if x_opt = None then "" else "let " ^ of_mod_opt env x_opt ^ " = " ^ current_mod env ^ ";\n") | Instance (x1_opt, x2_opt) -> From 61e34cc73076fa5681987f7fdc3e66efeb8f66e7 Mon Sep 17 00:00:00 2001 From: Thibaud Michaud Date: Wed, 9 Oct 2024 12:41:46 +0200 Subject: [PATCH 195/230] Fix wasm-module-builder.js (#1831) --- test/js-api/wasm-module-builder.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/js-api/wasm-module-builder.js b/test/js-api/wasm-module-builder.js index 04f19b278..1ffb00cba 100644 --- a/test/js-api/wasm-module-builder.js +++ b/test/js-api/wasm-module-builder.js @@ -966,7 +966,7 @@ class WasmModuleBuilder { } let type_index = (typeof type) == "number" ? type : this.addType(type); this.imports.push({module: module, name: name, kind: kExternalFunction, - type: type_index}); + type_index: type_index}); return this.num_imported_funcs++; } From 76bcf86758de93f3b0fa27bbd7b392e667a45ade Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 15 Oct 2024 17:03:54 +0200 Subject: [PATCH 196/230] Fix a bunch of errors --- document/core/appendix/embedding.rst | 2 +- document/core/exec/instructions.rst | 2 +- document/core/exec/numerics.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/document/core/appendix/embedding.rst b/document/core/appendix/embedding.rst index 737230ef8..8dd8ffe0c 100644 --- a/document/core/appendix/embedding.rst +++ b/document/core/appendix/embedding.rst @@ -164,7 +164,7 @@ Modules .. index:: instantiation, module instance .. _embed-module-instantiate: -:math:`\F{module\_instantiate}(\store, \module, \externval^\ast) : (\store, \moduleinst ~|~ \error)` +:math:`\F{module\_instantiate}(\store, \module, \externval^\ast) : (\store, \moduleinst ~|~ \exception ~|~ \error)` .................................................................................................... 1. Try :ref:`instantiating ` :math:`\module` in :math:`\store` with :ref:`external values ` :math:`\externval^\ast` as imports: diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 24d73e24b..46004f290 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -2142,7 +2142,7 @@ where :math:`\Large\times \{x^\ast\}^N` transforms a sequence of :math:`N` sets .. math:: \begin{array}{lcl@{\qquad}l} (\V128\K{.}\VCONST~c)~t\K{x}N\K{.}\BITMASK &\stepto& (\I32\K{.}\CONST~i) - & (\iff i = \ibits_{32}^{-1}(\ilts_{|t|}(\lanes_{t\K{x}N}(c), 0^N))) + & (\iff i = \ibits_{32}^{-1}(\ilts_{|t|}(\lanes_{t\K{x}N}(c), (0)^N) (0)^{32-N})) \\ \end{array} diff --git a/document/core/exec/numerics.rst b/document/core/exec/numerics.rst index 44f823eef..5c1d9be04 100644 --- a/document/core/exec/numerics.rst +++ b/document/core/exec/numerics.rst @@ -2271,7 +2271,7 @@ where: \begin{array}{@{}lcll} \irelaxedswizzlelane(i^n, j) &=& i[j] & (\iff j < 16) \\ \irelaxedswizzlelane(i^n, j) &=& 0 & (\iff \signed_8(j) < 0) \\ - \irelaxedswizzlelane(i^n, j) &=& \relaxed(R_{\F{swizzle}})[ 0, i[j \mod n] ] & (\otherwise) \\ + \irelaxedswizzlelane(i^n, j) &=& \relaxed(R_{\F{swizzle}})[ 0, i^n[j \mod n] ] & (\otherwise) \\ \end{array} .. note:: From bef38ba519e0ce2ff9a2c84267f0c62364ecbf30 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 17 Oct 2024 15:01:55 +0200 Subject: [PATCH 197/230] Add missing handlers to eval contexts --- document/core/exec/runtime.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/document/core/exec/runtime.rst b/document/core/exec/runtime.rst index 8a91a1f76..3f251c255 100644 --- a/document/core/exec/runtime.rst +++ b/document/core/exec/runtime.rst @@ -897,7 +897,8 @@ Finally, the following definition of *evaluation context* and associated structu \production{evaluation contexts} & E &::=& [\_] ~|~ \val^\ast~E~\instr^\ast ~|~ - \LABEL_n\{\instr^\ast\}~E~\END \\ + \LABEL_n\{\instr^\ast\}~E~\END ~|~ + \HANDLER_n\{\catch^\ast\}~E~\END \\ \end{array} .. math:: From 4056ff9582da36059c794ee54b3e825f76828bb1 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Fri, 18 Oct 2024 11:09:25 +0100 Subject: [PATCH 198/230] Rename "index type" to "address type" across the spec (#90) * Rename "index type" to "address type" across the spec * Update "index type" to "address type" in the spec interpreter * Update section underlines It is very important that you have precisely the correct number of dots. It would be too much work for the computer otherwise. * Rename "address type" to "addr type" in the spec interpreter * Revert one stray interpreter update --- document/core/appendix/properties.rst | 24 +- document/core/binary/types.rst | 6 +- document/core/exec/instructions.rst | 342 +++++++++++++------------- document/core/exec/modules.rst | 32 +-- document/core/syntax/types.rst | 30 +-- document/core/text/modules.rst | 8 +- document/core/text/types.rst | 20 +- document/core/util/macros.def | 6 +- document/core/valid/instructions.rst | 232 ++++++++--------- document/core/valid/matching.rst | 14 +- document/core/valid/types.rst | 18 +- document/js-api/index.bs | 78 +++--- interpreter/binary/decode.ml | 6 +- interpreter/binary/encode.ml | 10 +- interpreter/exec/eval.ml | 8 +- interpreter/host/spectest.ml | 6 +- interpreter/runtime/memory.ml | 18 +- interpreter/runtime/memory.mli | 2 +- interpreter/runtime/table.ml | 22 +- interpreter/runtime/table.mli | 2 +- interpreter/runtime/value.ml | 8 +- interpreter/syntax/free.ml | 4 +- interpreter/syntax/types.ml | 26 +- interpreter/text/arrange.ml | 10 +- interpreter/text/parser.mly | 52 ++-- interpreter/valid/match.ml | 8 +- interpreter/valid/valid.ml | 118 ++++----- proposals/memory64/Overview.md | 136 +++++----- test/core/table.wast | 2 +- test/js-api/table/constructor.any.js | 4 +- 30 files changed, 626 insertions(+), 626 deletions(-) diff --git a/document/core/appendix/properties.rst b/document/core/appendix/properties.rst index 2413b638f..79a530edd 100644 --- a/document/core/appendix/properties.rst +++ b/document/core/appendix/properties.rst @@ -513,10 +513,10 @@ where :math:`\val_1 \gg^+_S \val_2` denotes the transitive closure of the follow .. index:: table type, table instance, limits, function address .. _valid-tableinst: -:ref:`Table Instances ` :math:`\{ \TITYPE~\idxtype~\limits~t, \TIELEM~\reff^\ast \}` -...................................................................................................... +:ref:`Table Instances ` :math:`\{ \TITYPE~\addrtype~\limits~t, \TIELEM~\reff^\ast \}` +....................................................................................................... -* The :ref:`table type ` :math:`\idxtype~\limits~t` must be :ref:`valid ` under the empty :ref:`context `. +* The :ref:`table type ` :math:`\addrtype~\limits~t` must be :ref:`valid ` under the empty :ref:`context `. * The length of :math:`\reff^\ast` must equal :math:`\limits.\LMIN`. @@ -526,11 +526,11 @@ where :math:`\val_1 \gg^+_S \val_2` denotes the transitive closure of the follow * The :ref:`reference type ` :math:`t'_i` must :ref:`match ` the :ref:`reference type ` :math:`t`. -* Then the table instance is valid with :ref:`table type ` :math:`\idxtype~\limits~t`. +* Then the table instance is valid with :ref:`table type ` :math:`\addrtype~\limits~t`. .. math:: \frac{ - \vdashtabletype \idxtype~\limits~t \ok + \vdashtabletype \addrtype~\limits~t \ok \qquad n = \limits.\LMIN \qquad @@ -538,29 +538,29 @@ where :math:`\val_1 \gg^+_S \val_2` denotes the transitive closure of the follow \qquad (\vdashreftypematch t' \matchesvaltype t)^n }{ - S \vdashtableinst \{ \TITYPE~\idxtype~\limits~t, \TIELEM~\reff^n \} : \idxtype~\limits~t + S \vdashtableinst \{ \TITYPE~\addrtype~\limits~t, \TIELEM~\reff^n \} : \addrtype~\limits~t } .. index:: memory type, memory instance, limits, byte .. _valid-meminst: -:ref:`Memory Instances ` :math:`\{ \MITYPE~\idxtype~\limits, \MIDATA~b^\ast \}` -............................................................................................... +:ref:`Memory Instances ` :math:`\{ \MITYPE~\addrtype~\limits, \MIDATA~b^\ast \}` +................................................................................................ -* The :ref:`memory type ` :math:`\idxtype~\limits` must be :ref:`valid ` under the empty :ref:`context `. +* The :ref:`memory type ` :math:`\addrtype~\limits` must be :ref:`valid ` under the empty :ref:`context `. * The length of :math:`b^\ast` must equal :math:`\limits.\LMIN` multiplied by the :ref:`page size ` :math:`64\,\F{Ki}`. -* Then the memory instance is valid with :ref:`memory type ` :math:`\idxtype~\limits`. +* Then the memory instance is valid with :ref:`memory type ` :math:`\addrtype~\limits`. .. math:: \frac{ - \vdashmemtype \idxtype~\limits \ok + \vdashmemtype \addrtype~\limits \ok \qquad n = \limits.\LMIN \cdot 64\,\F{Ki} }{ - S \vdashmeminst \{ \MITYPE~\idxtype~\limits, \MIDATA~b^n \} : \idxtype~\limits + S \vdashmeminst \{ \MITYPE~\addrtype~\limits, \MIDATA~b^n \} : \addrtype~\limits } diff --git a/document/core/binary/types.rst b/document/core/binary/types.rst index 2df479d38..d5501ec48 100644 --- a/document/core/binary/types.rst +++ b/document/core/binary/types.rst @@ -251,7 +251,7 @@ Additional shorthands are recognized for unary recursions and sub types without Limits ~~~~~~ -:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and the corresponsing index type. +:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and the corresponding :ref:`address type `. .. math:: \begin{array}{llclll} @@ -275,7 +275,7 @@ Memory Types .. math:: \begin{array}{llclll@{\qquad\qquad}l} \production{memory type} & \Bmemtype &::=& - (\X{it}, \X{lim}){:}\Blimits &\Rightarrow& \X{it}~~\X{lim} \\ + (\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim} \\ \end{array} @@ -291,7 +291,7 @@ Table Types .. math:: \begin{array}{llclll} \production{table type} & \Btabletype &::=& - \X{et}{:}\Breftype~~(\X{it}, \X{lim}){:}\Blimits &\Rightarrow& \X{it}~~\X{lim}~\X{et} \\ + \X{et}{:}\Breftype~~(\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim}~\X{et} \\ \end{array} diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 2b8cc7494..9cab86746 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -2725,11 +2725,11 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~i` from the stack. +8. Pop the value :math:`\X{at}.\CONST~i` from the stack. 9. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: @@ -2743,12 +2743,12 @@ Table Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \val + S; F; (\X{at}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \val \end{array} \\ \qquad (\iff S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM[i] = \val) \\ \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\TABLEGET~x) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -2770,15 +2770,15 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. 7. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. 8. Pop the value :math:`\val` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{it}.\CONST~i` from the stack. +10. Pop the value :math:`\X{at}.\CONST~i` from the stack. 11. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: @@ -2790,12 +2790,12 @@ Table Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S'; F; \epsilon + S; F; (\X{at}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S'; F; \epsilon \end{array} \\ \qquad (\iff S' = S \with \STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM[i] = \val) \\ \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~\val~(\TABLESET~x) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -2817,16 +2817,16 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. 7. Let :math:`\X{sz}` be the length of :math:`\X{tab}.\TIELEM`. -8. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack. +8. Push the value :math:`\X{at}.\CONST~\X{sz}` to the stack. .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\TABLESIZE~x) &\stepto& S; F; (\X{it}.\CONST~\X{sz}) + S; F; (\TABLESIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz}) \\ @@ -2849,39 +2849,39 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. 7. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{it}.\CONST~n` from the stack. +9. Pop the value :math:`\X{at}.\CONST~n` from the stack. 10. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. 11. Pop the value :math:`\val` from the stack. -12. Let :math:`\X{err}` be the :math:`\X{it}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +12. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. 13. Either: a. If :ref:`growing ` :math:`\X{tab}` by :math:`n` entries with initialization value :math:`\val` succeeds, then: - i. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack. + i. Push the value :math:`\X{at}.\CONST~\X{sz}` to the stack. b. Else: - i. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack. + i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. 14. Or: - a. push the value :math:`\X{it}.\CONST~\X{err}` to the stack. + a. push the value :math:`\X{at}.\CONST~\X{err}` to the stack. .. math:: ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; \val~(\X{it}.\CONST~n)~(\TABLEGROW~x) &\stepto& S'; F; (\X{it}.\CONST~\X{sz}) + S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S'; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -2891,7 +2891,7 @@ Table Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; \val~(\X{it}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{it}.\CONST~\signed_{32}^{-1}(-1)) + S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) \end{array} \end{array} @@ -2919,19 +2919,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~n` from the stack. +8. Pop the value :math:`\X{at}.\CONST~n` from the stack. 9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. 10. Pop the value :math:`\val` from the stack. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +11. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -12. Pop the value :math:`\X{it}.\CONST~i` from the stack. +12. Pop the value :math:`\X{at}.\CONST~i` from the stack. 13. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: @@ -2941,40 +2941,40 @@ Table Instructions a. Return. -14. Push the value :math:`\X{it}.\CONST~i` to the stack. +14. Push the value :math:`\X{at}.\CONST~i` to the stack. 15. Push the value :math:`\val` to the stack. 16. Execute the instruction :math:`\TABLESET~x`. -17. Push the value :math:`\X{it}.\CONST~(i+1)` to the stack. +17. Push the value :math:`\X{at}.\CONST~(i+1)` to the stack. 18. Push the value :math:`\val` to the stack. -19. Push the value :math:`\X{it}.\CONST~(n-1)` to the stack. +19. Push the value :math:`\X{at}.\CONST~(n-1)` to the stack. 20. Execute the instruction :math:`\TABLEFILL~x`. .. math:: \begin{array}{l} - S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~n)~(\TABLEFILL~x) + S; F; (\X{at}.\CONST~i)~\val~(\X{at}.\CONST~n)~(\TABLEFILL~x) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} (\iff & i + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~0)~(\TABLEFILL~x) + S; F; (\X{at}.\CONST~i)~\val~(\X{at}.\CONST~0)~(\TABLEFILL~x) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}.\CONST~i)~\val~(\X{it}.\CONST~n+1)~(\TABLEFILL~x) + S; F; (\X{at}.\CONST~i)~\val~(\X{at}.\CONST~n+1)~(\TABLEFILL~x) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}.\CONST~i)~\val~(\TABLESET~x) \\ - (\X{it}.\CONST~i+1)~\val~(\X{it}.\CONST~n)~(\TABLEFILL~x) \\ + (\X{at}.\CONST~i)~\val~(\TABLESET~x) \\ + (\X{at}.\CONST~i+1)~\val~(\X{at}.\CONST~n)~(\TABLEFILL~x) \\ \end{array} \\ \qquad (\otherwise) \\ @@ -3004,23 +3004,23 @@ Table Instructions 9. Let :math:`\X{tab}_y` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}_y]`. -10. Let :math:`\X{it}_x~\limits_x` be the :ref:`table type ` :math:`\X{tab}_x.\TITYPE`. +10. Let :math:`\X{at}_x~\limits_x` be the :ref:`table type ` :math:`\X{tab}_x.\TITYPE`. -11. Let :math:`\X{it}_y~\limits_y` be the :ref:`table type ` :math:`\X{tab}_y.\TITYPE`. +11. Let :math:`\X{at}_y~\limits_y` be the :ref:`table type ` :math:`\X{tab}_y.\TITYPE`. -12. Let :math:`\X{it}_n` be the :ref:`minimum ` of :math:`\X{it}_s` and :math:`\X{it}_d`. +12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y`. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_n` is on the top of the stack. +13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. -14. Pop the value :math:`\X{it}_n.\CONST~n` from the stack. +14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_y` is on the top of the stack. +15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_y` is on the top of the stack. -16. Pop the value :math:`\X{it}_y.\CONST~s` from the stack. +16. Pop the value :math:`\X{at}_y.\CONST~s` from the stack. -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_x` is on the top of the stack. +17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_x` is on the top of the stack. -18. Pop the value :math:`\X{it}_x.\CONST~d` from the stack. +18. Pop the value :math:`\X{at}_x.\CONST~d` from the stack. 19. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then: @@ -3032,9 +3032,9 @@ Table Instructions 21. If :math:`d \leq s`, then: - a. Push the value :math:`\X{it}_x.\CONST~d` to the stack. + a. Push the value :math:`\X{at}_x.\CONST~d` to the stack. - b. Push the value :math:`\X{it}_y.\CONST~s` to the stack. + b. Push the value :math:`\X{at}_y.\CONST~s` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. @@ -3042,38 +3042,38 @@ Table Instructions e. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. - f. Push the value :math:`\X{it}_x.\CONST~(d+1)` to the stack. + f. Push the value :math:`\X{at}_x.\CONST~(d+1)` to the stack. g. Assert: due to the earlier check against the table size, :math:`s+1 < 2^{32}`. - h. Push the value :math:`\X{it}_y.\CONST~(s+1)` to the stack. + h. Push the value :math:`\X{at}_y.\CONST~(s+1)` to the stack. 22. Else: a. Assert: due to the earlier check against the table size, :math:`d+n-1 < 2^{32}`. - b. Push the value :math:`\X{it}_x.\CONST~(d+n-1)` to the stack. + b. Push the value :math:`\X{at}_x.\CONST~(d+n-1)` to the stack. c. Assert: due to the earlier check against the table size, :math:`s+n-1 < 2^{32}`. - d. Push the value :math:`\X{it}_y.\CONST~(s+n-1)` to the stack. + d. Push the value :math:`\X{at}_y.\CONST~(s+n-1)` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. f. Execute the instruction :math:`\TABLESET~x`. - g. Push the value :math:`\X{it}_x.\CONST~d` to the stack. + g. Push the value :math:`\X{at}_x.\CONST~d` to the stack. - h. Push the value :math:`\X{it}_y.\CONST~s` to the stack. + h. Push the value :math:`\X{at}_y.\CONST~s` to the stack. -23. Push the value :math:`\X{it}_n.\CONST~(n-1)` to the stack. +23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. 24. Execute the instruction :math:`\TABLECOPY~x~y`. .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y) + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3081,27 +3081,27 @@ Table Instructions \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~0)~(\TABLECOPY~x~y) + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~0)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{it}_x.\CONST~d+1)~(\X{it}_y.\CONST~s+1)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_x.\CONST~d+1)~(\X{at}_y.\CONST~s+1)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d \leq s) \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}_x.\CONST~d+n)~(\X{it}_y.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_x.\CONST~d+n)~(\X{at}_y.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d > s) \\ @@ -3123,7 +3123,7 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{it}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. 7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists. @@ -3141,9 +3141,9 @@ Table Instructions 14. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{it}.\CONST~d` from the stack. +16. Pop the value :math:`\X{at}.\CONST~d` from the stack. 17. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: @@ -3155,7 +3155,7 @@ Table Instructions 19. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`. -20. Push the value :math:`\X{it}.\CONST~d` to the stack. +20. Push the value :math:`\X{at}.\CONST~d` to the stack. 21. Push the value :math:`\val` to the stack. @@ -3163,7 +3163,7 @@ Table Instructions 23. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack. +24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. 25. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`. @@ -3176,7 +3176,7 @@ Table Instructions .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLEINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\TABLEINIT~x~y) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3184,17 +3184,17 @@ Table Instructions \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\TABLEINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\TABLEINIT~x~y) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLEINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\TABLEINIT~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}.\CONST~d)~\val~(\TABLESET~x) \\ - (\X{it}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\TABLEINIT~x~y) \\ + (\X{at}.\CONST~d)~\val~(\TABLESET~x) \\ + (\X{at}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\TABLEINIT~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff \val = S.\SELEMS[F.\AMODULE.\MIELEMS[y]].\EIELEM[s]) \\ @@ -3260,11 +3260,11 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~i` from the stack. +8. Pop the value :math:`\X{at}.\CONST~i` from the stack. 9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3294,7 +3294,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\LOAD~x~\memarg) &\stepto& S; F; (t.\CONST~c) + S; F; (\X{at}.\CONST~i)~(t.\LOAD~x~\memarg) &\stepto& S; F; (t.\CONST~c) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3304,7 +3304,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\LOAD{N}\K{\_}\sx~x~\memarg) &\stepto& + S; F; (\X{at}.\CONST~i)~(t.\LOAD{N}\K{\_}\sx~x~\memarg) &\stepto& S; F; (t.\CONST~\extend^{\sx}_{N,|t|}(n)) \end{array} \\ \qquad @@ -3315,7 +3315,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\LOAD({N}\K{\_}\sx)^?~x~\memarg) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(t.\LOAD({N}\K{\_}\sx)^?~x~\memarg) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3337,11 +3337,11 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~i` from the stack. +8. Pop the value :math:`\X{at}.\CONST~i` from the stack. 9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3365,7 +3365,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\_\sx~x~\memarg) &\stepto& + S; F; (\X{at}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\_\sx~x~\memarg) &\stepto& S; F; (\V128.\CONST~c) \end{array} \\ \qquad @@ -3378,7 +3378,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\K{\_}\sx~x~\memarg) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\V128.\LOAD{M}\K{x}N\K{\_}\sx~x~\memarg) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3400,11 +3400,11 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~i` from the stack. +8. Pop the value :math:`\X{at}.\CONST~i` from the stack. 9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3426,7 +3426,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c) + S; F; (\X{at}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3437,7 +3437,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\V128.\LOAD{N}\K{\_splat}~x~\memarg) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3459,11 +3459,11 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{it}.\CONST~i` from the stack. +8. Pop the value :math:`\X{at}.\CONST~i` from the stack. 9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3483,7 +3483,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c) + S; F; (\X{at}.\CONST~i)~(\V128\K{.}\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; (\V128.\CONST~c) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3494,7 +3494,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\V128.\LOAD{N}\K{\_zero}~x~\memarg) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3516,15 +3516,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack. 8. Pop the value :math:`\V128.\CONST~v` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{it}.\CONST~i` from the stack. +10. Pop the value :math:`\X{at}.\CONST~i` from the stack. 11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3548,7 +3548,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\CONST~v)~(\V128\K{.}\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; (\V128.\CONST~c) + S; F; (\X{at}.\CONST~i)~(\V128.\CONST~v)~(\V128\K{.}\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; (\V128.\CONST~c) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3560,7 +3560,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\CONST~v)~(\V128.\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\V128.\CONST~v)~(\V128.\LOAD{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3583,15 +3583,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack. 8. Pop the value :math:`t.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{it}.\CONST~i` from the stack. +10. Pop the value :math:`\X{at}.\CONST~i` from the stack. 11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3619,7 +3619,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE~x~\memarg) &\stepto& S'; F; \epsilon + S; F; (\X{at}.\CONST~i)~(t.\CONST~c)~(t.\STORE~x~\memarg) &\stepto& S'; F; \epsilon \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3629,7 +3629,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}~x~\memarg) &\stepto& S'; F; \epsilon + S; F; (\X{at}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}~x~\memarg) &\stepto& S'; F; \epsilon \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3639,7 +3639,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}^?~x~\memarg) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(t.\CONST~c)~(t.\STORE{N}^?~x~\memarg) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3661,15 +3661,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack. 8. Pop the value :math:`\V128.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{it}.\CONST~i` from the stack. +10. Pop the value :math:`\X{at}.\CONST~i` from the stack. 11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. @@ -3689,7 +3689,7 @@ Memory Instructions ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S'; F; \epsilon + S; F; (\X{at}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S'; F; \epsilon \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3700,7 +3700,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP + S; F; (\X{at}.\CONST~i)~(\V128.\CONST~c)~(\V128.\STORE{N}\K{\_lane}~x~\memarg~y) &\stepto& S; F; \TRAP \end{array} \\ \qquad (\otherwise) \\ @@ -3722,16 +3722,16 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Let :math:`\X{sz}` be the length of :math:`\X{mem}.\MIDATA` divided by the :ref:`page size `. -8. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack. +8. Push the value :math:`\X{at}.\CONST~\X{sz}` to the stack. .. math:: \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\X{it}.\CONST~\X{sz}) + S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki}) \\ @@ -3754,35 +3754,35 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{it}.\CONST~n` from the stack. +9. Pop the value :math:`\X{at}.\CONST~n` from the stack. -10. Let :math:`\X{err}` be the :math:`\X{it}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +10. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. 11. Either: a. If :ref:`growing ` :math:`\X{mem}` by :math:`n` :ref:`pages ` succeeds, then: - i. Push the value :math:`\X{it}.\CONST~\X{sz}` to the stack. + i. Push the value :math:`\X{at}.\CONST~\X{sz}` to the stack. b. Else: - i. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack. + i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. 12. Or: - a. Push the value :math:`\X{it}.\CONST~\X{err}` to the stack. + a. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. .. math:: ~\\[-1ex] \begin{array}{l} \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S'; F; (\X{it}.\CONST~\X{sz}) + S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S'; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3792,7 +3792,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{it}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{it}.\CONST~\signed_{32}^{-1}(-1)) + S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) \end{array} \end{array} @@ -3820,19 +3820,19 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -7. Pop the value :math:`\X{it}.\CONST~n` from the stack. +7. Pop the value :math:`\X{at}.\CONST~n` from the stack. 8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. 9. Pop the value :math:`\val` from the stack. -10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -11. Pop the value :math:`\X{it}.\CONST~d` from the stack. +11. Pop the value :math:`\X{at}.\CONST~d` from the stack. 12. If :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: @@ -3846,37 +3846,37 @@ Memory Instructions 15. Push the value :math:`\val` to the stack. -16. Execute the instruction :math:`\X{it}\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`. +16. Execute the instruction :math:`\X{at}\K{.}\STORE\K{8}~\{ \OFFSET~0, \ALIGN~0 \}`. 17. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. -18. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack. +18. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. 19. Push the value :math:`\val` to the stack. -20. Push the value :math:`\X{it}.\CONST~(n-1)` to the stack. +20. Push the value :math:`\X{at}.\CONST~(n-1)` to the stack. 21. Execute the instruction :math:`\MEMORYFILL~x`. .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~n)~\MEMORYFILL~x + S; F; (\X{at}.\CONST~d)~\val~(\X{at}.\CONST~n)~\MEMORYFILL~x \quad\stepto\quad S; F; \TRAP \\ \qquad (\iff d + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA|) \\[1ex] - S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~0)~\MEMORYFILL~x + S; F; (\X{at}.\CONST~d)~\val~(\X{at}.\CONST~0)~\MEMORYFILL~x \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}.\CONST~d)~\val~(\X{it}.\CONST~n+1)~\MEMORYFILL~x + S; F; (\X{at}.\CONST~d)~\val~(\X{at}.\CONST~n+1)~\MEMORYFILL~x \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}.\CONST~d)~\val~(\X{it}\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ - (\X{it}.\CONST~d+1)~\val~(\X{it}.\CONST~n)~\MEMORYFILL~x \\ + (\X{at}.\CONST~d)~\val~(\X{at}\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ + (\X{at}.\CONST~d+1)~\val~(\X{at}.\CONST~n)~\MEMORYFILL~x \\ \end{array} \\ \qquad (\otherwise) \\ @@ -3906,23 +3906,23 @@ Memory Instructions 9. Let :math:`\X{mem}_s` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{sa}]`. -10. Let :math:`\X{it}_d~\limits_d` be the :ref:`memory type ` :math:`\X{mem}_d.\MITYPE`. +10. Let :math:`\X{at}_d~\limits_d` be the :ref:`memory type ` :math:`\X{mem}_d.\MITYPE`. -11. Let :math:`\X{it}_s~\limits_s` be the :ref:`memory type ` :math:`\X{mem}_s.\MITYPE`. +11. Let :math:`\X{at}_s~\limits_s` be the :ref:`memory type ` :math:`\X{mem}_s.\MITYPE`. -12. Let :math:`\X{it}_n` be the :ref:`minimum ` of :math:`\X{it}_s` and :math:`\X{it}_d`. +12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_s` and :math:`\X{at}_d`. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_n` is on the top of the stack. +13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. -14. Pop the value :math:`\X{it}_n.\CONST~n` from the stack. +14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_s` is on the top of the stack. +15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_s` is on the top of the stack. -16. Pop the value :math:`\X{it}_s.\CONST~s` from the stack. +16. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}_d` is on the top of the stack. +17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_d` is on the top of the stack. -18. Pop the value :math:`\X{it}_d.\CONST~d` from the stack. +18. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. 19. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then: @@ -3934,9 +3934,9 @@ Memory Instructions 21. If :math:`d \leq s`, then: - a. Push the value :math:`\X{it}_d.\CONST~d` to the stack. + a. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - b. Push the value :math:`\X{it}_s.\CONST~s` to the stack. + b. Push the value :math:`\X{at}_s.\CONST~s` to the stack. c. Execute the instruction :math:`\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}`. @@ -3944,38 +3944,38 @@ Memory Instructions e. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. - f. Push the value :math:`\X{it}_d.\CONST~(d+1)` to the stack. + f. Push the value :math:`\X{at}_d.\CONST~(d+1)` to the stack. g. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. - h. Push the value :math:`\X{it}_s.\CONST~(s+1)` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~(s+1)` to the stack. 22. Else: a. Assert: due to the earlier check against the memory size, :math:`d+n-1 < 2^{32}`. - b. Push the value :math:`\X{it}_d.\CONST~(d+n-1)` to the stack. + b. Push the value :math:`\X{at}_d.\CONST~(d+n-1)` to the stack. c. Assert: due to the earlier check against the memory size, :math:`s+n-1 < 2^{32}`. - d. Push the value :math:`\X{it}_s.\CONST~(s+n-1)` to the stack. + d. Push the value :math:`\X{at}_s.\CONST~(s+n-1)` to the stack. e. Execute the instruction :math:`\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}`. f. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`. - g. Push the value :math:`\X{it}_d.\CONST~d` to the stack. + g. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - h. Push the value :math:`\X{it}_s.\CONST~s` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~s` to the stack. -23. Push the value :math:`\X{it}_n.\CONST~(n-1)` to the stack. +23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. 24. Execute the instruction :math:`\MEMORYCOPY~x~y`. .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~\MEMORYCOPY~x~y \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3983,31 +3983,31 @@ Memory Instructions \vee & s + n > |S.\SMEMS[F.\AMODULE.\MIMEMS[y]].\MIDATA|)) \\ \end{array} \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~0)~\MEMORYCOPY~x~y + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~0)~\MEMORYCOPY~x~y \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~\MEMORYCOPY~x~y + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~\MEMORYCOPY~x~y \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}_x.\CONST~d) \\ - (\X{it}_y.\CONST~s)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\ + (\X{at}_x.\CONST~d) \\ + (\X{at}_y.\CONST~s)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\ (\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ - (\X{it}_x.\CONST~d+1)~(\X{it}_y.\CONST~s+1)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y \\ + (\X{at}_x.\CONST~d+1)~(\X{at}_y.\CONST~s+1)~(\X{at}_n.\CONST~n)~\MEMORYCOPY~x~y \\ \end{array} \\ \qquad (\otherwise, \iff d \leq s) \\[1ex] - S; F; (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n+1)~\MEMORYCOPY~x~y + S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~\MEMORYCOPY~x~y \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}_x.\CONST~d+n) \\ - (\X{it}_y.\CONST~s+n)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\ + (\X{at}_x.\CONST~d+n) \\ + (\X{at}_y.\CONST~s+n)~(\I32\K{.}\LOAD\K{8\_u}~y~\{ \OFFSET~0, \ALIGN~0 \}) \\ (\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ - (\X{it}_x.\CONST~d)~(\X{it}_y.\CONST~s)~(\X{it}_n.\CONST~n)~\MEMORYCOPY~x~y \\ + (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~\MEMORYCOPY~x~y \\ \end{array} \\ \qquad (\otherwise, \iff d > s) \\ @@ -4029,7 +4029,7 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. 7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists. @@ -4047,9 +4047,9 @@ Memory Instructions 14. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{it}` is on the top of the stack. +15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{it}.\CONST~d` from the stack. +16. Pop the value :math:`\X{at}.\CONST~d` from the stack. 17. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: @@ -4061,7 +4061,7 @@ Memory Instructions 19. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`. -20. Push the value :math:`\X{it}.\CONST~d` to the stack. +20. Push the value :math:`\X{at}.\CONST~d` to the stack. 21. Push the value :math:`\I32.\CONST~b` to the stack. @@ -4069,7 +4069,7 @@ Memory Instructions 23. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{it}.\CONST~(d+1)` to the stack. +24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. 25. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. @@ -4082,7 +4082,7 @@ Memory Instructions .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -4090,17 +4090,17 @@ Memory Instructions \vee & s + n > |S.\SDATAS[F.\AMODULE.\MIDATAS[y]].\MIDATA|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\MEMORYINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~0)~(\MEMORYINIT~x~y) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{it}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\MEMORYINIT~x~y) + S; F; (\X{at}.\CONST~d)~(\I32.\CONST~s)~(\I32.\CONST~n+1)~(\MEMORYINIT~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{it}.\CONST~d)~(\I32.\CONST~b)~(\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ - (\X{it}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) \\ + (\X{at}.\CONST~d)~(\I32.\CONST~b)~(\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}) \\ + (\X{at}.\CONST~d+1)~(\I32.\CONST~s+1)~(\I32.\CONST~n)~(\MEMORYINIT~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff b = S.\SDATAS[F.\AMODULE.\MIDATAS[y]].\DIDATA[s]) \\ diff --git a/document/core/exec/modules.rst b/document/core/exec/modules.rst index 85dbdb2b1..d40a22cfa 100644 --- a/document/core/exec/modules.rst +++ b/document/core/exec/modules.rst @@ -94,7 +94,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo 1. Let :math:`\tabletype` be the :ref:`table type ` of the table to allocate and :math:`\reff` the initialization value. -2. Let :math:`(\idxtype~\{\LMIN~n, \LMAX~m^?\}~\reftype)` be the structure of :ref:`table type ` :math:`\tabletype`. +2. Let :math:`(\addrtype~\{\LMIN~n, \LMAX~m^?\}~\reftype)` be the structure of :ref:`table type ` :math:`\tabletype`. 3. Let :math:`a` be the first free :ref:`table address ` in :math:`S`. @@ -108,7 +108,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo \begin{array}{rlll} \alloctable(S, \tabletype, \reff) &=& S', \tableaddr \\[1ex] \mbox{where:} \hfill \\ - \tabletype &=& \idxtype~\{\LMIN~n, \LMAX~m^?\}~\reftype \\ + \tabletype &=& \addrtype~\{\LMIN~n, \LMAX~m^?\}~\reftype \\ \tableaddr &=& |S.\STABLES| \\ \tableinst &=& \{ \TITYPE~\tabletype, \TIELEM~\reff^n \} \\ S' &=& S \compose \{\STABLES~\tableinst\} \\ @@ -123,7 +123,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo 1. Let :math:`\memtype` be the :ref:`memory type ` of the memory to allocate. -2. Let :math:`(\idxtype~\{\LMIN~n, \LMAX~m^?\})` be the structure of :ref:`memory type ` :math:`\memtype`. +2. Let :math:`(\addrtype~\{\LMIN~n, \LMAX~m^?\})` be the structure of :ref:`memory type ` :math:`\memtype`. 3. Let :math:`a` be the first free :ref:`memory address ` in :math:`S`. @@ -137,7 +137,7 @@ are *allocated* in a :ref:`store ` :math:`S`, as defined by the fo \begin{array}{rlll} \allocmem(S, \memtype) &=& S', \memaddr \\[1ex] \mbox{where:} \hfill \\ - \memtype &=& \idxtype~\{\LMIN~n, \LMAX~m^?\} \\ + \memtype &=& \addrtype~\{\LMIN~n, \LMAX~m^?\} \\ \memaddr &=& |S.\SMEMS| \\ \meminst &=& \{ \MITYPE~\memtype, \MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \} \\ S' &=& S \compose \{\SMEMS~\meminst\} \\ @@ -284,25 +284,25 @@ Growing :ref:`tables ` 2. Let :math:`\X{len}` be :math:`n` added to the length of :math:`\tableinst.\TIELEM`. -3. Let :math:`(\idxtype~\limits~\reftype)` be the structure of :ref:`table type ` :math:`\tableinst.\TITYPE`. +3. Let :math:`(\addrtype~\limits~\reftype)` be the structure of :ref:`table type ` :math:`\tableinst.\TITYPE`. 4. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. -5. If the :ref:`table type ` :math:`(\idxtype~\limits'~\reftype)` is not :ref:`valid `, then fail. +5. If the :ref:`table type ` :math:`(\addrtype~\limits'~\reftype)` is not :ref:`valid `, then fail. 6. Append :math:`\reff^n` to :math:`\tableinst.\TIELEM`. -7. Set :math:`\tableinst.\TITYPE` to the :ref:`table type ` :math:`(\idxtype~\limits'~\reftype)`. +7. Set :math:`\tableinst.\TITYPE` to the :ref:`table type ` :math:`(\addrtype~\limits'~\reftype)`. .. math:: \begin{array}{rllll} - \growtable(\tableinst, n, \reff) &=& \tableinst \with \TITYPE = \idxtype~\limits'~\reftype \with \TIELEM = \tableinst.\TIELEM~\reff^n \\ + \growtable(\tableinst, n, \reff) &=& \tableinst \with \TITYPE = \addrtype~\limits'~\reftype \with \TIELEM = \tableinst.\TIELEM~\reff^n \\ && ( \begin{array}[t]{@{}r@{~}l@{}} \iff & \X{len} = n + |\tableinst.\TIELEM| \\ - \wedge & \idxtype~\limits~\reftype = \tableinst.\TITYPE \\ + \wedge & \addrtype~\limits~\reftype = \tableinst.\TITYPE \\ \wedge & \limits' = \limits \with \LMIN = \X{len} \\ - \wedge & \vdashtabletype \idxtype~\limits'~\reftype \ok) \\ + \wedge & \vdashtabletype \addrtype~\limits'~\reftype \ok) \\ \end{array} \\ \end{array} @@ -319,25 +319,25 @@ Growing :ref:`memories ` 3. Let :math:`\X{len}` be :math:`n` added to the length of :math:`\meminst.\MIDATA` divided by the :ref:`page size ` :math:`64\,\F{Ki}`. -4. Let :math:`(\idxtype~\limits)` be the structure of :ref:`memory type ` :math:`\meminst.\MITYPE`. +4. Let :math:`(\addrtype~\limits)` be the structure of :ref:`memory type ` :math:`\meminst.\MITYPE`. 5. Let :math:`\limits'` be :math:`\limits` with :math:`\LMIN` updated to :math:`\X{len}`. -6. If the :ref:`memory type ` :math:`(\idxtype~\limits')` is not :ref:`valid `, then fail. +6. If the :ref:`memory type ` :math:`(\addrtype~\limits')` is not :ref:`valid `, then fail. 7. Append :math:`n` times :math:`64\,\F{Ki}` :ref:`bytes ` with value :math:`\hex{00}` to :math:`\meminst.\MIDATA`. -8. Set :math:`\meminst.\MITYPE` to the :ref:`memory type ` :math:`(\idxtype~\limits')`. +8. Set :math:`\meminst.\MITYPE` to the :ref:`memory type ` :math:`(\addrtype~\limits')`. .. math:: \begin{array}{rllll} - \growmem(\meminst, n) &=& \meminst \with \MITYPE = \idxtype~\limits' \with \MIDATA = \meminst.\MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \\ + \growmem(\meminst, n) &=& \meminst \with \MITYPE = \addrtype~\limits' \with \MIDATA = \meminst.\MIDATA~(\hex{00})^{n \cdot 64\,\F{Ki}} \\ && ( \begin{array}[t]{@{}r@{~}l@{}} \iff & \X{len} = n + |\meminst.\MIDATA| / 64\,\F{Ki} \\ - \wedge & \idxtype~\limits = \meminst.\MITYPE \\ + \wedge & \addrtype~\limits = \meminst.\MITYPE \\ \wedge & \limits' = \limits \with \LMIN = \X{len} \\ - \wedge & \vdashmemtype \idxtype~\limits' \ok) \\ + \wedge & \vdashmemtype \addrtype~\limits' \ok) \\ \end{array} \\ \end{array} diff --git a/document/core/syntax/types.rst b/document/core/syntax/types.rst index b9b3b73d2..5e17179f2 100644 --- a/document/core/syntax/types.rst +++ b/document/core/syntax/types.rst @@ -357,36 +357,36 @@ In a :ref:`module `, each member of a recursive type is assigned The syntax of sub types is :ref:`generalized ` for the purpose of specifying :ref:`validation ` and :ref:`execution `. -.. _index:: ! index type - pair: abstract syntax; index type - single: memory; index type - single: table; index type -.. _syntax-idxtype: +.. _index:: ! address type + pair: abstract syntax; address type + single: memory; address type + single: table; address type +.. _syntax-addrtype: -Index Type -~~~~~~~~~~ +Address Type +~~~~~~~~~~~~ -*Index types* classify the values that can be used to index into +*Address types* classify the values that can be used to index into :ref:`memories ` and :ref:`tables `. .. math:: \begin{array}{llll} - \production{index type} & \idxtype &::=& + \production{address type} & \addrtype &::=& \I32 ~|~ \I64 \\ \end{array} -.. _aux-idxtype-min: +.. _aux-addrtype-min: Conventions ........... -The *minimum* of two index types is defined as |I32| if either of the types are +The *minimum* of two address types is defined as |I32| if either of the types are |I32|, and |I64| otherwise. .. math:: \begin{array}{llll} - \itmin(\I64, \I64) &=& \I64 \\ - \itmin(\X{it}_1, \X{it}_2) &=& \I32 & (\otherwise) \\ + \atmin(\I64, \I64) &=& \I64 \\ + \atmin(\X{at}_1, \X{at}_2) &=& \I32 & (\otherwise) \\ \end{array} @@ -424,7 +424,7 @@ Memory Types .. math:: \begin{array}{llrl} \production{memory type} & \memtype &::=& - ~\idxtype~\limits \\ + ~\addrtype~\limits \\ \end{array} The limits constrain the minimum and optionally the maximum size of a memory. @@ -445,7 +445,7 @@ Table Types .. math:: \begin{array}{llrl} \production{table type} & \tabletype &::=& - ~\idxtype~\limits ~\reftype \\ + ~\addrtype~\limits ~\reftype \\ \end{array} Like memories, tables are constrained by limits for their minimum and optionally maximum size. diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst index c0cdc5e4f..3178332dd 100644 --- a/document/core/text/modules.rst +++ b/document/core/text/modules.rst @@ -378,12 +378,12 @@ A :ref:`data segment ` can be given inline with a memory definition, .. math:: \begin{array}{llclll} \production{module field} & - \text{(}~\text{memory}~~\Tid^?~~\X{it}^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{memory}~~\Tid'~~\X{it}^?~~m~~m~\text{)} \\ & \qquad - \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\X{it}'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} + \text{(}~\text{memory}~~\Tid^?~~\X{at}^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad + \text{(}~\text{memory}~~\Tid'~~\X{at}^?~~m~~m~\text{)} \\ & \qquad + \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\X{at}'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} \\ & \qquad\qquad (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad - \iff it^? \neq \epsilon \wedge \X{it}' = \X{it}^? \vee \X{it}^? = \epsilon \wedge \X{it}' = \text{i32}, \\ & \qquad\qquad + \iff \X{at}^? \neq \epsilon \wedge \X{at}' = \X{at}^? \vee \X{at}^? = \epsilon \wedge \X{at}' = \text{i32}, \\ & \qquad\qquad m = \F{ceil}(n / 64\,\F{Ki})), \\ \end{array} diff --git a/document/core/text/types.rst b/document/core/text/types.rst index 779d1c249..5c7e7386b 100644 --- a/document/core/text/types.rst +++ b/document/core/text/types.rst @@ -286,16 +286,16 @@ Similarly, final sub types with no super-types can omit the |Tsub| keyword and a \end{array} -.. index:: index type - pair: text format; index type -.. _text-idxtype: +.. index:: address type + pair: text format; address type +.. _text-addrtype: -Index Type -~~~~~~~~~~ +Address Types +~~~~~~~~~~~~~ .. math:: \begin{array}{llclll} - \production{index type} & \Tidxtype &::=& + \production{address type} & \Taddrtype &::=& \text{i32} &\Rightarrow& \I32 \\ &&|& \text{i64} &\Rightarrow& \I64 \\ \end{array} @@ -303,11 +303,11 @@ Index Type Abbreviations ............. -The index type can be omited, in which case it defaults :math:`\I32`: +The address type can be omited, in which case it defaults :math:`\I32`: .. math:: \begin{array}{llclll} - \production{index type} & + \production{address type} & \text{} &\equiv& \text{i32} \end{array} @@ -337,7 +337,7 @@ Memory Types .. math:: \begin{array}{llclll@{\qquad\qquad}l} \production{memory type} & \Tmemtype_I &::=& - \X{it}{:}\Tidxtype~~\X{lim}{:}\Tlimits &\Rightarrow& \X{it}~\X{lim} \\ + \X{at}{:}\Taddrtype~~\X{lim}{:}\Tlimits &\Rightarrow& \X{at}~\X{lim} \\ \end{array} @@ -351,7 +351,7 @@ Table Types .. math:: \begin{array}{llclll} \production{table type} & \Ttabletype_I &::=& - \X{it}{:}\Tidxtype~~\X{lim}{:}\Tlimits~~\X{et}{:}\Treftype_I &\Rightarrow& \X{it}~\X{lim}~\X{et} \\ + \X{at}{:}\Taddrtype~~\X{lim}{:}\Tlimits~~\X{et}{:}\Treftype_I &\Rightarrow& \X{at}~\X{lim}~\X{et} \\ \end{array} diff --git a/document/core/util/macros.def b/document/core/util/macros.def index 30516d8ef..8aae38810 100644 --- a/document/core/util/macros.def +++ b/document/core/util/macros.def @@ -286,7 +286,7 @@ .. |globaltype| mathdef:: \xref{syntax/types}{syntax-globaltype}{\X{globaltype}} .. |tabletype| mathdef:: \xref{syntax/types}{syntax-tabletype}{\X{tabletype}} -.. |idxtype| mathdef:: \xref{syntax/types}{syntax-idxtype}{\X{idxtype}} +.. |addrtype| mathdef:: \xref{syntax/types}{syntax-addrtype}{\X{addrtype}} .. |memtype| mathdef:: \xref{syntax/types}{syntax-memtype}{\X{memtype}} .. |tagtype| mathdef:: \xref{syntax/types}{syntax-tagtype}{\X{tagtype}} @@ -311,7 +311,7 @@ .. |unrollht| mathdef:: \xref{appendix/properties}{aux-unroll-heaptype}{\F{unroll}} .. |unpacktype| mathdef:: \xref{syntax/types}{aux-unpacktype}{\F{unpack}} -.. |itmin| mathdef:: \xref{syntax/types}{aux-idxtype-min}{\F{itmin}} +.. |atmin| mathdef:: \xref{syntax/types}{aux-addrtype-min}{\F{atmin}} .. |etfuncs| mathdef:: \xref{syntax/types}{syntax-externtype}{\F{funcs}} .. |ettables| mathdef:: \xref{syntax/types}{syntax-externtype}{\F{tables}} @@ -972,7 +972,7 @@ .. |Tglobaltype| mathdef:: \xref{text/types}{text-globaltype}{\T{globaltype}} .. |Ttabletype| mathdef:: \xref{text/types}{text-tabletype}{\T{tabletype}} -.. |Tidxtype| mathdef:: \xref{text/types}{text-idxtype}{\T{idxtype}} +.. |Taddrtype| mathdef:: \xref{text/types}{text-addrtype}{\T{addrtype}} .. |Tmemtype| mathdef:: \xref{text/types}{text-memtype}{\T{memtype}} .. |Tlimits| mathdef:: \xref{text/types}{text-limits}{\T{limits}} diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 9f7b29c04..01e09d93c 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1395,15 +1395,15 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. -* Then the instruction is valid with type :math:`[\X{it}] \to [t]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [t]`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t }{ - C \vdashinstr \TABLEGET~x : [\X{it}] \to [t] + C \vdashinstr \TABLEGET~x : [\X{at}] \to [t] } @@ -1414,15 +1414,15 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. -* Then the instruction is valid with type :math:`[\X{it}~t] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~t] \to []`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t }{ - C \vdashinstr \TABLESET~x : [\X{it}~t] \to [] + C \vdashinstr \TABLESET~x : [\X{at}~t] \to [] } @@ -1433,15 +1433,15 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. -* Then the instruction is valid with type :math:`[] \to [\X{it}]`. +* Then the instruction is valid with type :math:`[] \to [\X{at}]`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t }{ - C \vdashinstr \TABLESIZE~x : [] \to [\X{it}] + C \vdashinstr \TABLESIZE~x : [] \to [\X{at}] } @@ -1452,15 +1452,15 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. -* Then the instruction is valid with type :math:`[t~\X{it}] \to [\X{it}]`. +* Then the instruction is valid with type :math:`[t~\X{at}] \to [\X{at}]`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t }{ - C \vdashinstr \TABLEGROW~x : [t~\X{it}] \to [\X{it}] + C \vdashinstr \TABLEGROW~x : [t~\X{at}] \to [\X{at}] } @@ -1471,15 +1471,15 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. -* Then the instruction is valid with type :math:`[\X{it}~t~\X{it}] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~t~\X{at}] \to []`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t }{ - C \vdashinstr \TABLEFILL~x : [\X{it}~t~\X{it}] \to [] + C \vdashinstr \TABLEFILL~x : [\X{at}~t~\X{at}] \to [] } @@ -1490,27 +1490,27 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}_1~\limits_1~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}_1~\limits_1~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`. * The table :math:`C.\CTABLES[y]` must be defined in the context. -* Let :math:`\X{it}_2~\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`. +* Let :math:`\X{at}_2~\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`. -* Let :math:`\X{it}` be the :ref:`minimum ` of :math:`\X{it}_1` and :math:`\X{it}_2` +* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_1` and :math:`\X{at}_2` * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`. -* Then the instruction is valid with type :math:`[\X{it}_1~\X{it}_2~\itmin(\X{it}_1, \X{it}_2)] \to []`. +* Then the instruction is valid with type :math:`[\X{at}_1~\X{at}_2~\atmin(\X{at}_1, \X{at}_2)] \to []`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits_1~t_1 + C.\CTABLES[x] = \X{at}~\limits_1~t_1 \qquad - C.\CTABLES[y] = \X{it}~\limits_2~t_2 + C.\CTABLES[y] = \X{at}~\limits_2~t_2 \qquad C \vdashreftypematch t_2 \matchesvaltype t_1 }{ - C \vdashinstr \TABLECOPY~x~y : [\X{it}_1~\X{it}_2~\itmin(\X{it}_1, \X{it}_2)] \to [] + C \vdashinstr \TABLECOPY~x~y : [\X{at}_1~\X{at}_2~\atmin(\X{at}_1, \X{at}_2)] \to [] } @@ -1521,7 +1521,7 @@ Table Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t_1` be the :ref:`table type ` :math:`C.\CTABLES[x]`. * The element segment :math:`C.\CELEMS[y]` must be defined in the context. @@ -1529,17 +1529,17 @@ Table Instructions * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`. -* Then the instruction is valid with type :math:`[\X{it}~\I32~\I32] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~\I32~\I32] \to []`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t_1 + C.\CTABLES[x] = \X{at}~\limits~t_1 \qquad C.\CELEMS[y] = t_2 \qquad C \vdashreftypematch t_2 \matchesvaltype t_1 }{ - C \vdashinstr \TABLEINIT~x~y : [\X{it}~\I32~\I32] \to [] + C \vdashinstr \TABLEINIT~x~y : [\X{at}~\I32~\I32] \to [] } @@ -1576,23 +1576,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`. -* Then the instruction is valid with type :math:`[\X{it}] \to [t]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [t]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq |t|/8 }{ - C \vdashinstr t\K{.load}~x~\memarg : [\X{it}] \to [t] + C \vdashinstr t\K{.load}~x~\memarg : [\X{at}] \to [t] } @@ -1603,23 +1603,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. -* Then the instruction is valid with type :math:`[\X{it}] \to [t]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [t]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ - C \vdashinstr t\K{.load}N\K{\_}\sx~x~\memarg : [\X{it}] \to [t] + C \vdashinstr t\K{.load}N\K{\_}\sx~x~\memarg : [\X{at}] \to [t] } @@ -1628,23 +1628,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than the :ref:`bit width ` of :math:`t` divided by :math:`8`. -* Then the instruction is valid with type :math:`[\X{it}~t] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~t] \to []`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq |t|/8 }{ - C \vdashinstr t\K{.store}~x~\memarg : [\X{it}~t] \to [] + C \vdashinstr t\K{.store}~x~\memarg : [\X{at}~t] \to [] } @@ -1655,23 +1655,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. -* Then the instruction is valid with type :math:`[\X{it}~t] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~t] \to []`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ - C \vdashinstr t\K{.store}N~x~\memarg : [\X{it}~t] \to [] + C \vdashinstr t\K{.store}N~x~\memarg : [\X{at}~t] \to [] } @@ -1682,23 +1682,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8 \cdot M`. -* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [\V128]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 \cdot M }{ - C \vdashinstr \K{v128.}\LOAD{N}\K{x}M\_\sx~x~\memarg : [\X{it}] \to [\V128] + C \vdashinstr \K{v128.}\LOAD{N}\K{x}M\_\sx~x~\memarg : [\X{at}] \to [\V128] } @@ -1709,23 +1709,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. -* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [\V128]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ - C \vdashinstr \K{v128.}\LOAD{N}\K{\_splat}~x~\memarg : [\X{it}] \to [\V128] + C \vdashinstr \K{v128.}\LOAD{N}\K{\_splat}~x~\memarg : [\X{at}] \to [\V128] } @@ -1736,23 +1736,23 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. -* Then the instruction is valid with type :math:`[\X{it}] \to [\V128]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [\V128]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 }{ - C \vdashinstr \K{v128.}\LOAD{N}\K{\_zero}~x~\memarg : [\X{it}] \to [\V128] + C \vdashinstr \K{v128.}\LOAD{N}\K{\_zero}~x~\memarg : [\X{at}] \to [\V128] } @@ -1763,27 +1763,27 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * The lane index :math:`\laneidx` must be smaller than :math:`128/N`. -* Then the instruction is valid with type :math:`[\X{it}~\V128] \to [\V128]`. +* Then the instruction is valid with type :math:`[\X{at}~\V128] \to [\V128]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 \qquad \laneidx < 128/N }{ - C \vdashinstr \K{v128.}\LOAD{N}\K{\_lane}~x~\memarg~\laneidx : [\X{it}~\V128] \to [\V128] + C \vdashinstr \K{v128.}\LOAD{N}\K{\_lane}~x~\memarg~\laneidx : [\X{at}~\V128] \to [\V128] } @@ -1794,27 +1794,27 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{it}|}`. +* The offset :math:`\memarg.\OFFSET` must be less than :math:`2^{|\X{at}|}`. * The alignment :math:`2^{\memarg.\ALIGN}` must not be larger than :math:`N/8`. * The lane index :math:`\laneidx` must be smaller than :math:`128/N`. -* Then the instruction is valid with type :math:`[\X{it}~\V128] \to [\V128]`. +* Then the instruction is valid with type :math:`[\X{at}~\V128] \to [\V128]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad - \memarg.\OFFSET < 2^{|\X{it}|} + \memarg.\OFFSET < 2^{|\X{at}|} \qquad 2^{\memarg.\ALIGN} \leq N/8 \qquad \laneidx < 128/N }{ - C \vdashinstr \K{v128.}\STORE{N}\K{\_lane}~x~\memarg~\laneidx : [\X{it}~\V128] \to [] + C \vdashinstr \K{v128.}\STORE{N}\K{\_lane}~x~\memarg~\laneidx : [\X{at}~\V128] \to [] } @@ -1825,15 +1825,15 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* Then the instruction is valid with type :math:`[] \to [\X{it}]`. +* Then the instruction is valid with type :math:`[] \to [\X{at}]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits }{ - C \vdashinstr \MEMORYSIZE~x : [] \to [\X{it}] + C \vdashinstr \MEMORYSIZE~x : [] \to [\X{at}] } @@ -1844,15 +1844,15 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* Then the instruction is valid with type :math:`[\X{it}] \to [\X{it}]`. +* Then the instruction is valid with type :math:`[\X{at}] \to [\X{at}]`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits }{ - C \vdashinstr \MEMORYGROW~x : [\X{it}] \to [\X{it}] + C \vdashinstr \MEMORYGROW~x : [\X{at}] \to [\X{at}] } @@ -1863,15 +1863,15 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* Then the instruction is valid with type :math:`[\X{it}~\I32~\X{it}] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~\I32~\X{at}] \to []`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits }{ - C \vdashinstr \MEMORYFILL~x : [\X{it}~\I32~\X{it}] \to [] + C \vdashinstr \MEMORYFILL~x : [\X{at}~\I32~\X{at}] \to [] } @@ -1884,21 +1884,21 @@ Memory Instructions * The memory :math:`C.\CMEMS[y]` must be defined in the context. -* Let :math:`\X{it}_x~\limits_x` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}_x~\limits_x` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. -* Let :math:`\X{it}_y~\limits_y` be the :ref:`memory type ` :math:`C.\CMEMS[y]`. +* Let :math:`\X{at}_y~\limits_y` be the :ref:`memory type ` :math:`C.\CMEMS[y]`. -* Let :math:`\X{it}` be the :ref:`minimum ` of :math:`\X{it}_x` and :math:`\X{it}_y` +* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y` -* Then the instruction is valid with type :math:`[\X{it}_x~\X{it}_y~\itmin(\X{it}_x, \X{it}_y)] \to []`. +* Then the instruction is valid with type :math:`[\X{at}_x~\X{at}_y~\atmin(\X{at}_x, \X{at}_y)] \to []`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}_x~\limits_y + C.\CMEMS[x] = \X{at}_x~\limits_y \qquad - C.\CMEMS[y] = \X{it}_y~\limits_y + C.\CMEMS[y] = \X{at}_y~\limits_y }{ - C \vdashinstr \MEMORYCOPY~x~y : [\X{it}_x~\X{it}_y~\itmin(\X{it}_x, \X{it}_y)] \to [] + C \vdashinstr \MEMORYCOPY~x~y : [\X{at}_x~\X{at}_y~\atmin(\X{at}_x, \X{at}_y)] \to [] } @@ -1909,19 +1909,19 @@ Memory Instructions * The memory :math:`C.\CMEMS[x]` must be defined in the context. -* Let :math:`\X{it}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. +* Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`C.\CMEMS[x]`. * The data segment :math:`C.\CDATAS[y]` must be defined in the context. -* Then the instruction is valid with type :math:`[\X{it}~\I32~\I32] \to []`. +* Then the instruction is valid with type :math:`[\X{at}~\I32~\I32] \to []`. .. math:: \frac{ - C.\CMEMS[x] = \X{it}~\limits + C.\CMEMS[x] = \X{at}~\limits \qquad C.\CDATAS[y] = {\ok} }{ - C \vdashinstr \MEMORYINIT~x~y : [\X{it}~\I32~\I32] \to [] + C \vdashinstr \MEMORYINIT~x~y : [\X{at}~\I32~\I32] \to [] } @@ -2474,7 +2474,7 @@ Control Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. * The :ref:`reference type ` :math:`t` must :ref:`match ` type :math:`\REF~\NULL~\FUNC`. @@ -2482,17 +2482,17 @@ Control Instructions * The :ref:`expansion ` of :math:`C.\CTYPES[y]` must be a :ref:`function type ` :math:`\TFUNC~[t_1^\ast] \toF [t_2^\ast]`. -* Then the instruction is valid with type :math:`[t_1^\ast~\X{it}] \to [t_2^\ast]`. +* Then the instruction is valid with type :math:`[t_1^\ast~\X{at}] \to [t_2^\ast]`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t \qquad C \vdashvaltypematch t \matchesreftype \REF~\NULL~\FUNC \qquad \expanddt(C.\CTYPES[y]) = \TFUNC~[t_1^\ast] \toF [t_2^\ast] }{ - C \vdashinstr \CALLINDIRECT~x~y : [t_1^\ast~\X{it}] \to [t_2^\ast] + C \vdashinstr \CALLINDIRECT~x~y : [t_1^\ast~\X{at}] \to [t_2^\ast] } @@ -2563,7 +2563,7 @@ Control Instructions * The table :math:`C.\CTABLES[x]` must be defined in the context. -* Let :math:`\X{it}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. +* Let :math:`\X{at}~\limits~t` be the :ref:`table type ` :math:`C.\CTABLES[x]`. * The :ref:`reference type ` :math:`t` must :ref:`match ` type :math:`\REF~\NULL~\FUNC`. @@ -2573,11 +2573,11 @@ Control Instructions * The :ref:`result type ` :math:`[t_2^\ast]` must :ref:`match ` :math:`C.\CRETURN`. -* Then the instruction is valid with type :math:`[t_3^\ast~t_1^\ast~\X{it}] \to [t_4^\ast]`, for any sequences of :ref:`value types ` :math:`t_3^\ast` and :math:`t_4^\ast`. +* Then the instruction is valid with type :math:`[t_3^\ast~t_1^\ast~\X{at}] \to [t_4^\ast]`, for any sequences of :ref:`value types ` :math:`t_3^\ast` and :math:`t_4^\ast`. .. math:: \frac{ - C.\CTABLES[x] = \X{it}~\limits~t + C.\CTABLES[x] = \X{at}~\limits~t \qquad C \vdashvaltypematch t \matchesreftype \REF~\NULL~\FUNC \qquad @@ -2587,7 +2587,7 @@ Control Instructions \qquad C \vdashinstrtype [t_3^\ast~t_1^\ast~\I32] \to [t_4^\ast] \ok }{ - C \vdashinstr \RETURNCALLINDIRECT~x~y : [t_3^\ast~t_1^\ast~\X{it}] \to [t_4^\ast] + C \vdashinstr \RETURNCALLINDIRECT~x~y : [t_3^\ast~t_1^\ast~\X{at}] \to [t_4^\ast] } .. note:: diff --git a/document/core/valid/matching.rst b/document/core/valid/matching.rst index c4dda45b4..75ff8c08e 100644 --- a/document/core/valid/matching.rst +++ b/document/core/valid/matching.rst @@ -502,9 +502,9 @@ Limits Table Types ~~~~~~~~~~~ -A :ref:`table type ` :math:`(\idxtype_1~\limits_1~\reftype_1)` matches :math:`(\idxtype_2~\limits_2~\reftype_2)` if and only if: +A :ref:`table type ` :math:`(\addrtype_1~\limits_1~\reftype_1)` matches :math:`(\addrtype_2~\limits_2~\reftype_2)` if and only if: -* Index types :math:`\idxtype_1` and :math:`\idxtype_2` are the same. +* Address types :math:`\addrtype_1` and :math:`\addrtype_2` are the same. * Limits :math:`\limits_1` :ref:`match ` :math:`\limits_2`. @@ -513,7 +513,7 @@ A :ref:`table type ` :math:`(\idxtype_1~\limits_1~\reftype_1)` .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \idxtype_1 \matchesnumtype \idxtype_2 + C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 \qquad @@ -521,7 +521,7 @@ A :ref:`table type ` :math:`(\idxtype_1~\limits_1~\reftype_1)` \qquad C \vdashreftypematch \reftype_2 \matchesreftype \reftype_1 }{ - C \vdashtabletypematch \idxtype_1~\limits_1~\reftype_1 \matchestabletype \idxtype_2~\limits_2~\reftype_2 + C \vdashtabletypematch \addrtype_1~\limits_1~\reftype_1 \matchestabletype \addrtype_2~\limits_2~\reftype_2 } @@ -531,9 +531,9 @@ A :ref:`table type ` :math:`(\idxtype_1~\limits_1~\reftype_1)` Memory Types ~~~~~~~~~~~~ -A :ref:`memory type ` :math:`(\idxtype_1~\limits_1)` matches :math:`(\idxtype_2~\limits_2)` if and only if: +A :ref:`memory type ` :math:`(\addrtype_1~\limits_1)` matches :math:`(\addrtype_2~\limits_2)` if and only if: -* Index types :math:`\idxtype_1` and :math:`\idxtype_2` are the same. +* Address types :math:`\addrtype_1` and :math:`\addrtype_2` are the same. * Limits :math:`\limits_1` :ref:`match ` :math:`\limits_2`. @@ -541,7 +541,7 @@ A :ref:`memory type ` :math:`(\idxtype_1~\limits_1)` matches :ma .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \idxtype_1 \matchesnumtype \idxtype_2 + C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 }{ diff --git a/document/core/valid/types.rst b/document/core/valid/types.rst index 1eab64635..c1a97cb07 100644 --- a/document/core/valid/types.rst +++ b/document/core/valid/types.rst @@ -501,10 +501,10 @@ Limits Table Types ~~~~~~~~~~~ -:math:`\idxtype~\limits~\reftype` -................................. +:math:`\addrtype~\limits~\reftype` +.................................. -* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\idxtype|}-1`. +* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\addrtype|}-1`. * The reference type :math:`\reftype` must be :ref:`valid `. @@ -512,11 +512,11 @@ Table Types .. math:: \frac{ - C \vdashlimits \limits : 2^{|\idxtype|}-1 + C \vdashlimits \limits : 2^{|\addrtype|}-1 \qquad C \vdashreftype \reftype \ok }{ - C \vdashtabletype \idxtype~\limits~\reftype \ok + C \vdashtabletype \addrtype~\limits~\reftype \ok } @@ -528,16 +528,16 @@ Table Types Memory Types ~~~~~~~~~~~~ -:math:`\idxtype~\limits` -........................ +:math:`\addrtype~\limits` +......................... -* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\idxtype|-16}`. +* The limits :math:`\limits` must be :ref:`valid ` within range :math:`2^{|\addrtype|-16}`. * Then the memory type is valid. .. math:: \frac{ - C \vdashlimits \limits : 2^{|\idxtype|-16} + C \vdashlimits \limits : 2^{|\addrtype|-16} }{ C \vdashmemtype \limits \ok } diff --git a/document/js-api/index.bs b/document/js-api/index.bs index a14b5559a..65233ca9f 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -124,7 +124,7 @@ urlPrefix: https://webassembly.github.io/spec/core/; spec: WebAssembly; type: df text: match_valtype; url: appendix/embedding.html#embed-match-valtype text: error; url: appendix/embedding.html#embed-error text: store; url: exec/runtime.html#syntax-store - text: index type; url: syntax/types.html#syntax-idxtype + text: address type; url: syntax/types.html#syntax-addrtype text: table type; url: syntax/types.html#syntax-tabletype text: table address; url: exec/runtime.html#syntax-tableaddr text: function address; url: exec/runtime.html#syntax-funcaddr @@ -566,12 +566,12 @@ enum ImportExportKind { "tag" }; -enum IndexType { +enum AddressType { "i32", "i64", }; -typedef any IndexValue; +typedef any AddressValue; dictionary ModuleExportDescriptor { required USVString name; @@ -677,15 +677,15 @@ Note: The use of this synchronous API is discouraged, as some implementations so
 dictionary MemoryDescriptor {
-  required IndexValue initial;
-  IndexValue maximum;
-  IndexType index;
+  required AddressValue initial;
+  AddressValue maximum;
+  AddressType addressType;
 };
 
 [LegacyNamespace=WebAssembly, Exposed=*]
 interface Memory {
   constructor(MemoryDescriptor descriptor);
-  IndexValue grow(IndexValue delta);
+  AddressValue grow(AddressValue delta);
   ArrayBuffer toFixedLengthBuffer();
   ArrayBuffer toResizableBuffer();
   readonly attribute ArrayBuffer buffer;
@@ -748,11 +748,11 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
 
 
The Memory(|descriptor|) constructor, when invoked, performs the following steps: - 1. If |descriptor|["index"] [=map/exists=], let |indextype| be |descriptor|["index"]; otherwise, let |indextype| be "i32". - 1. Let |initial| be [=?=] [=IndexValueToU64=](|descriptor|["initial"], |indextype|). - 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=IndexValueToU64=](|descriptor|["maximum"], |indextype|); otherwise, let |maximum| be empty. + 1. If |descriptor|["addressType"] [=map/exists=], let |addrtype| be |descriptor|["addressType"]; otherwise, let |addrtype| be "i32". + 1. Let |initial| be [=?=] [=AddressValueToU64=](|descriptor|["initial"], |addrtype|). + 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=AddressValueToU64=](|descriptor|["maximum"], |addrtype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. - 1. Let |memtype| be |indextype| { **min** |initial|, **max** |maximum| }. + 1. Let |memtype| be |addrtype| { **min** |initial|, **max** |maximum| }. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |memaddr|) be [=mem_alloc=](|store|, |memtype|). If allocation fails, throw a {{RangeError}} exception. 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -792,10 +792,10 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each The grow(|delta|) method, when invoked, performs the following steps: 1. Let |memaddr| be **this**.\[[Memory]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let |indextype| be the [=index type=] in [=mem_type=](|store|, |memaddr|). - 1. Let |delta64| be [=?=] [=IndexValueToU64=](|delta|, |indextype|). + 1. Let |addrtype| be the [=address type=] in [=mem_type=](|store|, |memaddr|). + 1. Let |delta64| be [=?=] [=AddressValueToU64=](|delta|, |addrtype|). 1. Let |ret| be the result of [=grow the memory buffer|growing the memory buffer=] associated with |memaddr| by |delta64|. - 1. Return [=U64ToIndexValue=](|ret|, |indextype|). + 1. Return [=U64ToAddressValue=](|ret|, |addrtype|).
Immediately after a WebAssembly [=memory.grow=] instruction executes, perform the following steps: @@ -873,18 +873,18 @@ enum TableKind { dictionary TableDescriptor { required TableKind element; - required IndexValue initial; - IndexValue maximum; - IndexType index; + required AddressValue initial; + AddressValue maximum; + AddressType addressType; }; [LegacyNamespace=WebAssembly, Exposed=*] interface Table { constructor(TableDescriptor descriptor, optional any value); - IndexValue grow(IndexValue delta, optional any value); - any get(IndexValue index); - undefined set(IndexValue index, optional any value); - readonly attribute IndexValue length; + AddressValue grow(AddressValue delta, optional any value); + any get(AddressValue index); + undefined set(AddressValue index, optional any value); + readonly attribute AddressValue length; };
@@ -915,16 +915,16 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. Let |elementtype| be [=ToValueType=](|descriptor|["element"]). 1. If |elementtype| is not a [=reftype=], 1. [=Throw=] a {{TypeError}} exception. - 1. If |descriptor|["index"] [=map/exists=], let |indextype| be |descriptor|["index"]; otherwise, let |indextype| be "i32". - 1. Let |initial| be [=?=] [=IndexValueToU64=](|descriptor|["initial"], |indextype|). - 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=IndexValueToU64=](|descriptor|["maximum"], |indextype|); otherwise, let |maximum| be empty. + 1. If |descriptor|["addressType"] [=map/exists=], let |addrtype| be |descriptor|["addressType"]; otherwise, let |addrtype| be "i32". + 1. Let |initial| be [=?=] [=AddressValueToU64=](|descriptor|["initial"], |addrtype|). + 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=AddressValueToU64=](|descriptor|["maximum"], |addrtype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. 1. If |value| is missing, 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. Assert: |ref| is not [=error=]. 1. Otherwise, 1. Let |ref| be [=?=] [=ToWebAssemblyValue=](|value|, |elementtype|). - 1. Let |type| be the [=table type=] (|indextype|, { **min** |initial|, **max** |maximum| }, |elementtype|). + 1. Let |type| be the [=table type=] (|addrtype|, { **min** |initial|, **max** |maximum| }, |elementtype|). 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let (|store|, |tableaddr|) be [=table_alloc=](|store|, |type|, |ref|). 1. Set the [=surrounding agent=]'s [=associated store=] to |store|. @@ -936,8 +936,8 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. 1. Let |initialSize| be [=table_size=](|store|, |tableaddr|). - 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). - 1. Let |delta64| be [=?=] [=IndexValueToU64=](|delta|, |indextype|). + 1. Let (|addrtype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. Let |delta64| be [=?=] [=AddressValueToU64=](|delta|, |addrtype|). 1. If |value| is missing, 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. If |ref| is [=error=], throw a {{TypeError}} exception. @@ -956,19 +956,19 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address The getter of the length attribute of {{Table}}, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let |indextype| be the [=index type=] in [=table_type=](|store|, |tableaddr|). + 1. Let |addrtype| be the [=address type=] in [=table_type=](|store|, |tableaddr|). 1. Let |length64| be [=table_size=](|store|, |tableaddr|). - 1. Return [=U64ToIndexValue=](|length64|, |indextype|). + 1. Return [=U64ToAddressValue=](|length64|, |addrtype|).
The get(|index|) method, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. Let (|addrtype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). 1. If |elementtype| is [=exnref=], 1. Throw a {{TypeError}} exception. - 1. Let |index64| be [=?=] [=IndexValueToU64=](|index|, |indextype|). + 1. Let |index64| be [=?=] [=AddressValueToU64=](|index|, |addrtype|). 1. Let |result| be [=table_read=](|store|, |tableaddr|, |index64|). 1. If |result| is [=error=], throw a {{RangeError}} exception. 1. Return [=ToJSValue=](|result|). @@ -978,10 +978,10 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address The set(|index|, |value|) method, when invoked, performs the following steps: 1. Let |tableaddr| be **this**.\[[Table]]. 1. Let |store| be the [=surrounding agent=]'s [=associated store=]. - 1. Let (|indextype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). + 1. Let (|addrtype|, limits, |elementtype|) be [=table_type=](|store|, |tableaddr|). 1. If |elementtype| is [=exnref=], 1. Throw a {{TypeError}} exception. - 1. Let |index64| be [=?=] [=IndexValueToU64=](|index|, |indextype|). + 1. Let |index64| be [=?=] [=AddressValueToU64=](|index|, |addrtype|). 1. If |value| is missing, 1. Let |ref| be [=DefaultValue=](|elementtype|). 1. If |ref| is [=error=], throw a {{TypeError}} exception. @@ -1358,14 +1358,14 @@ The algorithm ToWebAssemblyValue(|v|, |type|) coerces a JavaScript va
-The algorithm IndexValueToU64(|v|, |indextype|) converts a JavaScript value to a WebAssembly [=u64=] for use in embedding operations. It is designed to act like [=[EnforceRange]=] [=unsigned long=] for {{IndexType}} "i32", and to extend these semantics to {{IndexType}} "i64", by performing the following steps: +The algorithm AddressValueToU64(|v|, |addrtype|) converts a JavaScript value to a WebAssembly [=u64=] for use in embedding operations. It is designed to act like [=[EnforceRange]=] [=unsigned long=] for {{AddressType}} "i32", and to extend these semantics to {{AddressType}} "i64", by performing the following steps: -1. If |indextype| is "i32", +1. If |addrtype| is "i32", 1. Let |n| be [=?=] [$ConvertToInt$](|v|, 32, "unsigned"), where the destination type is associated with [=[EnforceRange]=]. Note: This is equivalent to the [=js-unsigned-long|JS conversion rules=] for [=[EnforceRange]=] [=unsigned long=]. 1. Return [=ℝ=](|n|) as a WebAssembly [=u64=]. -1. If |indextype| is "i64", +1. If |addrtype| is "i64", 1. Let |n| be [=?=] [$ToBigInt$](|v|). 1. If |n| < 0 or |n| > 264 − 1, [=throw=] a {{TypeError}}. @@ -1376,10 +1376,10 @@ The algorithm IndexValueToU64(|v|, |indextype|) converts a JavaScript
-The algorithm U64ToIndexValue(|v|, |indextype|) converts a [=u64=] value from a WebAssembly embedding operation to the correct variant of {{IndexValue}} for an {{IndexType}}, by performing the following steps: +The algorithm U64ToAddressValue(|v|, |addrtype|) converts a [=u64=] value from a WebAssembly embedding operation to the correct variant of {{AddressValue}} for an {{AddressType}}, by performing the following steps: -1. If |indextype| is "i32", return [=𝔽=](|v| interpreted as a [=mathematical value=]). -1. Else if |indextype| is "i64", return [=ℤ=](|v| interpreted as a [=mathematical value=]). +1. If |addrtype| is "i32", return [=𝔽=](|v| interpreted as a [=mathematical value=]). +1. Else if |addrtype| is "i64", return [=ℤ=](|v| interpreted as a [=mathematical value=]). 1. Assert: This step is not reached.
diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 4ca94d68b..1db0dce4f 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -289,11 +289,11 @@ let limits uN s = let table_type s = let t = ref_type s in let lim, is64 = limits u64 s in - TableT (lim, (if is64 then I64IndexType else I32IndexType), t) + TableT (lim, (if is64 then I64AddrType else I32AddrType), t) let memory_type s = let lim, is64 = limits u64 s in - MemoryT (lim, if is64 then I64IndexType else I32IndexType) + MemoryT (lim, if is64 then I64AddrType else I32AddrType) let global_type s = let t = val_type s in @@ -1099,7 +1099,7 @@ let table s = ); (fun s -> let at = region s (pos s) (pos s) in - let TableT (_, _it, (_, ht)) as ttype = table_type s in + let TableT (_, _at, (_, ht)) as ttype = table_type s in {ttype; tinit = [RefNull ht @@ at] @@ at} ); ] s diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index aca2a5454..3e7003a89 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -194,15 +194,15 @@ struct | RecT [st] -> sub_type st | RecT sts -> s7 (-0x32); vec sub_type sts - let limits vu {min; max} it = - let flags = flag (max <> None) 0 + flag (it = I64IndexType) 2 in + let limits vu {min; max} at = + let flags = flag (max <> None) 0 + flag (at = I64AddrType) 2 in byte flags; vu min; opt vu max let table_type = function - | TableT (lim, it, t) -> ref_type t; limits u64 lim it + | TableT (lim, at, t) -> ref_type t; limits u64 lim at let memory_type = function - | MemoryT (lim, it) -> limits u64 lim it + | MemoryT (lim, at) -> limits u64 lim at let global_type = function | GlobalT (mut, t) -> val_type t; mutability mut @@ -972,7 +972,7 @@ struct let table tab = let {ttype; tinit} = tab.it in match ttype, tinit.it with - | TableT (_, _it, (_, ht1)), [{it = RefNull ht2; _}] when ht1 = ht2 -> + | TableT (_, _at, (_, ht1)), [{it = RefNull ht2; _}] when ht1 = ht2 -> table_type ttype | _ -> op 0x40; op 0x00; table_type ttype; const tinit diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index 2d632dc9f..c5631d1ba 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -385,7 +385,7 @@ let rec step (c : config) : config = | TableSize x, vs -> let tab = table c.frame.inst x in - value_of_index (Table.index_type_of tab) (Table.size (table c.frame.inst x)) :: vs, [] + value_of_addr (Table.addr_type_of tab) (Table.size (table c.frame.inst x)) :: vs, [] | TableGrow x, Num delta :: Ref r :: vs' -> let tab = table c.frame.inst x in @@ -393,7 +393,7 @@ let rec step (c : config) : config = let result = try Table.grow tab (Table.index_of_num delta) r; old_size with Table.SizeOverflow | Table.SizeLimit | Table.OutOfMemory -> -1L - in (value_of_index (Table.index_type_of tab) result) :: vs', [] + in (value_of_addr (Table.addr_type_of tab) result) :: vs', [] | TableFill x, Num n :: Ref r :: Num i :: vs' -> let n_64 = Table.index_of_num n in @@ -552,7 +552,7 @@ let rec step (c : config) : config = | MemorySize x, vs -> let mem = memory c.frame.inst x in - value_of_index (Memory.index_type_of mem) (Memory.size mem) :: vs, [] + value_of_addr (Memory.addr_type_of mem) (Memory.size mem) :: vs, [] | MemoryGrow x, Num delta :: vs' -> let mem = memory c.frame.inst x in @@ -560,7 +560,7 @@ let rec step (c : config) : config = let result = try Memory.grow mem (Memory.address_of_num delta); old_size with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1L - in (value_of_index (Memory.index_type_of mem) result) :: vs', [] + in (value_of_addr (Memory.addr_type_of mem) result) :: vs', [] | MemoryFill x, Num n :: Num k :: Num i :: vs' -> let n_64 = Memory.address_of_num n in diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml index 0ab23ec4c..aaf8f0665 100644 --- a/interpreter/host/spectest.ml +++ b/interpreter/host/spectest.ml @@ -20,15 +20,15 @@ let global (GlobalT (_, t) as gt) = in ExternGlobal (Global.alloc gt v) let table = - let tt = TableT ({min = 10L; max = Some 20L}, I32IndexType, (Null, FuncHT)) in + let tt = TableT ({min = 10L; max = Some 20L}, I32AddrType, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let table64 = - let tt = TableT ({min = 10L; max = Some 20L}, I64IndexType, (Null, FuncHT)) in + let tt = TableT ({min = 10L; max = Some 20L}, I64AddrType, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let memory = - let mt = MemoryT ({min = 1L; max = Some 2L}, I32IndexType) in + let mt = MemoryT ({min = 1L; max = Some 2L}, I32AddrType) in ExternMemory (Memory.alloc mt) let func f ft = diff --git a/interpreter/runtime/memory.ml b/interpreter/runtime/memory.ml index 03571a730..113a9cd25 100644 --- a/interpreter/runtime/memory.ml +++ b/interpreter/runtime/memory.ml @@ -25,8 +25,8 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let create n it = - if I64.gt_u n 0x10000L && it = I32IndexType then raise SizeOverflow else +let create n at = + if I64.gt_u n 0x10000L && at = I32AddrType then raise SizeOverflow else try let size = Int64.(mul n page_size) in let mem = Array1_64.create Int8_unsigned C_layout size in @@ -34,10 +34,10 @@ let create n it = mem with Out_of_memory -> raise OutOfMemory -let alloc (MemoryT (lim, it) as ty) = +let alloc (MemoryT (lim, at) as ty) = assert Free.((memory_type ty).types = Set.empty); if not (valid_limits lim) then raise Type; - {ty; content = create lim.min it} + {ty; content = create lim.min at} let bound mem = Array1_64.dim mem.content @@ -48,8 +48,8 @@ let size mem = let type_of mem = mem.ty -let index_type_of mem = - let (MemoryT (_, it)) = type_of mem in it +let addr_type_of mem = + let (MemoryT (_, at)) = type_of mem in at let address_of_num x = match x with @@ -63,17 +63,17 @@ let address_of_value x = | _ -> raise Type let grow mem delta = - let MemoryT (lim, it) = mem.ty in + let MemoryT (lim, at) = mem.ty in assert (lim.min = size mem); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in if not (valid_limits lim') then raise SizeLimit else - let after = create new_size (index_type_of mem) in + let after = create new_size (addr_type_of mem) in let dim = Array1_64.dim mem.content in Array1.blit (Array1_64.sub mem.content 0L dim) (Array1_64.sub after 0L dim); - mem.ty <- MemoryT (lim', it); + mem.ty <- MemoryT (lim', at); mem.content <- after let load_byte mem a = diff --git a/interpreter/runtime/memory.mli b/interpreter/runtime/memory.mli index ab06999d3..da9f468f8 100644 --- a/interpreter/runtime/memory.mli +++ b/interpreter/runtime/memory.mli @@ -19,7 +19,7 @@ val page_size : int64 val alloc : memory_type -> memory (* raises Type, SizeOverflow, OutOfMemory *) val type_of : memory -> memory_type -val index_type_of : memory -> index_type +val addr_type_of : memory -> addr_type val size : memory -> size val bound : memory -> address val address_of_value : value -> address diff --git a/interpreter/runtime/table.ml b/interpreter/runtime/table.ml index 0db065c90..b18dbd5df 100644 --- a/interpreter/runtime/table.ml +++ b/interpreter/runtime/table.ml @@ -19,16 +19,16 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let valid_index it i = - match it with - | I32IndexType -> I64.le_u i 0xffff_ffffL - | I64IndexType -> true +let valid_addr at i = + match at with + | I32AddrType -> I64.le_u i 0xffff_ffffL + | I64AddrType -> true let create size r = try Lib.Array64.make size r with Out_of_memory | Invalid_argument _ -> raise OutOfMemory -let alloc (TableT (lim, it, t) as ty) r = +let alloc (TableT (lim, at, t) as ty) r = assert Free.((ref_type t).types = Set.empty); if not (valid_limits lim) then raise Type; {ty; content = create lim.min r} @@ -39,8 +39,8 @@ let size tab = let type_of tab = tab.ty -let index_type_of tab = - let (TableT (_, it, _)) = type_of tab in it +let addr_type_of tab = + let (TableT (_, at, _)) = type_of tab in at let index_of_num x = match x with @@ -49,17 +49,17 @@ let index_of_num x = | _ -> raise Type let grow tab delta r = - let TableT (lim, it, t) = tab.ty in + let TableT (lim, at, t) = tab.ty in assert (lim.min = size tab); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in - if not (valid_index it new_size) then raise SizeOverflow else + if not (valid_addr at new_size) then raise SizeOverflow else if not (valid_limits lim') then raise SizeLimit else let after = create new_size r in Array.blit tab.content 0 after 0 (Array.length tab.content); - tab.ty <- TableT (lim', it, t); + tab.ty <- TableT (lim', at, t); tab.content <- after let load tab i = @@ -67,7 +67,7 @@ let load tab i = Lib.Array64.get tab.content i let store tab i r = - let TableT (_lim, _it, t) = tab.ty in + let TableT (_lim, _at, t) = tab.ty in if not (Match.match_ref_type [] (type_of_ref r) t) then raise Type; if i < 0L || i >= Lib.Array64.length tab.content then raise Bounds; Lib.Array64.set tab.content i r diff --git a/interpreter/runtime/table.mli b/interpreter/runtime/table.mli index 07e84d5b6..6ebba6068 100644 --- a/interpreter/runtime/table.mli +++ b/interpreter/runtime/table.mli @@ -16,7 +16,7 @@ exception OutOfMemory val alloc : table_type -> ref_ -> table (* raises Type, OutOfMemory *) val type_of : table -> table_type -val index_type_of : table -> index_type +val addr_type_of : table -> addr_type val size : table -> size val index_of_num : num -> index val grow : table -> size -> ref_ -> unit diff --git a/interpreter/runtime/value.ml b/interpreter/runtime/value.ml index 5988336ad..5381b67f1 100644 --- a/interpreter/runtime/value.ml +++ b/interpreter/runtime/value.ml @@ -281,10 +281,10 @@ let storage_bits_of_val st v = let value_of_bool b = Num (I32 (if b then 1l else 0l)) -let value_of_index it x = - match it with - | I64IndexType -> Num (I64 x) - | I32IndexType -> Num (I32 (Int64.to_int32 x)) +let value_of_addr at x = + match at with + | I64AddrType -> Num (I64 x) + | I32AddrType -> Num (I32 (Int64.to_int32 x)) let string_of_num = function | I32 i -> I32.to_string_s i diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index 72314487f..efbbd58da 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -121,8 +121,8 @@ let def_type = function | DefT (rt, _i) -> rec_type rt let global_type (GlobalT (_mut, t)) = val_type t -let table_type (TableT (_lim, _it, t)) = ref_type t -let memory_type (MemoryT (_lim, _it)) = empty +let table_type (TableT (_lim, _at, t)) = ref_type t +let memory_type (MemoryT (_lim, _at)) = empty let tag_type (TagT dt) = def_type dt let extern_type = function diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml index 729a564ad..fb5246445 100644 --- a/interpreter/syntax/types.ml +++ b/interpreter/syntax/types.ml @@ -25,7 +25,7 @@ type heap_type = and ref_type = null * heap_type and val_type = NumT of num_type | VecT of vec_type | RefT of ref_type | BotT -and index_type = I32IndexType | I64IndexType +and addr_type = I32AddrType | I64AddrType and result_type = val_type list and instr_type = InstrT of result_type * result_type * local_idx list @@ -45,8 +45,8 @@ and sub_type = SubT of final * heap_type list * str_type and rec_type = RecT of sub_type list and def_type = DefT of rec_type * int32 -type table_type = TableT of Int64.t limits * index_type * ref_type -type memory_type = MemoryT of Int64.t limits * index_type +type table_type = TableT of Int64.t limits * addr_type * ref_type +type memory_type = MemoryT of Int64.t limits * addr_type type global_type = GlobalT of mut * val_type type tag_type = TagT of def_type type local_type = LocalT of init * val_type @@ -147,11 +147,11 @@ let memories = List.filter_map (function ExternMemoryT mt -> Some mt | _ -> None let globals = List.filter_map (function ExternGlobalT gt -> Some gt | _ -> None) let tags = List.filter_map (function ExternTagT tt -> Some tt | _ -> None) -let num_type_of_index_type = function - | I32IndexType -> I32T - | I64IndexType -> I64T +let num_type_of_addr_type = function + | I32AddrType -> I32T + | I64AddrType -> I64T -let value_type_of_index_type t = NumT (num_type_of_index_type t) +let value_type_of_addr_type t = NumT (num_type_of_addr_type t) (* Substitution *) @@ -228,10 +228,10 @@ let subst_def_type s = function let subst_memory_type s = function - | MemoryT (lim, it) -> MemoryT (lim, it) + | MemoryT (lim, at) -> MemoryT (lim, at) let subst_table_type s = function - | TableT (lim, it, t) -> TableT (lim, it, subst_ref_type s t) + | TableT (lim, at, t) -> TableT (lim, at, subst_ref_type s t) let subst_global_type s = function | GlobalT (mut, t) -> GlobalT (mut, subst_val_type s t) @@ -365,8 +365,8 @@ and string_of_val_type = function | RefT t -> string_of_ref_type t | BotT -> "bot" -and string_of_index_type t = - string_of_val_type (value_type_of_index_type t) +and string_of_addr_type t = + string_of_val_type (value_type_of_addr_type t) and string_of_result_type = function | ts -> "[" ^ String.concat " " (List.map string_of_val_type ts) ^ "]" @@ -418,10 +418,10 @@ let string_of_limits = function (match max with None -> "" | Some n -> " " ^ I64.to_string_u n) let string_of_memory_type = function - | MemoryT (lim, it) -> string_of_num_type (num_type_of_index_type it) ^ " " ^ string_of_limits lim + | MemoryT (lim, at) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim let string_of_table_type = function - | TableT (lim, it, t) -> string_of_num_type (num_type_of_index_type it) ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t + | TableT (lim, at, t) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t let string_of_global_type = function | GlobalT (mut, t) -> string_of_mut (string_of_val_type t) mut diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index fe9fbf2a4..6f7eccdaa 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -77,7 +77,7 @@ let ref_type t = | (Null, ExnHT) -> "exnref" | t -> string_of_ref_type t -let index_type t = string_of_val_type (value_type_of_index_type t) +let addr_type t = string_of_val_type (value_type_of_addr_type t) let heap_type t = string_of_heap_type t let val_type t = string_of_val_type t let storage_type t = string_of_storage_type t @@ -657,14 +657,14 @@ let tag off i tag = ) let table off i tab = - let {ttype = TableT (lim, it, t); tinit} = tab.it in - Node ("table $" ^ nat (off + i) ^ " " ^ index_type it ^ " " ^ limits nat64 lim, + let {ttype = TableT (lim, at, t); tinit} = tab.it in + Node ("table $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, atom ref_type t :: list instr tinit.it ) let memory off i mem = - let {mtype = MemoryT (lim, it)} = mem.it in - Node ("memory $" ^ nat (off + i) ^ " " ^ index_type it ^ " " ^ limits nat64 lim, []) + let {mtype = MemoryT (lim, at)} = mem.it in + Node ("memory $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, []) let is_elem_kind = function | (NoNull, FuncHT) -> true diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index bd5d205ac..df2ec4057 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -264,37 +264,37 @@ let inline_func_type_explicit (c : context) x ft loc = error (at loc) "inline function type does not match explicit type"; x -let index_type_of_num_type t loc = +let addr_type_of_num_type t loc = match t with - | I32T -> I32IndexType - | I64T -> I64IndexType - | _ -> error (at loc) "illegal index type" + | I32T -> I32AddrType + | I64T -> I64AddrType + | _ -> error (at loc) "illegal address type" -let index_type_of_value_type t loc = +let addr_type_of_value_type t loc = match t with - | NumT t -> index_type_of_num_type t loc - | _ -> error (at loc) "illegal index type" + | NumT t -> addr_type_of_num_type t loc + | _ -> error (at loc) "illegal address type" -let memory_data init it c x loc = +let memory_data init at c x loc = let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in - let instr = match it with - | I32IndexType -> i32_const (0l @@ loc) - | I64IndexType -> i64_const (0L @@ loc) in + let instr = match at with + | I32AddrType -> i32_const (0l @@ loc) + | I64AddrType -> i64_const (0L @@ loc) in let offset = [instr @@ loc] @@ loc in - [{mtype = MemoryT ({min = size; max = Some size}, it)} @@ loc], + [{mtype = MemoryT ({min = size; max = Some size}, at)} @@ loc], [{dinit = init; dmode = Active {index = x; offset} @@ loc} @@ loc], [], [] -let table_data tinit init it etype c x loc = - let instr = match it with - | I32IndexType -> i32_const (0l @@ loc) - | I64IndexType -> i64_const (0L @@ loc) in +let table_data tinit init at etype c x loc = + let instr = match at with + | I32AddrType -> i32_const (0l @@ loc) + | I64AddrType -> i64_const (0L @@ loc) in let offset = [instr @@ loc] @@ loc in let einit = init c in let size = Lib.List32.length einit in let size64 = Int64.of_int32 size in let emode = Active {index = x; offset} @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, it, etype); tinit} @@ loc], + [{ttype = TableT ({min = size64; max = Some size64}, at, etype); tinit} @@ loc], [{etype; einit; emode} @@ loc], [], [] @@ -501,12 +501,12 @@ sub_type : List.map (fun y -> VarHT (StatX y.it)) ($4 c type_), $5 c x) } table_type : - | val_type limits ref_type { fun c -> TableT ($2, index_type_of_value_type ($1 c) $sloc, $3 c) } - | limits ref_type { fun c -> TableT ($1, I32IndexType, $2 c) } + | val_type limits ref_type { fun c -> TableT ($2, addr_type_of_value_type ($1 c) $sloc, $3 c) } + | limits ref_type { fun c -> TableT ($1, I32AddrType, $2 c) } memory_type : - | val_type limits { fun c -> MemoryT ($2, index_type_of_value_type ($1 c) $sloc) } - | limits { fun c -> MemoryT ($1, I32IndexType) } + | val_type limits { fun c -> MemoryT ($2, addr_type_of_value_type ($1 c) $sloc) } + | limits { fun c -> MemoryT ($1, I32AddrType) } limits : | NAT { {min = nat64 $1 $loc($1); max = None} } @@ -1165,19 +1165,19 @@ table_fields : let emode = Active {index = x; offset} @@ loc in let (_, ht) as etype = $1 c in let tinit = [RefNull ht @@ loc] @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, I32IndexType, etype); tinit} @@ loc], + [{ttype = TableT ({min = size64; max = Some size64}, I32AddrType, etype); tinit} @@ loc], [{etype; einit; emode} @@ loc], [], [] } | ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ { fun c x loc -> let (_, ht) as etype = $1 c in let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $4 I32IndexType etype c x loc } + table_data tinit $4 I32AddrType etype c x loc } | val_type ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ { fun c x loc -> let (_, ht) as etype = $2 c in let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $5 (index_type_of_value_type ($1 c) loc) etype c x loc } + table_data tinit $5 (addr_type_of_value_type ($1 c) loc) etype c x loc } data : | LPAR DATA bind_var_opt string_list RPAR @@ -1209,9 +1209,9 @@ memory_fields : { fun c x loc -> let mems, data, ims, exs = $2 c x loc in mems, data, ims, $1 (MemoryExport x) c :: exs } | LPAR DATA string_list RPAR /* Sugar */ - { memory_data $3 I32IndexType } + { memory_data $3 I32AddrType } | val_type LPAR DATA string_list RPAR /* Sugar */ - { fun c x loc -> memory_data $4 (index_type_of_value_type ($1 c) $sloc) c x loc } + { fun c x loc -> memory_data $4 (addr_type_of_value_type ($1 c) $sloc) c x loc } tag : | LPAR TAG bind_var_opt tag_fields RPAR diff --git a/interpreter/valid/match.ml b/interpreter/valid/match.ml index 77c9c4f57..b2cc26630 100644 --- a/interpreter/valid/match.ml +++ b/interpreter/valid/match.ml @@ -161,11 +161,11 @@ let match_global_type c (GlobalT (mut1, t1)) (GlobalT (mut2, t2)) = | Cons -> true | Var -> match_val_type c t2 t1 -let match_table_type c (TableT (lim1, it1, t1)) (TableT (lim2, it2, t2)) = - match_limits c lim1 lim2 && it1 = it2 && match_ref_type c t1 t2 && match_ref_type c t2 t1 +let match_table_type c (TableT (lim1, at1, t1)) (TableT (lim2, at2, t2)) = + match_limits c lim1 lim2 && at1 = at2 && match_ref_type c t1 t2 && match_ref_type c t2 t1 -let match_memory_type c (MemoryT (lim1, it1)) (MemoryT (lim2, it2)) = - match_limits c lim1 lim2 && it1 = it2 +let match_memory_type c (MemoryT (lim1, at1)) (MemoryT (lim2, at2)) = + match_limits c lim1 lim2 && at1 = at2 let match_tag_type c (TagT dt1) (TagT dt2) = match_def_type c dt1 dt2 && match_def_type c dt2 dt1 diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 511c34b09..6fc75ace7 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -151,23 +151,23 @@ let check_func_type (c : context) (ft : func_type) at = check_result_type c ts2 at let check_table_type (c : context) (tt : table_type) at = - let TableT (lim, it, t) = tt in + let TableT (lim, _at, t) = tt in check_ref_type c t at; - match it with - | I64IndexType -> + match _at with + | I64AddrType -> check_limits I64.le_u lim 0xffff_ffff_ffff_ffffL at "table size must be at most 2^64-1" - | I32IndexType -> + | I32AddrType -> check_limits I64.le_u lim 0xffff_ffffL at "table size must be at most 2^32-1" let check_memory_type (c : context) (mt : memory_type) at = - let MemoryT (lim, it) = mt in - match it with - | I32IndexType -> + let MemoryT (lim, _at) = mt in + match _at with + | I32AddrType -> check_limits I64.le_u lim 0x1_0000L at "memory size must be at most 65536 pages (4GiB)" - | I64IndexType -> + | I64AddrType -> check_limits I64.le_u lim 0x1_0000_0000_0000L at "memory size must be at most 48 bits of pages" @@ -370,8 +370,8 @@ let check_memop (c : context) (memop : ('t, 's) memop) ty_size get_sz at = in require (1 lsl memop.align >= 1 && 1 lsl memop.align <= size) at "alignment must not be larger than natural"; - let MemoryT (_lim, it) = memory c (0l @@ at) in - if it = I32IndexType then + let MemoryT (_lim, _at) = memory c (0l @@ at) in + if _at = I32AddrType then require (I64.lt_u memop.offset 0x1_0000_0000L) at "offset out of range"; memop.ty @@ -518,12 +518,12 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) --> ts2, [] | CallIndirect (x, y) -> - let TableT (lim, it, t) = table c x in + let TableT (lim, at, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_ref_type c.types t (Null, FuncHT)) x.at ("type mismatch: instruction requires table of function type" ^ " but table has element type " ^ string_of_ref_type t); - (ts1 @ [value_type_of_index_type it]) --> ts2, [] + (ts1 @ [value_type_of_addr_type at]) --> ts2, [] | ReturnCall x -> let FuncT (ts1, ts2) = as_func_str_type (expand_def_type (func c x)) in @@ -542,13 +542,13 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) -->... [], [] | ReturnCallIndirect (x, y) -> - let TableT (_lim, it, t) = table c x in + let TableT (_lim, at, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_result_type c.types ts2 c.results) e.at ("type mismatch: current function requires result type " ^ string_of_result_type c.results ^ " but callee returns " ^ string_of_result_type ts2); - (ts1 @ [value_type_of_index_type it]) -->... [], [] + (ts1 @ [value_type_of_addr_type at]) -->... [], [] | Throw x -> let TagT dt = tag c x in @@ -588,102 +588,102 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in [t] --> [], [] | TableGet x -> - let TableT (_lim, it, rt) = table c x in - [value_type_of_index_type it] --> [RefT rt], [] + let TableT (_lim, at, rt) = table c x in + [value_type_of_addr_type at] --> [RefT rt], [] | TableSet x -> - let TableT (_lim, it, rt) = table c x in - [value_type_of_index_type it; RefT rt] --> [], [] + let TableT (_lim, at, rt) = table c x in + [value_type_of_addr_type at; RefT rt] --> [], [] | TableSize x -> - let TableT (_lim, it, _rt) = table c x in - [] --> [value_type_of_index_type it], [] + let TableT (_lim, at, _rt) = table c x in + [] --> [value_type_of_addr_type at], [] | TableGrow x -> - let TableT (_lim, it, rt) = table c x in - [RefT rt; value_type_of_index_type it] --> [value_type_of_index_type it], [] + let TableT (_lim, at, rt) = table c x in + [RefT rt; value_type_of_addr_type at] --> [value_type_of_addr_type at], [] | TableFill x -> - let TableT (_lim, it, rt) = table c x in - [value_type_of_index_type it; RefT rt; value_type_of_index_type it] --> [], [] + let TableT (_lim, at, rt) = table c x in + [value_type_of_addr_type at; RefT rt; value_type_of_addr_type at] --> [], [] | TableCopy (x, y) -> - let TableT (_lim1, it1, t1) = table c x in - let TableT (_lim2, it2, t2) = table c y in - let it_min = min it1 it2 in + let TableT (_lim1, at1, t1) = table c x in + let TableT (_lim2, at2, t2) = table c y in + let at_min = min at1 at2 in require (match_ref_type c.types t2 t1) x.at ("type mismatch: source element type " ^ string_of_ref_type t1 ^ " does not match destination element type " ^ string_of_ref_type t2); - [value_type_of_index_type it1; value_type_of_index_type it2; value_type_of_index_type it_min] --> [], [] + [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] | TableInit (x, y) -> - let TableT (_lim1, it, t1) = table c x in + let TableT (_lim1, at, t1) = table c x in let t2 = elem c y in require (match_ref_type c.types t2 t1) x.at ("type mismatch: element segment's type " ^ string_of_ref_type t1 ^ " does not match table's element type " ^ string_of_ref_type t2); - [value_type_of_index_type it; NumT I32T; NumT I32T] --> [], [] + [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] | ElemDrop x -> ignore (elem c x); [] --> [], [] | Load (x, memop) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop num_size (Lib.Option.map fst) e.at in - [value_type_of_index_type it] --> [NumT t], [] + [value_type_of_addr_type at] --> [NumT t], [] | Store (x, memop) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop num_size (fun sz -> sz) e.at in - [value_type_of_index_type it; NumT t] --> [], [] + [value_type_of_addr_type at; NumT t] --> [], [] | VecLoad (x, memop) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop vec_size (Lib.Option.map fst) e.at in - [value_type_of_index_type it] --> [VecT t], [] + [value_type_of_addr_type at] --> [VecT t], [] | VecStore (x, memop) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop vec_size (fun _ -> None) e.at in - [value_type_of_index_type it; VecT t] --> [], [] + [value_type_of_addr_type at; VecT t] --> [], [] | VecLoadLane (x, memop, i) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_index_type it; VecT t] --> [VecT t], [] + [value_type_of_addr_type at; VecT t] --> [VecT t], [] | VecStoreLane (x, memop, i) -> - let MemoryT (_lim, it) = memory c x in + let MemoryT (_lim, at) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_index_type it; VecT t] --> [], [] + [value_type_of_addr_type at; VecT t] --> [], [] | MemorySize x -> - let MemoryT (_lim, it) = memory c x in - [] --> [value_type_of_index_type it], [] + let MemoryT (_lim, at) = memory c x in + [] --> [value_type_of_addr_type at], [] | MemoryGrow x -> - let MemoryT (_lim, it) = memory c x in - [value_type_of_index_type it] --> [value_type_of_index_type it], [] + let MemoryT (_lim, at) = memory c x in + [value_type_of_addr_type at] --> [value_type_of_addr_type at], [] | MemoryFill x -> - let MemoryT (_lim, it) = memory c x in - [value_type_of_index_type it; NumT I32T; value_type_of_index_type it] --> [], [] + let MemoryT (_lim, at) = memory c x in + [value_type_of_addr_type at; NumT I32T; value_type_of_addr_type at] --> [], [] | MemoryCopy (x, y)-> - let MemoryT (_lib1, it1) = memory c x in - let MemoryT (_lib2, it2) = memory c y in - let it_min = min it1 it2 in - [value_type_of_index_type it1; value_type_of_index_type it2; value_type_of_index_type it_min] --> [], [] + let MemoryT (_lib1, at1) = memory c x in + let MemoryT (_lib2, at2) = memory c y in + let at_min = min at1 at2 in + [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] | MemoryInit (x, y) -> - let MemoryT (_lib, it) = memory c x in + let MemoryT (_lib, at) = memory c x in let () = data c y in - [value_type_of_index_type it; NumT I32T; NumT I32T] --> [], [] + [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] | DataDrop x -> let () = data c x in @@ -1029,7 +1029,7 @@ let check_global (c : context) (glob : global) : context = let check_table (c : context) (tab : table) : context = let {ttype; tinit} = tab.it in - let TableT (_lim, _it, rt) = ttype in + let TableT (_lim, _at, rt) = ttype in check_table_type c ttype tab.at; check_const c tinit (RefT rt); {c with tables = c.tables @ [ttype]} @@ -1048,11 +1048,11 @@ let check_elem_mode (c : context) (t : ref_type) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let TableT (_lim, it, et) = table c index in + let TableT (_lim, at, et) = table c index in require (match_ref_type c.types t et) mode.at ("type mismatch: element segment's type " ^ string_of_ref_type t ^ " does not match table's element type " ^ string_of_ref_type et); - check_const c offset (value_type_of_index_type it) + check_const c offset (value_type_of_addr_type at) | Declarative -> () let check_elem (c : context) (seg : elem_segment) : context = @@ -1066,8 +1066,8 @@ let check_data_mode (c : context) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let MemoryT (_, it) = memory c index in - check_const c offset (value_type_of_index_type it) + let MemoryT (_, at) = memory c index in + check_const c offset (value_type_of_addr_type at) | Declarative -> assert false let check_data (c : context) (seg : data_segment) : context = diff --git a/proposals/memory64/Overview.md b/proposals/memory64/Overview.md index 70874aab3..3e947b582 100644 --- a/proposals/memory64/Overview.md +++ b/proposals/memory64/Overview.md @@ -62,20 +62,20 @@ have to support 32-bit memory addresses in their ABI. * The [limits][syntax limits] structure is changed to use `u64`  - `limits ::= {min u64, max u64?}` -* A new `idxtype` can be either `i32` or `i64` - - `idxtype ::= i32 | i64` +* A new `addrtype` can be either `i32` or `i64` + - `addrtype ::= i32 | i64` * The [memory type][syntax memtype] and [table type][syntax tabletype] - structures are extended to include an index type - - `memtype ::= idxtype limits` - - `tabletype ::= idxtype limits reftype` + structures are extended to include an address type + - `memtype ::= addrtype limits` + - `tabletype ::= addrtype limits reftype` * The [memarg][syntax memarg] immediate is changed to allow a 64-bit offset - `memarg ::= {offset u64, align u32}` ### Validation -* Index types are classified by their value range: +* Address types are classified by their value range: - ``` ---------------- ⊦ i32 : 2**16 @@ -86,7 +86,7 @@ have to support 32-bit memory addresses in their ABI. ``` * [Memory page limits][valid limits] and [Table entry limits][valid limits] are - classified by their respective index types + classified by their respective address types - ``` ⊦ it : k n <= k (m <= k)? (n < m)? ------------------------------------------- @@ -100,112 +100,112 @@ have to support 32-bit memory addresses in their ABI. ⊦ it limits ok ``` -* All [memory instructions][valid meminst] are changed to use the index type, - and the offset must also be in range of the index type +* All [memory instructions][valid meminst] are changed to use the address type, + and the offset must also be in range of the address type - t.load memarg - ``` - C.mems[0] = it limits 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + C.mems[0] = at limits 2**memarg.align <= |t|/8 memarg.offset < 2**|at| -------------------------------------------------------------------------- - C ⊦ t.load memarg : [it] → [t] + C ⊦ t.load memarg : [at] → [t] ``` - t.loadN_sx memarg - ``` - C.mems[0] = it limits 2**memarg.align <= N/8 memarg.offset < 2**|it| + C.mems[0] = at limits 2**memarg.align <= N/8 memarg.offset < 2**|at| ------------------------------------------------------------------------ - C ⊦ t.loadN_sx memarg : [it] → [t] + C ⊦ t.loadN_sx memarg : [at] → [t] ``` - t.store memarg - ``` - C.mems[0] = it limits 2**memarg.align <= |t|/8 memarg.offset < 2**|it| + C.mems[0] = at limits 2**memarg.align <= |t|/8 memarg.offset < 2**|at| -------------------------------------------------------------------------- - C ⊦ t.store memarg : [it t] → [] + C ⊦ t.store memarg : [at t] → [] ``` - t.storeN_sx memarg - ``` - C.mems[0] = it limits 2**memarg.align <= N/8 memarg.offset < 2**|it| + C.mems[0] = at limits 2**memarg.align <= N/8 memarg.offset < 2**|t| ------------------------------------------------------------------------ - C ⊦ t.storeN_sx memarg : [it t] → [] + C ⊦ t.storeN_sx memarg : [at t] → [] ``` - memory.size - ``` - C.mems[0] = it limits + C.mems[0] = at limits --------------------------- - C ⊦ memory.size : [] → [it] + C ⊦ memory.size : [] → [at] ``` - memory.grow - ``` - C.mems[0] = it limits + C.mems[0] = at limits ----------------------------- - C ⊦ memory.grow : [it] → [it] + C ⊦ memory.grow : [at] → [at] ``` - memory.fill - ``` - C.mems[0] = it limits + C.mems[0] = at limits ----------------------------- - C ⊦ memory.fill : [it i32 it] → [] + C ⊦ memory.fill : [at i32 at] → [] ``` - memory.copy - ``` - C.mems[0] = it limits + C.mems[0] = at limits ----------------------------- - C ⊦ memory.copy : [it it it] → [] + C ⊦ memory.copy : [at at at] → [] ``` - memory.init x - ``` - C.mems[0] = it limits C.datas[x] = ok + C.mems[0] = at limits C.datas[x] = ok ------------------------------------------- - C ⊦ memory.init : [it i32 i32] → [] + C ⊦ memory.init : [at i32 i32] → [] ``` - (and similar for memory instructions from other proposals) -* [Table instructions][valid tableinst] are changed to use the index type +* [Table instructions][valid tableinst] are changed to use the address type - call_indirect x y - ``` - C.tables[x] = it limits t C.types[y] = [t1*] → [t2*] + C.tables[x] = at limits t C.types[y] = [t1*] → [t2*] ------------------------------------------------------- - C ⊦ call_indirect x y : [t1* it] → [t2*] + C ⊦ call_indirect x y : [t1* at] → [t2*] ``` - table.get x - ``` - C.tables[x] = it limits t + C.tables[x] = at limits t ------------------------------ - C ⊦ table.get x : [it] → [t] + C ⊦ table.get x : [at] → [t] ``` - table.set x - ``` - C.tables[x] = it limits t + C.tables[x] = at limits t ------------------------------ - C ⊦ table.set x : [it t] → [] + C ⊦ table.set x : [at t] → [] ``` - table.size x - ``` - C.tables[x] = it limits t + C.tables[x] = at limits t ------------------------------ - C ⊦ table.size x : [] → [it] + C ⊦ table.size x : [] → [at] ``` - table.grow x - ``` - C.tables[x] = it limits t + C.tables[x] = at limits t ------------------------------- - C ⊦ table.grow x : [t it] → [it] + C ⊦ table.grow x : [t at] → [at] ``` - table.fill x - ``` - C.tables[x] = it limits t + C.tables[x] = at limits t ---------------------------------- - C ⊦ tables.fill x : [it t it] → [] + C ⊦ tables.fill x : [at t at] → [] ``` - table.copy x y - ``` - C.tables[d] = iN limits t C.tables[s] = iM limits t K = min {N, M} + C.tables[d] = aN limits t C.tables[s] = aM limits t K = min {aN, AM} ----------------------------------------------------------------------------- - C ⊦ table.copy d s : [iN iM iK] → [] + C ⊦ table.copy d s : [aN aM aK] → [] ``` - table.init x y - ``` - C.tables[x] = it limits t C.elems[y] = ok + C.tables[x] = at limits t C.elems[y] = ok ----------------------------------------------- - C ⊦ table.init x y : [it i32 i32] → [] + C ⊦ table.init x y : [at i32 i32] → [] ``` * The [SIMD proposal][simd] extends `t.load memarg` and `t.store memarg` @@ -266,27 +266,27 @@ have to support 32-bit memory addresses in their ABI. 64-bit memory. * The [Multi-memory proposal][multi memory] extends each of these instructions - with one or two memory index immediates. The index type for that memory will + with one or two memory index immediates. The address type for that memory will be used. For example, - memory.size x - ``` - C.mems[x] = it limits + C.mems[x] = at limits --------------------------- - C ⊦ memory.size x : [] → [it] + C ⊦ memory.size x : [] → [at] ``` `memory.copy` has two memory index immediates, so will have multiple possible signatures: - memory.copy d s - ``` - C.mems[d] = iN limits C.mems[s] = iM limits K = min {N, M} + C.mems[d] = aN limits C.mems[s] = aM limits K = min {aN, aM} --------------------------------------------------------------- - C ⊦ memory.copy d s : [iN iM iK] → [] + C ⊦ memory.copy d s : [aN aM aK] → [] ``` -* [Data segment validation][valid data] uses the index type +* [Data segment validation][valid data] uses the address type - ``` - C.mems[0] = it limits C ⊦ expr: [it] C ⊦ expr const + C.mems[0] = at limits C ⊦ expr: [at] C ⊦ expr const ------------------------------------------------------- C ⊦ {data x, offset expr, init b*} ok ``` @@ -298,7 +298,7 @@ have to support 32-bit memory addresses in their ABI. max size - `meminst ::= { data vec64(byte), max u64? }` -* [Memory instructions][exec meminst] use the index type instead of `i32` +* [Memory instructions][exec meminst] use the address type instead of `i32` - `t.load memarg` - `t.loadN_sx memarg` - `t.store memarg` @@ -307,31 +307,31 @@ have to support 32-bit memory addresses in their ABI. - `memory.grow` - (spec text omitted) -* [memory.grow][exec memgrow] has behavior that depends on the index type: +* [memory.grow][exec memgrow] has behavior that depends on the address type: - for `i32`: no change - for `i64`: check for a size greater than 264 - 1, and return 264 - 1 when `memory.grow` fails. -* [Memory import matching][exec memmatch] requires that the index type matches +* [Memory import matching][exec memmatch] requires that the address type matches - ``` - it_1 = it_2 ⊦ limits_1 <= limits_2 + at_1 = at_2 ⊦ limits_1 <= limits_2 ---------------------------------------- - ⊦ mem it_1 limits_1 <= mem it_2 limits_2 + ⊦ mem at_1 limits_1 <= mem at_2 limits_2 ``` * Bounds checking is required to be the same as for 32-bit memories, that is, - the index + offset (a `u65`) of a load or store operation is required to be + the address + offset (a `u65`) of a load or store operation is required to be checked against the current memory size and trap if out of range. It is expected that the cost of this check remains low, if an implementation - can implement the index check with a branch, and the offset separately using a - guard page for all smaller offsets. Repeated accesses over the same index and + can implement the address check with a branch, and the offset separately using a + guard page for all smaller offsets. Repeated accesses over the same address and different offsets allow simple elimination of subsequent checks. ### Binary format * The [limits][binary limits] structure also encodes an additional value to - indicate the index type + indicate the address type - ``` limits ::= 0x00 n:u32 ⇒ i32, {min n, max ϵ}, 0 | 0x01 n:u32 m:u32 ⇒ i32, {min n, max m}, 0 @@ -346,7 +346,7 @@ have to support 32-bit memory addresses in their ABI. * The [memory type][binary memtype] structure is extended to use this limits encoding - ``` - memtype ::= (it, lim, _):limits ⇒ it lim + memtype ::= (at, lim, _):limits ⇒ at lim ``` * The [memarg][binary memarg]'s offset is read as `u64` @@ -354,23 +354,23 @@ have to support 32-bit memory addresses in their ABI. ### Text format -* There is a new index type: +* There is a new address type: - ``` - idxtype ::= 'i32' ⇒ i32 - | 'i64' ⇒ i64 + addrtype ::= 'i32' ⇒ i32 + | 'i64' ⇒ i64 ``` * The [memory type][text memtype] definition is extended to allow an optional - index type, which must be either `i32` or `i64` + address type, which must be either `i32` or `i64` - ``` memtype ::= lim:limits ⇒ i32 lim - | it:idxtype lim:limits ⇒ it lim + | at:addrtype lim:limits ⇒ at lim ``` * The [memory abbreviation][text memabbrev] definition is extended to allow an - optional index type too, which must be either `i32` or `i64` + optional address type too, which must be either `i32` or `i64` - ``` - '(' 'memory' id? index_type? '(' 'data' b_n:datastring ')' ')' === ... + '(' 'memory' id? address_type? '(' 'data' b_n:datastring ')' ')' === ... ``` diff --git a/test/core/table.wast b/test/core/table.wast index 1b6afe9b9..8648df070 100644 --- a/test/core/table.wast +++ b/test/core/table.wast @@ -44,7 +44,7 @@ "table size must be at most 2^32-1" ) -;; Same as above but with i64 index types +;; Same as above but with i64 address types (module (table i64 0 funcref)) (module (table i64 1 funcref)) diff --git a/test/js-api/table/constructor.any.js b/test/js-api/table/constructor.any.js index a4c26a289..9053b6f7c 100644 --- a/test/js-api/table/constructor.any.js +++ b/test/js-api/table/constructor.any.js @@ -223,7 +223,7 @@ test(() => { const argument = { "element": "anyfunc", "initial": 3, "index": "i32" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the - // index type of `table`. + // address type of `table`. assert_equals(table.length, 3); }, "Table with i32 index constructor"); @@ -231,7 +231,7 @@ test(() => { const argument = { "element": "anyfunc", "initial": 3n, "index": "i64" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the - // index type of `table`. + // address type of `table`. assert_equals(table.length, 3); }, "Table with i64 index constructor"); From 9e107e01e8404fea07040727e5de16c4b6744d1f Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Mon, 21 Oct 2024 23:57:59 +0200 Subject: [PATCH 199/230] Rename "addressType" to "address" in the JS API (#92) --- document/js-api/index.bs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/document/js-api/index.bs b/document/js-api/index.bs index 65233ca9f..dc8f557ed 100644 --- a/document/js-api/index.bs +++ b/document/js-api/index.bs @@ -679,7 +679,7 @@ Note: The use of this synchronous API is discouraged, as some implementations so dictionary MemoryDescriptor { required AddressValue initial; AddressValue maximum; - AddressType addressType; + AddressType address; }; [LegacyNamespace=WebAssembly, Exposed=*] @@ -748,7 +748,7 @@ which can be simultaneously referenced by multiple {{Instance}} objects. Each
The Memory(|descriptor|) constructor, when invoked, performs the following steps: - 1. If |descriptor|["addressType"] [=map/exists=], let |addrtype| be |descriptor|["addressType"]; otherwise, let |addrtype| be "i32". + 1. If |descriptor|["address"] [=map/exists=], let |addrtype| be |descriptor|["address"]; otherwise, let |addrtype| be "i32". 1. Let |initial| be [=?=] [=AddressValueToU64=](|descriptor|["initial"], |addrtype|). 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=AddressValueToU64=](|descriptor|["maximum"], |addrtype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. @@ -875,7 +875,7 @@ dictionary TableDescriptor { required TableKind element; required AddressValue initial; AddressValue maximum; - AddressType addressType; + AddressType address; }; [LegacyNamespace=WebAssembly, Exposed=*] @@ -915,7 +915,7 @@ Each {{Table}} object has a \[[Table]] internal slot, which is a [=table address 1. Let |elementtype| be [=ToValueType=](|descriptor|["element"]). 1. If |elementtype| is not a [=reftype=], 1. [=Throw=] a {{TypeError}} exception. - 1. If |descriptor|["addressType"] [=map/exists=], let |addrtype| be |descriptor|["addressType"]; otherwise, let |addrtype| be "i32". + 1. If |descriptor|["address"] [=map/exists=], let |addrtype| be |descriptor|["address"]; otherwise, let |addrtype| be "i32". 1. Let |initial| be [=?=] [=AddressValueToU64=](|descriptor|["initial"], |addrtype|). 1. If |descriptor|["maximum"] [=map/exists=], let |maximum| be [=?=] [=AddressValueToU64=](|descriptor|["maximum"], |addrtype|); otherwise, let |maximum| be empty. 1. If |maximum| is not empty and |maximum| < |initial|, throw a {{RangeError}} exception. From ade7380d88c68115203fd1ccef5c6ba6a3e88dc1 Mon Sep 17 00:00:00 2001 From: Ben Visness Date: Tue, 22 Oct 2024 11:33:15 -0400 Subject: [PATCH 200/230] Spec test updates (#91) * Update JS API tests for memory64 and table64 * Add memory and table matching tests * Improve loop in assert_Table * Update spec tests to "address" * Rename params in table assertion func --- test/core/imports.wast | 236 +++++++++++++++++++++++++- test/js-api/memory/assertions.js | 4 +- test/js-api/memory/constructor.any.js | 89 ++++++++-- test/js-api/memory/grow.any.js | 94 ++++++++++ test/js-api/table/assertions.js | 20 ++- test/js-api/table/constructor.any.js | 125 ++++++++++++-- test/js-api/table/get-set.any.js | 69 ++++++++ test/js-api/table/grow.any.js | 49 +++++- 8 files changed, 648 insertions(+), 38 deletions(-) diff --git a/test/core/imports.wast b/test/core/imports.wast index af33448de..e65e5a276 100644 --- a/test/core/imports.wast +++ b/test/core/imports.wast @@ -13,9 +13,12 @@ (global (export "global-mut-i64") (mut i64) (i64.const 66)) (table (export "table-10-inf") 10 funcref) (table (export "table-10-20") 10 20 funcref) + (table (export "table64-10-inf") i64 10 funcref) + (table (export "table64-10-20") i64 10 20 funcref) (memory (export "memory-2-inf") 2) - ;; Multiple memories are not yet supported - ;; (memory (export "memory-2-4") 2 4) + (memory (export "memory-2-4") 2 4) + (memory (export "memory64-2-inf") i64 2) + (memory (export "memory64-2-4") i64 2 4) (tag (export "tag")) (tag $tag-i32 (param i32)) (export "tag-i32" (tag $tag-i32)) @@ -376,6 +379,7 @@ (module (type (func (result i32))) (import "spectest" "table" (table $tab 10 20 funcref)) + (import "test" "table64-10-inf" (table $tab64 i64 10 funcref)) (elem (table $tab) (i32.const 1) func $f $g) (func (export "call") (param i32) (result i32) @@ -395,6 +399,7 @@ (module (type (func (result i32))) (table $tab (import "spectest" "table") 10 20 funcref) + (table $tab64 (import "test" "table64-10-inf") i64 10 funcref) (elem (table $tab) (i32.const 1) func $f $g) (func (export "call") (param i32) (result i32) @@ -413,8 +418,12 @@ (module (import "spectest" "table" (table 0 funcref)) (import "spectest" "table" (table 0 funcref)) + (import "test" "table64-10-inf" (table i64 10 funcref)) + (import "test" "table64-10-inf" (table i64 10 funcref)) (table 10 funcref) (table 10 funcref) + (table i64 10 funcref) + (table i64 10 funcref) ) (module (import "test" "table-10-inf" (table 10 funcref))) @@ -429,6 +438,18 @@ (module (import "test" "table-10-20" (table 10 25 funcref))) (module (import "test" "table-10-20" (table 5 25 funcref))) (module (import "test" "table-10-20" (table 0 25 funcref))) +(module (import "test" "table64-10-inf" (table i64 10 funcref))) +(module (import "test" "table64-10-inf" (table i64 5 funcref))) +(module (import "test" "table64-10-inf" (table i64 0 funcref))) +(module (import "test" "table64-10-20" (table i64 10 funcref))) +(module (import "test" "table64-10-20" (table i64 5 funcref))) +(module (import "test" "table64-10-20" (table i64 0 funcref))) +(module (import "test" "table64-10-20" (table i64 10 20 funcref))) +(module (import "test" "table64-10-20" (table i64 5 20 funcref))) +(module (import "test" "table64-10-20" (table i64 0 20 funcref))) +(module (import "test" "table64-10-20" (table i64 10 25 funcref))) +(module (import "test" "table64-10-20" (table i64 5 25 funcref))) +(module (import "test" "table64-10-20" (table i64 0 25 funcref))) (module (import "spectest" "table" (table 10 funcref))) (module (import "spectest" "table" (table 5 funcref))) (module (import "spectest" "table" (table 0 funcref))) @@ -455,6 +476,14 @@ (module (import "test" "table-10-inf" (table 10 20 funcref))) "incompatible import type" ) +(assert_unlinkable + (module (import "test" "table64-10-inf" (table i64 12 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "table64-10-inf" (table i64 10 20 funcref))) + "incompatible import type" +) (assert_unlinkable (module (import "test" "table-10-20" (table 12 20 funcref))) "incompatible import type" @@ -463,6 +492,14 @@ (module (import "test" "table-10-20" (table 10 18 funcref))) "incompatible import type" ) +(assert_unlinkable + (module (import "test" "table64-10-20" (table i64 12 20 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "table64-10-20" (table i64 10 18 funcref))) + "incompatible import type" +) (assert_unlinkable (module (import "spectest" "table" (table 12 funcref))) "incompatible import type" @@ -489,12 +526,30 @@ "incompatible import type" ) +(assert_unlinkable + (module (import "test" "table-10-inf" (table i64 10 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "table64-10-inf" (table 10 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "table-10-20" (table i64 10 20 funcref))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "table64-10-20" (table 10 20 funcref))) + "incompatible import type" +) ;; Memories (module (import "spectest" "memory" (memory 1 2)) + (import "test" "memory-2-inf" (memory 2)) + (import "test" "memory64-2-inf" (memory i64 2)) (data (memory 0) (i32.const 10) "\10") (func (export "load") (param i32) (result i32) (i32.load (local.get 0))) @@ -507,6 +562,8 @@ (module (memory (import "spectest" "memory") 1 2) + (memory (import "test" "memory-2-inf") 2) + (memory (import "test" "memory64-2-inf") i64 2) (data (memory 0) (i32.const 10) "\10") (func (export "load") (param i32) (result i32) (i32.load (local.get 0))) @@ -519,6 +576,26 @@ (module (import "test" "memory-2-inf" (memory 2))) (module (import "test" "memory-2-inf" (memory 1))) (module (import "test" "memory-2-inf" (memory 0))) +(module (import "test" "memory-2-4" (memory 2))) +(module (import "test" "memory-2-4" (memory 1))) +(module (import "test" "memory-2-4" (memory 0))) +(module (import "test" "memory-2-4" (memory 2 4))) +(module (import "test" "memory-2-4" (memory 1 4))) +(module (import "test" "memory-2-4" (memory 0 4))) +(module (import "test" "memory-2-4" (memory 2 5))) +(module (import "test" "memory-2-4" (memory 2 6))) +(module (import "test" "memory64-2-inf" (memory i64 2))) +(module (import "test" "memory64-2-inf" (memory i64 1))) +(module (import "test" "memory64-2-inf" (memory i64 0))) +(module (import "test" "memory64-2-4" (memory i64 2))) +(module (import "test" "memory64-2-4" (memory i64 1))) +(module (import "test" "memory64-2-4" (memory i64 0))) +(module (import "test" "memory64-2-4" (memory i64 2 4))) +(module (import "test" "memory64-2-4" (memory i64 1 4))) +(module (import "test" "memory64-2-4" (memory i64 0 4))) +(module (import "test" "memory64-2-4" (memory i64 2 5))) +(module (import "test" "memory64-2-4" (memory i64 1 5))) +(module (import "test" "memory64-2-4" (memory i64 0 5))) (module (import "spectest" "memory" (memory 1))) (module (import "spectest" "memory" (memory 0))) (module (import "spectest" "memory" (memory 1 2))) @@ -536,13 +613,149 @@ ) (assert_unlinkable - (module (import "test" "memory-2-inf" (memory 3))) + (module (import "test" "memory-2-inf" (memory 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory 0 3))) "incompatible import type" ) (assert_unlinkable (module (import "test" "memory-2-inf" (memory 2 3))) "incompatible import type" ) +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 0 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 2 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 2 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 3 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 3 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 3 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 4 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 4 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory i64 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory i64 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory i64 0 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory i64 2 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory i64 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 0 1))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 0 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 0 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 2 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 2 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 3 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 3 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 3 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 4 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 4 5))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 3))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory i64 5))) + "incompatible import type" +) (assert_unlinkable (module (import "spectest" "memory" (memory 2))) "incompatible import type" @@ -552,6 +765,23 @@ "incompatible import type" ) +(assert_unlinkable + (module (import "test" "memory-2-inf" (memory i64 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-inf" (memory 2))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory-2-4" (memory i64 2 4))) + "incompatible import type" +) +(assert_unlinkable + (module (import "test" "memory64-2-4" (memory 2 4))) + "incompatible import type" +) + (assert_unlinkable (module (import "test" "func-i32" (memory 1))) "incompatible import type" diff --git a/test/js-api/memory/assertions.js b/test/js-api/memory/assertions.js index 6a2884975..4407a0403 100644 --- a/test/js-api/memory/assertions.js +++ b/test/js-api/memory/assertions.js @@ -27,7 +27,7 @@ function assert_ArrayBuffer(actual, { size=0, shared=false, detached=false }, me assert_equals(Object.isExtensible(actual), !shared, "buffer extensibility"); } -function assert_Memory(memory, { size=0, shared=false, index="u32" }) { +function assert_Memory(memory, { size=0, shared=false, address="i32" }) { assert_equals(Object.getPrototypeOf(memory), WebAssembly.Memory.prototype, "prototype"); assert_true(Object.isExtensible(memory), "extensible"); @@ -38,6 +38,6 @@ function assert_Memory(memory, { size=0, shared=false, index="u32" }) { // this depends on js-types proposal implementation if (typeof memory.type == "function") { - assert_equals(memory.type().index, index, "memory index"); + assert_equals(memory.type().address, address, "memory address type"); } } diff --git a/test/js-api/memory/constructor.any.js b/test/js-api/memory/constructor.any.js index 910e2c0e3..05953f276 100644 --- a/test/js-api/memory/constructor.any.js +++ b/test/js-api/memory/constructor.any.js @@ -62,10 +62,29 @@ for (const value of outOfRangeValues) { }, `Out-of-range maximum value in descriptor: ${format_value(value)}`); } +const outOfRangeValuesI64 = [ + -1n, + 0x1_0000_0000_0000_0000n, +]; + +for (const value of outOfRangeValuesI64) { + test(() => { + assert_throws_js(TypeError, () => new WebAssembly.Memory({ "address": "i64", "initial": value })); + }, `Out-of-range initial i64 value in descriptor: ${format_value(value)}`); + + test(() => { + assert_throws_js(TypeError, () => new WebAssembly.Memory({ "address": "i64", "initial": 0n, "maximum": value })); + }, `Out-of-range maximum i64 value in descriptor: ${format_value(value)}`); +} + test(() => { assert_throws_js(RangeError, () => new WebAssembly.Memory({ "initial": 10, "maximum": 9 })); }, "Initial value exceeds maximum"); +test(() => { + assert_throws_js(RangeError, () => new WebAssembly.Memory({ "address": "i64", "initial": 10n, "maximum": 9n })); +}, "Initial value exceeds maximum (i64)"); + test(() => { const proxy = new Proxy({}, { has(o, x) { @@ -79,7 +98,7 @@ test(() => { case "initial": case "maximum": return 0; - case "index": + case "address": return "i32"; default: return undefined; @@ -112,9 +131,21 @@ test(() => { }, }; }, + + get address() { + order.push("address"); + return { + toString() { + order.push("address toString"); + return "i32"; + }, + }; + }, }); assert_array_equals(order, [ + "address", + "address toString", "initial", "initial valueOf", "maximum", @@ -134,6 +165,18 @@ test(() => { assert_Memory(memory, { "size": 4 }); }, "Non-zero initial"); +test(() => { + const argument = { "address": "i64", "initial": 0n }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 0, "address": "i64" }); +}, "Zero initial (i64)"); + +test(() => { + const argument = { "address": "i64", "initial": 4n }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 4, "address": "i64" }); +}, "Non-zero initial (i64)"); + test(() => { const argument = { "initial": 0 }; const memory = new WebAssembly.Memory(argument, {}); @@ -143,21 +186,45 @@ test(() => { test(() => { const argument = { "initial": 1 }; const memory = new WebAssembly.Memory(argument); - assert_Memory(memory, { "size": 1, "index": "i32" }); -}, "Memory with index parameter omitted"); + assert_Memory(memory, { "size": 1, "address": "i32" }); +}, "Memory with address parameter omitted"); + +test(() => { + const argument = { "initial": 1, "address": "i32" }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 1, "address": "i32" }); +}, "Memory with i32 address constructor"); + +test(() => { + const argument = { "initial": 1n, "address": "i64" }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 1, "address": "i64" }); +}, "Memory with i64 address constructor"); + +test(() => { + const argument = { "initial": "3" }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 3 }); +}, "Memory with string value for initial"); + +test(() => { + const argument = { "address": "i64", "initial": "3" }; + const memory = new WebAssembly.Memory(argument); + assert_Memory(memory, { "size": 3, "address": "i64" }); +}, "Memory with string value for initial (i64)"); test(() => { - const argument = { "initial": 1, "index": "i32" }; + const argument = { "initial": true }; const memory = new WebAssembly.Memory(argument); - assert_Memory(memory, { "size": 1, "index": "i32" }); -}, "Memory with i32 index constructor"); + assert_Memory(memory, { "size": 1 }); +}, "Memory with boolean value for initial"); test(() => { - const argument = { "initial": 1n, "index": "i64" }; + const argument = { "address": "i64", "initial": true }; const memory = new WebAssembly.Memory(argument); - assert_Memory(memory, { "size": 1, "index": "i64" }); -}, "Memory with i64 index constructor"); + assert_Memory(memory, { "size": 1, "address": "i64" }); +}, "Memory with boolean value for initial (i64)"); test(() => { - assert_throws_js(TypeError, () => new WebAssembly.Memory({ "initial": 1, "index": "none" })); -}, "Unknown memory index"); + assert_throws_js(TypeError, () => new WebAssembly.Memory({ "initial": 1, "address": "none" })); +}, "Unknown memory address"); diff --git a/test/js-api/memory/grow.any.js b/test/js-api/memory/grow.any.js index c51112949..cb1a9a6f3 100644 --- a/test/js-api/memory/grow.any.js +++ b/test/js-api/memory/grow.any.js @@ -47,6 +47,21 @@ test(() => { assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing"); }, "Zero initial"); +test(() => { + const argument = { "address": "i64", "initial": 0n }; + const memory = new WebAssembly.Memory(argument); + const oldMemory = memory.buffer; + assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing"); + + const result = memory.grow(2n); + assert_equals(result, 0n); + + const newMemory = memory.buffer; + assert_not_equals(oldMemory, newMemory); + assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing"); + assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing"); +}, "Zero initial (i64)"); + test(() => { const argument = { "initial": { valueOf() { return 0 } } }; const memory = new WebAssembly.Memory(argument); @@ -77,6 +92,21 @@ test(() => { assert_ArrayBuffer(newMemory, { "size": 5 }, "New buffer after growing"); }, "Non-zero initial"); +test(() => { + const argument = { "address": "i64", "initial": 3n }; + const memory = new WebAssembly.Memory(argument); + const oldMemory = memory.buffer; + assert_ArrayBuffer(oldMemory, { "size": 3 }, "Buffer before growing"); + + const result = memory.grow(2n); + assert_equals(result, 3n); + + const newMemory = memory.buffer; + assert_not_equals(oldMemory, newMemory); + assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing"); + assert_ArrayBuffer(newMemory, { "size": 5 }, "New buffer after growing"); +}, "Non-zero initial (i64)"); + test(() => { const argument = { "initial": 0, "maximum": 2 }; const memory = new WebAssembly.Memory(argument); @@ -92,6 +122,21 @@ test(() => { assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing"); }, "Zero initial with respected maximum"); +test(() => { + const argument = { "address": "i64", "initial": 0n, "maximum": 2n }; + const memory = new WebAssembly.Memory(argument); + const oldMemory = memory.buffer; + assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing"); + + const result = memory.grow(2n); + assert_equals(result, 0n); + + const newMemory = memory.buffer; + assert_not_equals(oldMemory, newMemory); + assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing"); + assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing"); +}, "Zero initial with respected maximum (i64)"); + test(() => { const argument = { "initial": 0, "maximum": 2 }; const memory = new WebAssembly.Memory(argument); @@ -116,6 +161,30 @@ test(() => { assert_ArrayBuffer(newestMemory, { "size": 2 }, "Newest buffer after growing twice"); }, "Zero initial with respected maximum grown twice"); +test(() => { + const argument = { "address": "i64", "initial": 0n, "maximum": 2n }; + const memory = new WebAssembly.Memory(argument); + const oldMemory = memory.buffer; + assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing"); + + const result = memory.grow(1n); + assert_equals(result, 0n); + + const newMemory = memory.buffer; + assert_not_equals(oldMemory, newMemory); + assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing once"); + assert_ArrayBuffer(newMemory, { "size": 1 }, "New buffer after growing once"); + + const result2 = memory.grow(1n); + assert_equals(result2, 1n); + + const newestMemory = memory.buffer; + assert_not_equals(newMemory, newestMemory); + assert_ArrayBuffer(oldMemory, { "detached": true }, "New buffer after growing twice"); + assert_ArrayBuffer(newMemory, { "detached": true }, "New buffer after growing twice"); + assert_ArrayBuffer(newestMemory, { "size": 2 }, "Newest buffer after growing twice"); +}, "Zero initial with respected maximum grown twice (i64)"); + test(() => { const argument = { "initial": 1, "maximum": 2 }; const memory = new WebAssembly.Memory(argument); @@ -127,6 +196,17 @@ test(() => { assert_ArrayBuffer(memory.buffer, { "size": 1 }, "Buffer before trying to grow"); }, "Zero initial growing too much"); +test(() => { + const argument = { "address": "i64", "initial": 1n, "maximum": 2n }; + const memory = new WebAssembly.Memory(argument); + const oldMemory = memory.buffer; + assert_ArrayBuffer(oldMemory, { "size": 1 }, "Buffer before growing"); + + assert_throws_js(RangeError, () => memory.grow(2n)); + assert_equals(memory.buffer, oldMemory); + assert_ArrayBuffer(memory.buffer, { "size": 1 }, "Buffer before trying to grow"); +}, "Zero initial growing too much (i64)"); + const outOfRangeValues = [ undefined, NaN, @@ -147,6 +227,20 @@ for (const value of outOfRangeValues) { }, `Out-of-range argument: ${format_value(value)}`); } +const outOfRangeValuesI64 = [ + -1n, + 0x10000000000000000n, + "0x10000000000000000", +]; + +for (const value of outOfRangeValuesI64) { + test(() => { + const argument = { "address": "i64", "initial": 0n }; + const memory = new WebAssembly.Memory(argument); + assert_throws_js(TypeError, () => memory.grow(value)); + }, `Out-of-range i64 argument: ${format_value(value)}`); +} + test(() => { const argument = { "initial": 0 }; const memory = new WebAssembly.Memory(argument); diff --git a/test/js-api/table/assertions.js b/test/js-api/table/assertions.js index 19cc5c3b9..cd403b480 100644 --- a/test/js-api/table/assertions.js +++ b/test/js-api/table/assertions.js @@ -1,24 +1,28 @@ -function assert_equal_to_array(table, expected, message) { - assert_equals(table.length, expected.length, `${message}: length`); +function assert_equal_to_array(table, expected, message, address = "i32") { + function addr(i) { + return address === "i64" ? BigInt(i) : i; + } + + assert_equals(table.length, addr(expected.length), `${message}: length`); // The argument check in get() happens before the range check, and negative numbers // are illegal, hence will throw TypeError per spec. - assert_throws_js(TypeError, () => table.get(-1), `${message}: table.get(-1)`); + assert_throws_js(TypeError, () => table.get(addr(-1)), `${message}: table.get(-1)`); for (let i = 0; i < expected.length; ++i) { - assert_equals(table.get(i), expected[i], `${message}: table.get(${i} of ${expected.length})`); + assert_equals(table.get(addr(i)), expected[i], `${message}: table.get(${i} of ${expected.length})`); } - assert_throws_js(RangeError, () => table.get(expected.length), + assert_throws_js(RangeError, () => table.get(addr(expected.length)), `${message}: table.get(${expected.length} of ${expected.length})`); - assert_throws_js(RangeError, () => table.get(expected.length + 1), + assert_throws_js(RangeError, () => table.get(addr(expected.length + 1)), `${message}: table.get(${expected.length + 1} of ${expected.length})`); } -function assert_Table(actual, expected) { +function assert_Table(actual, expected, address = "i32") { assert_equals(Object.getPrototypeOf(actual), WebAssembly.Table.prototype, "prototype"); assert_true(Object.isExtensible(actual), "extensible"); assert_equals(actual.length, expected.length, "length"); - for (let i = 0; i < expected.length; ++i) { + for (let i = address === "i64" ? 0n : 0; i < expected.length; ++i) { assert_equals(actual.get(i), null, `actual.get(${i})`); } } diff --git a/test/js-api/table/constructor.any.js b/test/js-api/table/constructor.any.js index 9053b6f7c..ebcd98b52 100644 --- a/test/js-api/table/constructor.any.js +++ b/test/js-api/table/constructor.any.js @@ -71,10 +71,29 @@ for (const value of outOfRangeValues) { }, `Out-of-range maximum value in descriptor: ${format_value(value)}`); } +const outOfRangeValuesI64 = [ + -1n, + 0x1_0000_0000_0000_0000n, +]; + +for (const value of outOfRangeValuesI64) { + test(() => { + assert_throws_js(TypeError, () => new WebAssembly.Table({ "element": "anyfunc", "address": "i64", "initial": value })); + }, `Out-of-range initial i64 value in descriptor: ${format_value(value)}`); + + test(() => { + assert_throws_js(TypeError, () => new WebAssembly.Table({ "element": "anyfunc", "address": "i64", "initial": 0n, "maximum": value })); + }, `Out-of-range maximum i64 value in descriptor: ${format_value(value)}`); +} + test(() => { assert_throws_js(RangeError, () => new WebAssembly.Table({ "element": "anyfunc", "initial": 10, "maximum": 9 })); }, "Initial value exceeds maximum"); +test(() => { + assert_throws_js(RangeError, () => new WebAssembly.Table({ "element": "anyfunc", "address": "i64", "initial": 10n, "maximum": 9n })); +}, "Initial value exceeds maximum (i64)"); + test(() => { const argument = { "element": "anyfunc", "initial": 0 }; const table = new WebAssembly.Table(argument); @@ -87,6 +106,18 @@ test(() => { assert_Table(table, { "length": 5 }); }, "Basic (non-zero)"); +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 0n }; + const table = new WebAssembly.Table(argument); + assert_Table(table, { "length": 0n }, "i64"); +}, "Basic (zero, i64)"); + +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 5n }; + const table = new WebAssembly.Table(argument); + assert_Table(table, { "length": 5n }, "i64"); +}, "Basic (non-zero, i64)"); + test(() => { const argument = { "element": "anyfunc", "initial": 0 }; const table = new WebAssembly.Table(argument, null, {}); @@ -158,11 +189,11 @@ test(() => { }; }, - get index() { - order.push("index"); + get address() { + order.push("address"); return { toString() { - order.push("index toString"); + order.push("address toString"); return "i32"; }, }; @@ -172,8 +203,8 @@ test(() => { assert_array_equals(order, [ "element", "element toString", - "index", - "index toString", + "address", + "address toString", "initial", "initial valueOf", "maximum", @@ -220,22 +251,94 @@ test(() => { }, "initialize anyfunc table with a bad default value"); test(() => { - const argument = { "element": "anyfunc", "initial": 3, "index": "i32" }; + const argument = { "element": "anyfunc", "initial": 3, "address": "i32" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the // address type of `table`. assert_equals(table.length, 3); -}, "Table with i32 index constructor"); +}, "Table with i32 address constructor"); test(() => { - const argument = { "element": "anyfunc", "initial": 3n, "index": "i64" }; + const argument = { "element": "anyfunc", "initial": 3n, "address": "i64" }; const table = new WebAssembly.Table(argument); // Once this is merged with the type reflection proposal we should check the // address type of `table`. + assert_equals(table.length, 3n); +}, "Table with i64 address constructor"); + +test(() => { + const argument = { "element": "anyfunc", "initial": "3", "address": "i32" }; + const table = new WebAssembly.Table(argument); assert_equals(table.length, 3); -}, "Table with i64 index constructor"); +}, "Table with string value for initial"); + +test(() => { + const argument = { "element": "anyfunc", "initial": "3", "address": "i64" }; + const table = new WebAssembly.Table(argument); + assert_equals(table.length, 3n); +}, "Table with string value for initial (i64)"); + +test(() => { + const argument = { "element": "anyfunc", "initial": true, "address": "i32" }; + const table = new WebAssembly.Table(argument); + assert_equals(table.length, 1); +}, "Table with boolean value for initial"); + +test(() => { + const argument = { "element": "anyfunc", "initial": true, "address": "i64" }; + const table = new WebAssembly.Table(argument); + assert_equals(table.length, 1n); +}, "Table with boolean value for initial (i64)"); + +test(() => { + const argument = { "element": "anyfunc", "initial": 0, "maximum": "3", "address": "i32" }; + const table = new WebAssembly.Table(argument); + table.grow(3); + assert_equals(table.length, 3); +}, "Table with string value for maximum"); + +test(() => { + const argument = { "element": "anyfunc", "initial": 0n, "maximum": "3", "address": "i64" }; + const table = new WebAssembly.Table(argument); + table.grow(3n); + assert_equals(table.length, 3n); +}, "Table with string value for maximum (i64)"); + +test(() => { + const argument = { "element": "anyfunc", "initial": 0, "maximum": true, "address": "i32" }; + const table = new WebAssembly.Table(argument); + table.grow(1); + assert_equals(table.length, 1); +}, "Table with boolean value for maximum"); + +test(() => { + const argument = { "element": "anyfunc", "initial": 0n, "maximum": true, "address": "i64" }; + const table = new WebAssembly.Table(argument); + table.grow(1n); + assert_equals(table.length, 1n); +}, "Table with boolean value for maximum (i64)"); + +test(() => { + const argument = { "element": "anyfunc", "initial": 3, "address": "unknown" }; + assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); +}, "Unknown table address"); + +test(() => { + const argument = { "element": "i32", "initial": 3n }; + assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); +}, "initialize table with a wrong initial type"); + +test(() => { + const argument = { "element": "i32", "initial": 3, "maximum": 10n }; + assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); +}, "initialize table with a wrong maximum type"); + +test(() => { + const argument = { "element": "i32", "initial": 3 }; + assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); +}, "initialize table with a wrong initial type (i64)"); test(() => { - const argument = { "element": "anyfunc", "initial": 3, "index": "unknown" }; + const argument = { "element": "i32", "initial": 3n, "maximum": 10 }; assert_throws_js(TypeError, () => new WebAssembly.Table(argument)); -}, "Unknown table index"); +}, "initialize table with a wrong maximum type (i64)"); diff --git a/test/js-api/table/get-set.any.js b/test/js-api/table/get-set.any.js index 9301057a5..c656cd29c 100644 --- a/test/js-api/table/get-set.any.js +++ b/test/js-api/table/get-set.any.js @@ -100,6 +100,23 @@ test(() => { assert_equal_to_array(table, [null, null, fn2, null, fn]); }, "Basic"); +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, [null, null, null, null, null], undefined, "i64"); + + const {fn, fn2} = functions; + + assert_equals(table.set(0n, fn), undefined, "set() returns undefined."); + table.set(2n, fn2); + table.set(4n, fn); + + assert_equal_to_array(table, [fn, null, fn2, null, fn], undefined, "i64"); + + table.set(0n, null); + assert_equal_to_array(table, [null, null, fn2, null, fn], undefined, "i64"); +}, "Basic (i64)"); + test(() => { const argument = { "element": "anyfunc", "initial": 5 }; const table = new WebAssembly.Table(argument); @@ -118,6 +135,24 @@ test(() => { assert_equal_to_array(table, [fn, null, fn2, null, fn, null, null, null, null]); }, "Growing"); +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, [null, null, null, null, null], undefined, "i64"); + + const {fn, fn2} = functions; + + table.set(0n, fn); + table.set(2n, fn2); + table.set(4n, fn); + + assert_equal_to_array(table, [fn, null, fn2, null, fn], undefined, "i64"); + + table.grow(4n); + + assert_equal_to_array(table, [fn, null, fn2, null, fn, null, null, null, null], undefined, "i64"); +}, "Growing (i64)"); + test(() => { const argument = { "element": "anyfunc", "initial": 5 }; const table = new WebAssembly.Table(argument); @@ -132,6 +167,20 @@ test(() => { assert_equal_to_array(table, [null, null, null, null, null]); }, "Setting out-of-bounds"); +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, [null, null, null, null, null], undefined, "i64"); + + const {fn} = functions; + + // -1 is the wrong type hence the type check on entry gets this + // before the range check does. + assert_throws_js(TypeError, () => table.set(-1n, fn)); + assert_throws_js(RangeError, () => table.set(5n, fn)); + assert_equal_to_array(table, [null, null, null, null, null], undefined, "i64"); +}, "Setting out-of-bounds (i64)"); + test(() => { const argument = { "element": "anyfunc", "initial": 1 }; const table = new WebAssembly.Table(argument); @@ -200,6 +249,26 @@ for (const value of outOfRangeValues) { }, `Setting out-of-range argument: ${format_value(value)}`); } +const outOfRangeValuesI64 = [ + -1n, + 0x10000000000000000n, + "0x10000000000000000", +]; + +for (const value of outOfRangeValuesI64) { + test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 1n }; + const table = new WebAssembly.Table(argument); + assert_throws_js(TypeError, () => table.get(value)); + }, `Getting out-of-range argument (i64): ${format_value(value)}`); + + test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 1n }; + const table = new WebAssembly.Table(argument); + assert_throws_js(TypeError, () => table.set(value, null)); + }, `Setting out-of-range argument (i64): ${format_value(value)}`); +} + test(() => { const argument = { "element": "anyfunc", "initial": 1 }; const table = new WebAssembly.Table(argument); diff --git a/test/js-api/table/grow.any.js b/test/js-api/table/grow.any.js index 520d24bf4..55226cbdb 100644 --- a/test/js-api/table/grow.any.js +++ b/test/js-api/table/grow.any.js @@ -45,7 +45,17 @@ test(() => { const result = table.grow(3); assert_equals(result, 5); assert_equal_to_array(table, nulls(8), "after"); -}, "Basic"); +}, "Basic i32"); + +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, nulls(5), "before", "i64"); + + const result = table.grow(3n); + assert_equals(result, 5n); + assert_equal_to_array(table, nulls(8), "after", "i64"); +}, "Basic i64"); test(() => { const argument = { "element": "anyfunc", "initial": 3, "maximum": 5 }; @@ -55,7 +65,17 @@ test(() => { const result = table.grow(2); assert_equals(result, 3); assert_equal_to_array(table, nulls(5), "after"); -}, "Reached maximum"); +}, "Reached maximum (i32)"); + +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 3n, "maximum": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, nulls(3), "before", "i64"); + + const result = table.grow(2n); + assert_equals(result, 3n); + assert_equal_to_array(table, nulls(5), "after", "i64"); +}, "Reached maximum (i64)"); test(() => { const argument = { "element": "anyfunc", "initial": 2, "maximum": 5 }; @@ -64,7 +84,16 @@ test(() => { assert_throws_js(RangeError, () => table.grow(4)); assert_equal_to_array(table, nulls(2), "after"); -}, "Exceeded maximum"); +}, "Exceeded maximum (i32)"); + +test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 2n, "maximum": 5n }; + const table = new WebAssembly.Table(argument); + assert_equal_to_array(table, nulls(2), "before", "i64"); + + assert_throws_js(RangeError, () => table.grow(4n)); + assert_equal_to_array(table, nulls(2), "after", "i64"); +}, "Exceeded maximum (i64)"); const outOfRangeValues = [ undefined, @@ -86,6 +115,20 @@ for (const value of outOfRangeValues) { }, `Out-of-range argument: ${format_value(value)}`); } +const outOfRangeValuesI64 = [ + -1n, + 0x10000000000000000n, + "0x10000000000000000", +]; + +for (const value of outOfRangeValuesI64) { + test(() => { + const argument = { "element": "anyfunc", "address": "i64", "initial": 1n }; + const table = new WebAssembly.Table(argument); + assert_throws_js(TypeError, () => table.grow(value)); + }, `Out-of-range i64 argument: ${format_value(value)}`); +} + test(() => { const argument = { "element": "anyfunc", "initial": 5 }; const table = new WebAssembly.Table(argument); From 86e22aa1620979230edb631ff7ce470fc4287e2f Mon Sep 17 00:00:00 2001 From: Clemens Backes Date: Fri, 25 Oct 2024 16:38:39 +0200 Subject: [PATCH 201/230] Update JS-test generation after #90 and #92 (#94) "index" was renamed to "address". Without this change, all JS tests generated from the core tests will fail. --- interpreter/script/js.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 21c4ebbaa..94f2c02d8 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -37,9 +37,9 @@ let spectest = { global_f64: 666.6, table: new WebAssembly.Table({initial: 10, maximum: 20, element: 'anyfunc'}), table64: new WebAssembly.Table( - {initial: 10n, maximum: 20n, element: 'anyfunc', index: 'i64'}), + {initial: 10n, maximum: 20n, element: 'anyfunc', address: 'i64'}), memory: new WebAssembly.Memory({initial: 1, maximum: 2}), - memory64: new WebAssembly.Memory({initial: 1n, maximum: 2n, index: 'i64'}) + memory64: new WebAssembly.Memory({initial: 1n, maximum: 2n, address: 'i64'}) }; let handler = { From 1f803e13b7e6814fe4f2c02cf2feea2bbac377f9 Mon Sep 17 00:00:00 2001 From: evilg Date: Fri, 25 Oct 2024 15:41:07 -0400 Subject: [PATCH 202/230] Fix test copy/paste typo (#566) --- test/core/gc/i31.wast | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/core/gc/i31.wast b/test/core/gc/i31.wast index 748565045..6309e72b6 100644 --- a/test/core/gc/i31.wast +++ b/test/core/gc/i31.wast @@ -14,7 +14,7 @@ (i31.get_u (ref.null i31)) ) (func (export "get_s-null") (result i32) - (i31.get_u (ref.null i31)) + (i31.get_s (ref.null i31)) ) (global $i (ref i31) (ref.i31 (i32.const 2))) From cda4012a157f8e34cec64dc975e5552b96c58179 Mon Sep 17 00:00:00 2001 From: Mohanson Date: Tue, 29 Oct 2024 18:56:54 +0800 Subject: [PATCH 203/230] [spec] Add elem/data member to moduleinst prose (#1837) --- document/core/exec/modules.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/modules.rst b/document/core/exec/modules.rst index cdb20d03c..a962fc9b8 100644 --- a/document/core/exec/modules.rst +++ b/document/core/exec/modules.rst @@ -501,7 +501,7 @@ and list of :ref:`reference ` vectors for the module's :ref:`element 19. Let :math:`\exportinst^\ast` be the concatenation of the :ref:`export instances ` :math:`\exportinst_i` in index order. -20. Let :math:`\moduleinst` be the :ref:`module instance ` :math:`\{\MITYPES~(\module.\MTYPES),` :math:`\MIFUNCS~\funcaddr_{\F{mod}}^\ast,` :math:`\MITABLES~\tableaddr_{\F{mod}}^\ast,` :math:`\MIMEMS~\memaddr_{\F{mod}}^\ast,` :math:`\MIGLOBALS~\globaladdr_{\F{mod}}^\ast,` :math:`\MIEXPORTS~\exportinst^\ast\}`. +20. Let :math:`\moduleinst` be the :ref:`module instance ` :math:`\{\MITYPES~(\module.\MTYPES),` :math:`\MIFUNCS~\funcaddr_{\F{mod}}^\ast,` :math:`\MITABLES~\tableaddr_{\F{mod}}^\ast,` :math:`\MIMEMS~\memaddr_{\F{mod}}^\ast,` :math:`\MIGLOBALS~\globaladdr_{\F{mod}}^\ast,` :math:`\MIELEMS~\elemaddr^\ast,` :math:`\MIDATAS~\dataaddr^\ast,` :math:`\MIEXPORTS~\exportinst^\ast\}`. 21. Return :math:`\moduleinst`. From 37f3cad1265a64e53d558ed469056fe92ff473b0 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Mon, 28 Oct 2024 21:21:14 +0100 Subject: [PATCH 204/230] [interpreter] Fix subtype condition for result patterns --- interpreter/script/js.ml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index adc072cb1..30bbb796e 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -358,7 +358,12 @@ let rec type_of_result res = let assert_return ress ts at = let rec test (res, t) = - if not (Match.match_val_type [] t (type_of_result res)) then + if + not ( + Match.match_val_type [] t (type_of_result res) || + Match.match_val_type [] (type_of_result res) t + ) + then [ Br (0l @@ at) @@ at ] else match res.it with From 8ce0607ca134d9d520038fb7fc28d500dab74617 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 29 Oct 2024 14:08:56 +0100 Subject: [PATCH 205/230] Handle extern refs --- interpreter/script/js.ml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 30bbb796e..47640d683 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -436,7 +436,7 @@ let assert_return ress ts at = [ RefIsNull @@ at; Test (Value.I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] - | RefResult (RefPat {it = HostRef n; _}) -> + | RefResult (RefPat {it = (HostRef n | Extern.ExternRef (HostRef n)); _}) -> [ Const (Value.I32 n @@ at) @@ at; Call (hostref_idx @@ at) @@ at; Call (eq_ref_idx @@ at) @@ at; From 76654e28102e37b65503ae744e8767bb2cba7963 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 29 Oct 2024 16:23:33 +0100 Subject: [PATCH 206/230] [interpreter] Fix (and sanity-check) JS wrapper modules --- .github/workflows/ci-interpreter.yml | 4 +-- interpreter/script/js.ml | 43 ++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci-interpreter.yml b/.github/workflows/ci-interpreter.yml index 6c09ffc0f..7ac7513dd 100644 --- a/.github/workflows/ci-interpreter.yml +++ b/.github/workflows/ci-interpreter.yml @@ -2,11 +2,11 @@ name: CI for interpreter & tests on: push: - branches: [ main ] + branches: [ main, wasm-3.0 ] paths: [ .github/**, interpreter/**, test/** ] pull_request: - branches: [ main ] + branches: [ main, wasm-3.0 ] paths: [ .github/**, interpreter/**, test/** ] # Allows you to run this workflow manually from the Actions tab diff --git a/interpreter/script/js.ml b/interpreter/script/js.ml index 47640d683..a9bde9353 100644 --- a/interpreter/script/js.ml +++ b/interpreter/script/js.ml @@ -309,8 +309,15 @@ let value v = | Num n -> [Const (n @@ v.at) @@ v.at] | Vec s -> [VecConst (s @@ v.at) @@ v.at] | Ref (NullRef ht) -> [RefNull (Match.bot_of_heap_type [] ht) @@ v.at] + | Ref (HostRef n) -> + [ Const (I32 n @@ v.at) @@ v.at; + Call (hostref_idx @@ v.at) @@ v.at; + ] | Ref (Extern.ExternRef (HostRef n)) -> - [Const (I32 n @@ v.at) @@ v.at; Call (hostref_idx @@ v.at) @@ v.at] + [ Const (I32 n @@ v.at) @@ v.at; + Call (hostref_idx @@ v.at) @@ v.at; + ExternConvert Externalize @@ v.at; + ] | Ref _ -> assert false let invoke ft vs at = @@ -357,6 +364,7 @@ let rec type_of_result res = ) (List.hd ts) ts let assert_return ress ts at = + let locals = ref [] in let rec test (res, t) = if not ( @@ -436,10 +444,17 @@ let assert_return ress ts at = [ RefIsNull @@ at; Test (Value.I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] - | RefResult (RefPat {it = (HostRef n | Extern.ExternRef (HostRef n)); _}) -> + | RefResult (RefPat {it = HostRef n; _}) -> + [ Const (Value.I32 n @@ at) @@ at; + Call (hostref_idx @@ at) @@ at; + Call (eq_ref_idx @@ at) @@ at; + Test (Value.I32 I32Op.Eqz) @@ at; + BrIf (0l @@ at) @@ at ] + | RefResult (RefPat {it = Extern.ExternRef (HostRef n); _}) -> [ Const (Value.I32 n @@ at) @@ at; Call (hostref_idx @@ at) @@ at; - Call (eq_ref_idx @@ at) @@ at; + ExternConvert Externalize @@ at; + Call (eq_ref_idx @@ at) @@ at; Test (Value.I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] | RefResult (RefPat _) -> @@ -455,9 +470,13 @@ let assert_return ress ts at = Test (I32 I32Op.Eqz) @@ at; BrIf (0l @@ at) @@ at ] | EitherResult ress -> - [ Block (ValBlockType None, + let idx = Lib.List32.length !locals in + locals := !locals @ [{ltype = t} @@ res.at]; + [ LocalSet (idx @@ res.at) @@ res.at; + Block (ValBlockType None, List.map (fun resI -> Block (ValBlockType None, + [LocalGet (idx @@ resI.at) @@ resI.at] @ test (resI, t) @ [Br (1l @@ resI.at) @@ resI.at] ) @@ resI.at @@ -465,7 +484,7 @@ let assert_return ress ts at = [Br (1l @@ at) @@ at] ) @@ at ] - in [], List.flatten (List.rev_map test (List.combine ress ts)) + in !locals, List.flatten (List.rev_map test (List.combine ress ts)) let i32 = NumT I32T let anyref = RefT (Null, AnyHT) @@ -504,12 +523,20 @@ let wrap item_name wrap_action wrap_assertion at = in let funcs = [{ftype = 0l @@ at; locals; body} @@ at] in let m = {empty_module with types; funcs; imports; exports} @@ at in + (try + Valid.check_module m; (* sanity check *) + with Valid.Invalid _ as exn -> + prerr_endline (string_of_region at ^ + ": internal error in JS converter, invalid wrapper module generated:"); + Sexpr.output stderr 80 (Arrange.module_ m); + raise exn + ); Encode.encode m let is_js_num_type = function - | I32T -> true - | I64T | F32T | F64T -> false + | I32T | I64T -> true + | F32T | F64T -> false let is_js_vec_type = function | _ -> false @@ -569,7 +596,7 @@ let of_num n = let open Value in match n with | I32 i -> I32.to_string_s i - | I64 i -> "int64(\"" ^ I64.to_string_s i ^ "\")" + | I64 i -> I64.to_string_s i ^ "n" | F32 z -> of_float (F32.to_float z) | F64 z -> of_float (F64.to_float z) From 1e101024972b647d923da4f6e7cb9a1062f69a1e Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Tue, 29 Oct 2024 16:24:54 +0100 Subject: [PATCH 207/230] Activate CI for wasm-3.0 branch --- .github/workflows/ci-spec.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-spec.yml b/.github/workflows/ci-spec.yml index c35b394f1..f5918416c 100644 --- a/.github/workflows/ci-spec.yml +++ b/.github/workflows/ci-spec.yml @@ -2,11 +2,11 @@ name: CI for specs on: push: - branches: [ main ] + branches: [ main, wasm-3.0 ] paths: [ .github/**, document/** ] pull_request: - branches: [ main ] + branches: [ main, wasm-3.0 ] paths: [ .github/**, document/** ] # Allows you to run this workflow manually from the Actions tab From 88463e822fafdf80f33b9eb84f0c489bd5940cf5 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 31 Oct 2024 09:06:04 +0100 Subject: [PATCH 208/230] Fix direction of subtype check for call_indirect --- document/core/exec/instructions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 941299770..894785ca3 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -4368,7 +4368,7 @@ Control Instructions \begin{array}[t]{@{}r@{~}l@{}} (\iff & S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM[i] = \REFFUNCADDR~a \\ \wedge & S.\SFUNCS[a] = f \\ - \wedge & S \vdashdeftypematch F.\AMODULE.\MITYPES[y] \matchesdeftype f.\FITYPE) + \wedge & S \vdashdeftypematch f.\FITYPE \matchesdeftype F.\AMODULE.\MITYPES[y]) \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} From 268a03da8576cc491d708777e69676724938aec9 Mon Sep 17 00:00:00 2001 From: Adam Klein Date: Fri, 1 Nov 2024 12:18:45 -0700 Subject: [PATCH 209/230] [test] generate JS/HTML wrappers for tests in subdirectories (#1808) --- test/build.py | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/test/build.py b/test/build.py index 69c1b19a2..94e7304db 100755 --- a/test/build.py +++ b/test/build.py @@ -13,6 +13,9 @@ WASM_EXEC = os.path.join(INTERPRETER_DIR, 'wasm') WAST_TESTS_DIR = os.path.join(SCRIPT_DIR, 'core') +WAST_TEST_SUBDIRS = [os.path.basename(d) for d in + filter(os.path.isdir, + glob.glob(os.path.join(WAST_TESTS_DIR, '*')))] HARNESS_DIR = os.path.join(SCRIPT_DIR, 'harness') HARNESS_FILES = ['testharness.js', 'testharnessreport.js', 'testharness.css'] @@ -67,13 +70,17 @@ def convert_wast_to_js(out_js_dir): inputs = [] - for wast_file in glob.glob(os.path.join(WAST_TESTS_DIR, '*.wast')): + for wast_file in glob.glob(os.path.join(WAST_TESTS_DIR, '**/*.wast'), + recursive = True): # Don't try to compile tests that are supposed to fail. if '.fail.' in wast_file: continue + js_subdir = os.path.basename(os.path.dirname(wast_file)) + if js_subdir == 'core': + js_subdir = '' js_filename = os.path.basename(wast_file) + '.js' - js_file = os.path.join(out_js_dir, js_filename) + js_file = os.path.join(out_js_dir, js_subdir, js_filename) inputs.append((wast_file, js_file)) pool = mp.Pool(processes=8) @@ -112,9 +119,9 @@ def build_js(out_js_dir): - - - + + +
""" @@ -137,6 +144,8 @@ def wrap_single_test(js_file): def build_html_js(out_dir): ensure_empty_dir(out_dir) + for d in WAST_TEST_SUBDIRS: + ensure_empty_dir(os.path.join(out_dir, d)) copy_harness_files(out_dir, True) tests = convert_wast_to_js(out_dir) @@ -146,19 +155,25 @@ def build_html_js(out_dir): def build_html_from_js(tests, html_dir, use_sync): for js_file in tests: - js_filename = os.path.basename(js_file) - html_filename = js_filename + '.html' - html_file = os.path.join(html_dir, html_filename) + subdir = os.path.basename(os.path.dirname(js_file)) + js_prefix = '../js' + if subdir == 'js': + subdir = '' + js_prefix = './js' + js_filename = os.path.join(js_prefix, subdir, os.path.basename(js_file)) + html_filename = os.path.basename(js_file) + '.html' + html_file = os.path.join(html_dir, subdir, html_filename) js_harness = "sync_index.js" if use_sync else "async_index.js" + harness_dir = os.path.join(js_prefix, 'harness') with open(html_file, 'w+') as f: - content = HTML_HEADER.replace('{PREFIX}', './js/harness') \ - .replace('{WPT_PREFIX}', './js/harness') \ + content = HTML_HEADER.replace('{PREFIX}', harness_dir) \ + .replace('{WPT_PREFIX}', harness_dir) \ .replace('{JS_HARNESS}', js_harness) - content += " ".replace('{SCRIPT}', js_filename) + content += ' ' content += HTML_BOTTOM f.write(content) -def build_html(html_dir, js_dir, use_sync): +def build_html(html_dir, use_sync): print("Building HTML tests...") js_html_dir = os.path.join(html_dir, 'js') @@ -248,11 +263,15 @@ def process_args(): if js_dir is not None: ensure_empty_dir(js_dir) + for d in WAST_TEST_SUBDIRS: + ensure_empty_dir(os.path.join(js_dir, d)) build_js(js_dir) if html_dir is not None: ensure_empty_dir(html_dir) - build_html(html_dir, js_dir, args.use_sync) + for d in WAST_TEST_SUBDIRS: + ensure_empty_dir(os.path.join(html_dir, d)) + build_html(html_dir, args.use_sync) if front_dir is not None: ensure_empty_dir(front_dir) From 83eae1b98712c622316ed092ab84507d22cb41d9 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 6 Nov 2024 15:22:26 +0100 Subject: [PATCH 210/230] Correct merge changes --- README.md | 16 ++-------------- document/core/conf.py | 2 +- document/core/index.rst | 2 +- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index e3c154481..cbc17b462 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,5 @@ -[![CI for specs](https://github.com/WebAssembly/memory64/actions/workflows/ci-spec.yml/badge.svg)](https://github.com/WebAssembly/memory64/actions/workflows/ci-spec.yml) -[![CI for interpreter & tests](https://github.com/WebAssembly/memory64/actions/workflows/ci-interpreter.yml/badge.svg)](https://github.com/WebAssembly/memory64/actions/workflows/ci-interpreter.yml) - -# Memory64 Proposal for WebAssembly - -This repository is a clone of [github.com/WebAssembly/spec/](https://github.com/WebAssembly/spec/). -It is meant for discussion, prototype specification and implementation of a proposal to -add support for 64-bit memory indexes to WebAssembly. - -* See the [overview](proposals/memory64/Overview.md) for a summary of the proposal. - -* See the [modified spec](https://webassembly.github.io/memory64/) for details. - -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) # spec diff --git a/document/core/conf.py b/document/core/conf.py index 161faa4e7..eab24731f 100644 --- a/document/core/conf.py +++ b/document/core/conf.py @@ -66,7 +66,7 @@ logo = 'static/webassembly.png' # The name of the GitHub repository this resides in -repo = 'memory64' +repo = 'spec' # The name of the proposal it represents, if any proposal = '' diff --git a/document/core/index.rst b/document/core/index.rst index 83e17f55c..7f39215f2 100644 --- a/document/core/index.rst +++ b/document/core/index.rst @@ -3,7 +3,7 @@ WebAssembly Specification .. only:: html - | Release |release| + memory64 (Draft, |today|) + | Release |release| (Draft, |today|) | Editor: Andreas Rossberg From 837bae3c3e97041f0cd176bbbc66d6881142c116 Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 6 Nov 2024 15:24:45 +0100 Subject: [PATCH 211/230] Various tweaks to memory64 spec --- document/core/appendix/embedding.rst | 4 +- document/core/binary/types.rst | 6 +- document/core/exec/instructions.rst | 420 ++++++++++++--------------- document/core/syntax/types.rst | 13 +- document/core/text/modules.rst | 29 +- document/core/valid/instructions.rst | 8 +- document/core/valid/matching.rst | 8 +- interpreter/binary/decode.ml | 12 +- interpreter/binary/encode.ml | 10 +- interpreter/exec/eval.ml | 244 +++++++--------- interpreter/host/spectest.ml | 6 +- interpreter/runtime/data.ml | 1 - interpreter/runtime/data.mli | 3 +- interpreter/runtime/elem.mli | 2 +- interpreter/runtime/memory.ml | 36 +-- interpreter/runtime/memory.mli | 5 +- interpreter/runtime/table.ml | 26 +- interpreter/runtime/table.mli | 13 +- interpreter/runtime/value.ml | 20 +- interpreter/syntax/free.ml | 4 +- interpreter/syntax/operators.ml | 4 + interpreter/syntax/types.ml | 40 ++- interpreter/text/arrange.ml | 6 +- interpreter/text/parser.mly | 86 ++---- interpreter/valid/match.ml | 9 +- interpreter/valid/valid.ml | 144 ++++----- test/core/memory.wast | 37 ++- test/core/memory64.wast | 18 ++ test/core/table.wast | 6 +- 29 files changed, 589 insertions(+), 631 deletions(-) diff --git a/document/core/appendix/embedding.rst b/document/core/appendix/embedding.rst index 57b183911..d2d7c54d0 100644 --- a/document/core/appendix/embedding.rst +++ b/document/core/appendix/embedding.rst @@ -21,7 +21,7 @@ Types In the description of the embedder interface, syntactic classes from the :ref:`abstract syntax ` and the :ref:`runtime's abstract machine ` are used as names for variables that range over the possible objects from that class. Hence, these syntactic classes can also be interpreted as types. -For numeric parameters, notation like :math:`n:\u32` is used to specify a symbolic name in addition to the respective value range. +For numeric parameters, notation like :math:`i:\u64` is used to specify a symbolic name in addition to the respective value range. .. _embed-bool: @@ -165,7 +165,7 @@ Modules .. _embed-module-instantiate: :math:`\F{module\_instantiate}(\store, \module, \externval^\ast) : (\store, \moduleinst ~|~ \exception ~|~ \error)` -.................................................................................................... +................................................................................................................... 1. Try :ref:`instantiating ` :math:`\module` in :math:`\store` with :ref:`external values ` :math:`\externval^\ast` as imports: diff --git a/document/core/binary/types.rst b/document/core/binary/types.rst index d5501ec48..3ab538a09 100644 --- a/document/core/binary/types.rst +++ b/document/core/binary/types.rst @@ -251,7 +251,7 @@ Additional shorthands are recognized for unary recursions and sub types without Limits ~~~~~~ -:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and the corresponding :ref:`address type `. +:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and a flag for the :ref:`address type `. .. math:: \begin{array}{llclll} @@ -275,7 +275,7 @@ Memory Types .. math:: \begin{array}{llclll@{\qquad\qquad}l} \production{memory type} & \Bmemtype &::=& - (\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim} \\ + (\X{at},\X{lim}){:}\Blimits &\Rightarrow& \X{at}~\X{lim} \\ \end{array} @@ -291,7 +291,7 @@ Table Types .. math:: \begin{array}{llclll} \production{table type} & \Btabletype &::=& - \X{et}{:}\Breftype~~(\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim}~\X{et} \\ + \X{et}{:}\Breftype~~(\X{at},\X{lim}){:}\Blimits &\Rightarrow& \X{at}~\X{lim}~\X{et} \\ \end{array} diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 3a23b045e..07407cac4 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -2725,19 +2725,17 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: +8. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -10. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`. +9. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`. -11. Push the value :math:`\val` to the stack. +10. Push the value :math:`\val` to the stack. .. math:: ~\\[-1ex] @@ -2770,21 +2768,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. +6. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -8. Pop the value :math:`\val` from the stack. +7. Pop the value :math:`\val` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: +10. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -12. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`. +11. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`. .. math:: ~\\[-1ex] @@ -2829,7 +2825,10 @@ Table Instructions S; F; (\TABLESIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad - (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz}) \\ + \begin{array}[t]{@{}r@{~}l@{}} + (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz} \\ + \wedge S.\STABLES[F.\AMODULE.\MITABLES[x]].\TITYPE = \X{at}~\X{lim}~t) + \end{array} \\ \end{array} @@ -2849,21 +2848,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`. +6. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Pop the value :math:`t.\CONST~n` from the stack. -10. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. +9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -11. Pop the value :math:`\val` from the stack. +10. Pop the value :math:`\val` from the stack. -12. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +11. Let :math:`\X{err}` be the value :math:`2^{|\X{at}|}-1`, for which :math:`\signed_{|\X{at}|}(\X{err})` is :math:`-1`. -13. Either: +12. Either: a. If :ref:`growing ` :math:`\X{tab}` by :math:`n` entries with initialization value :math:`\val` succeeds, then: @@ -2873,7 +2870,7 @@ Table Instructions i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. -14. Or: +13. Or: a. push the value :math:`\X{at}.\CONST~\X{err}` to the stack. @@ -2891,7 +2888,7 @@ Table Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) + S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{|\X{at}|}^{-1}(-1)) \end{array} \end{array} @@ -2919,21 +2916,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Pop the value :math:`\X{at}.\CONST~n` from the stack. -8. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. - -10. Pop the value :math:`\val` from the stack. +9. Pop the value :math:`\val` from the stack. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`address type ` :math:`\X{at}` is on the top of the stack. -12. Pop the value :math:`\X{at}.\CONST~i` from the stack. +11. Pop the value :math:`\X{at}.\CONST~i` from the stack. -13. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: +12. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. @@ -3004,25 +2999,19 @@ Table Instructions 9. Let :math:`\X{tab}_y` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}_y]`. -10. Let :math:`\X{at}_x~\limits_x` be the :ref:`table type ` :math:`\X{tab}_x.\TITYPE`. - -11. Let :math:`\X{at}_y~\limits_y` be the :ref:`table type ` :math:`\X{tab}_y.\TITYPE`. - -12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y`. +10. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_n` is on the top of the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. +11. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. +12. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_s` is on the top of the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_y` is on the top of the stack. +13. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. -16. Pop the value :math:`\X{at}_y.\CONST~s` from the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_d` is on the top of the stack. -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_x` is on the top of the stack. +15. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. -18. Pop the value :math:`\X{at}_x.\CONST~d` from the stack. - -19. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then: a. Trap. @@ -3032,9 +3021,9 @@ Table Instructions 21. If :math:`d \leq s`, then: - a. Push the value :math:`\X{at}_x.\CONST~d` to the stack. + a. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - b. Push the value :math:`\X{at}_y.\CONST~s` to the stack. + b. Push the value :math:`\X{at}_s.\CONST~s` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. @@ -3042,29 +3031,29 @@ Table Instructions e. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. - f. Push the value :math:`\X{at}_x.\CONST~(d+1)` to the stack. + f. Push the value :math:`\X{at}_d.\CONST~(d+1)` to the stack. g. Assert: due to the earlier check against the table size, :math:`s+1 < 2^{32}`. - h. Push the value :math:`\X{at}_y.\CONST~(s+1)` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~(s+1)` to the stack. 22. Else: a. Assert: due to the earlier check against the table size, :math:`d+n-1 < 2^{32}`. - b. Push the value :math:`\X{at}_x.\CONST~(d+n-1)` to the stack. + b. Push the value :math:`\X{at}_d.\CONST~(d+n-1)` to the stack. c. Assert: due to the earlier check against the table size, :math:`s+n-1 < 2^{32}`. - d. Push the value :math:`\X{at}_y.\CONST~(s+n-1)` to the stack. + d. Push the value :math:`\X{at}_s.\CONST~(s+n-1)` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. f. Execute the instruction :math:`\TABLESET~x`. - g. Push the value :math:`\X{at}_x.\CONST~d` to the stack. + g. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - h. Push the value :math:`\X{at}_y.\CONST~s` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~s` to the stack. 23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. @@ -3073,7 +3062,7 @@ Table Instructions .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3081,27 +3070,27 @@ Table Instructions \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~0)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~0)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{at}_x.\CONST~d+1)~(\X{at}_y.\CONST~s+1)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_d.\CONST~d+1)~(\X{at}_s.\CONST~s+1)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d \leq s) \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{at}_x.\CONST~d+n)~(\X{at}_y.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_d.\CONST~d+n)~(\X{at}_s.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d > s) \\ @@ -3123,55 +3112,53 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists. +6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists. -8. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`. +7. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`. -9. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists. +8. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists. -10. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`. +9. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\I32` is on the top of the stack. -12. Pop the value :math:`\I32.\CONST~n` from the stack. +11. Pop the value :math:`\I32.\CONST~n` from the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -14. Pop the value :math:`\I32.\CONST~s` from the stack. +13. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{at}.\CONST~d` from the stack. +15. Pop the value :math:`\X{at}.\CONST~d` from the stack. -17. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -18. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -19. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`. +18. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`. -20. Push the value :math:`\X{at}.\CONST~d` to the stack. +19. Push the value :math:`\X{at}.\CONST~d` to the stack. -21. Push the value :math:`\val` to the stack. +20. Push the value :math:`\val` to the stack. -22. Execute the instruction :math:`\TABLESET~x`. +21. Execute the instruction :math:`\TABLESET~x`. -23. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. +22. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. +23. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. -25. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`. +24. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`. -26. Push the value :math:`\I32.\CONST~(s+1)` to the stack. +25. Push the value :math:`\I32.\CONST~(s+1)` to the stack. -27. Push the value :math:`\I32.\CONST~(n-1)` to the stack. +26. Push the value :math:`\I32.\CONST~(n-1)` to the stack. -28. Execute the instruction :math:`\TABLEINIT~x~y`. +27. Execute the instruction :math:`\TABLEINIT~x~y`. .. math:: ~\\[-1ex] @@ -3260,35 +3247,33 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`N` is not part of the instruction, then: +9. If :math:`N` is not part of the instruction, then: a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`. -11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -13. If :math:`N` and :math:`\sx` are part of the instruction, then: +12. If :math:`N` and :math:`\sx` are part of the instruction, then: a. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. b. Let :math:`c` be the result of computing :math:`\extend^{\sx}_{N,|t|}(n)`. -14. Else: +13. Else: a. Let :math:`c` be the constant for which :math:`\bytes_t(c) = b^\ast`. -15. Push the value :math:`t.\CONST~c` to the stack. +14. Push the value :math:`t.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3337,29 +3322,27 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`. -12. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`. +11. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`. -13. Let :math:`W` be the integer :math:`M \cdot 2`. +12. Let :math:`W` be the integer :math:`M \cdot 2`. -14. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`. +13. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`. -15. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`. +14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`. -16. Push the value :math:`\V128.\CONST~c` to the stack. +15. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3400,27 +3383,25 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. +11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. -13. Let :math:`L` be the integer :math:`128 / N`. +12. Let :math:`L` be the integer :math:`128 / N`. -14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`. +13. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`. -15. Push the value :math:`\V128.\CONST~c` to the stack. +14. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3459,25 +3440,23 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Assert: due to :ref:`validation `, a value of :ref:`adress type ` :math:`\X{at}` is on the top of the stack. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. - -10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. +11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. -13. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`. +12. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`. -14. Push the value :math:`\V128.\CONST~c` to the stack. +13. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3516,33 +3495,31 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack. -8. Pop the value :math:`\V128.\CONST~v` from the stack. +7. Pop the value :math:`\V128.\CONST~v` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -13. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -14. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`. +13. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`. -15. Let :math:`L` be :math:`128 / N`. +14. Let :math:`L` be :math:`128 / N`. -16. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`. +15. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`. -17. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`. +16. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`. -18. Push the value :math:`\V128.\CONST~c` to the stack. +17. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3583,37 +3560,35 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack. -8. Pop the value :math:`t.\CONST~c` from the stack. +7. Pop the value :math:`t.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`N` is not part of the instruction, then: +11. If :math:`N` is not part of the instruction, then: a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`. -13. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -14. If :math:`N` is part of the instruction, then: +13. If :math:`N` is part of the instruction, then: a. Let :math:`n` be the result of computing :math:`\wrap_{|t|,N}(c)`. b. Let :math:`b^\ast` be the byte sequence :math:`\bytes_{\iN}(n)`. -15. Else: +14. Else: a. Let :math:`b^\ast` be the byte sequence :math:`\bytes_t(c)`. -16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. +15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. .. math:: ~\\[-1ex] @@ -3661,29 +3636,27 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack. -8. Pop the value :math:`\V128.\CONST~c` from the stack. +7. Pop the value :math:`\V128.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -13. Let :math:`L` be :math:`128/N`. +12. Let :math:`L` be :math:`128/N`. -14. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`. +13. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`. -15. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`. +14. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`. -16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. +15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. .. math:: ~\\[-1ex] @@ -3734,7 +3707,10 @@ Memory Instructions S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad - (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki}) \\ + \begin{array}[t]{@{}r@{~}l@{}} + (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki} \\ + \wedge S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MITYPE = \X{at}~\X{lim}) + \end{array} \\ \end{array} @@ -3754,17 +3730,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `. +6. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Pop the value :math:`\X{at}.\CONST~n` from the stack. -10. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +9. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{|\X{at}|}-1`, for which :math:`\signed_{|\X{at}|}(\X{err})` is :math:`-1`. -11. Either: +10. Either: a. If :ref:`growing ` :math:`\X{mem}` by :math:`n` :ref:`pages ` succeeds, then: @@ -3774,7 +3748,7 @@ Memory Instructions i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. -12. Or: +11. Or: a. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. @@ -3792,7 +3766,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) + S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{|\X{at}|}^{-1}(-1)) \end{array} \end{array} @@ -3820,17 +3794,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. 7. Pop the value :math:`\X{at}.\CONST~n` from the stack. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +8. Assert: due to :ref:`validation `, a value is on the top of the stack. 9. Pop the value :math:`\val` from the stack. -10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`address type ` :math:`\X{at}` is on the top of the stack. 11. Pop the value :math:`\X{at}.\CONST~d` from the stack. @@ -3906,33 +3878,27 @@ Memory Instructions 9. Let :math:`\X{mem}_s` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{sa}]`. -10. Let :math:`\X{at}_d~\limits_d` be the :ref:`memory type ` :math:`\X{mem}_d.\MITYPE`. +10. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_n` is on the top of the stack. -11. Let :math:`\X{at}_s~\limits_s` be the :ref:`memory type ` :math:`\X{mem}_s.\MITYPE`. +11. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_s` and :math:`\X{at}_d`. +12. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_s` is on the top of the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. +13. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. -14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_d` is on the top of the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_s` is on the top of the stack. +15. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. -16. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. - -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_d` is on the top of the stack. - -18. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. - -19. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then: a. Trap. -20. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -21. If :math:`d \leq s`, then: +18. If :math:`d \leq s`, then: a. Push the value :math:`\X{at}_d.\CONST~d` to the stack. @@ -3950,7 +3916,7 @@ Memory Instructions h. Push the value :math:`\X{at}_s.\CONST~(s+1)` to the stack. -22. Else: +19. Else: a. Assert: due to the earlier check against the memory size, :math:`d+n-1 < 2^{32}`. @@ -3968,9 +3934,9 @@ Memory Instructions h. Push the value :math:`\X{at}_s.\CONST~s` to the stack. -23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. +20. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. -24. Execute the instruction :math:`\MEMORYCOPY~x~y`. +21. Execute the instruction :math:`\MEMORYCOPY~x~y`. .. math:: ~\\[-1ex] @@ -4029,55 +3995,53 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists. +6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists. -8. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`. +7. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`. -9. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists. +8. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists. -10. Let :math:`\X{data}` be the :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`. +9. Let :math:`\X{data}` be the :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -12. Pop the value :math:`\I32.\CONST~n` from the stack. +11. Pop the value :math:`\I32.\CONST~n` from the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -14. Pop the value :math:`\I32.\CONST~s` from the stack. +13. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{at}.\CONST~d` from the stack. +15. Pop the value :math:`\X{at}.\CONST~d` from the stack. -17. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -18. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -19. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`. +18. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`. -20. Push the value :math:`\X{at}.\CONST~d` to the stack. +19. Push the value :math:`\X{at}.\CONST~d` to the stack. -21. Push the value :math:`\I32.\CONST~b` to the stack. +20. Push the value :math:`\I32.\CONST~b` to the stack. -22. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`. +21. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`. -23. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. +22. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. +23. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. -25. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. +24. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. -26. Push the value :math:`\I32.\CONST~(s+1)` to the stack. +25. Push the value :math:`\I32.\CONST~(s+1)` to the stack. -27. Push the value :math:`\I32.\CONST~(n-1)` to the stack. +26. Push the value :math:`\I32.\CONST~(n-1)` to the stack. -28. Execute the instruction :math:`\MEMORYINIT~x~y`. +27. Execute the instruction :math:`\MEMORYINIT~x~y`. .. math:: ~\\[-1ex] diff --git a/document/core/syntax/types.rst b/document/core/syntax/types.rst index 5e17179f2..2da8a265f 100644 --- a/document/core/syntax/types.rst +++ b/document/core/syntax/types.rst @@ -366,7 +366,7 @@ The syntax of sub types is :ref:`generalized ` for the purp Address Type ~~~~~~~~~~~~ -*Address types* classify the values that can be used to index into +*Address types* are a subset of :ref:`number types ` that classify the values that can be used as offsets into :ref:`memories ` and :ref:`tables `. .. math:: @@ -380,13 +380,12 @@ Address Type Conventions ........... -The *minimum* of two address types is defined as |I32| if either of the types are -|I32|, and |I64| otherwise. +The *minimum* of two address types is defined as the address type whose :ref:`bit width ` is the minimum of the two. .. math:: \begin{array}{llll} - \atmin(\I64, \I64) &=& \I64 \\ - \atmin(\X{at}_1, \X{at}_2) &=& \I32 & (\otherwise) \\ + \atmin(\X{at}_1, \X{at}_2) &=& \X{at}_1 & (\iff |\X{at}_1| \leq |\X{at}_2|) \\ + \atmin(\X{at}_1, \X{at}_2) &=& \X{at}_2 & (\otherwise) \\ \end{array} @@ -424,7 +423,7 @@ Memory Types .. math:: \begin{array}{llrl} \production{memory type} & \memtype &::=& - ~\addrtype~\limits \\ + \addrtype~\limits \\ \end{array} The limits constrain the minimum and optionally the maximum size of a memory. @@ -445,7 +444,7 @@ Table Types .. math:: \begin{array}{llrl} \production{table type} & \tabletype &::=& - ~\addrtype~\limits ~\reftype \\ + \addrtype~\limits~\reftype \\ \end{array} Like memories, tables are constrained by limits for their minimum and optionally maximum size. diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst index 3178332dd..73bb7182b 100644 --- a/document/core/text/modules.rst +++ b/document/core/text/modules.rst @@ -307,21 +307,12 @@ An :ref:`element segment ` can be given inline with a table definitio .. math:: \begin{array}{llclll} \production{module field} & - \text{(}~\text{table}~~\Tid^?~~\Treftype~~\text{(}~\text{elem}~~\expr^n{:}\Tvec(\Telemexpr)~\text{)}~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{table}~~\Tid'~~n~~n~~\Treftype~\text{)} \\ & \qquad - \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\text{i32.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\Telemexpr)~\text{)} + \text{(}~\text{table}~~\Tid^?~~\Taddrtype^?~~\Treftype~~\text{(}~\text{elem}~~x^n{:}\Tvec(\Tfuncidx)~\text{)}~\text{)} \quad\equiv \\ & \qquad + \text{(}~\text{table}~~\Tid'~~\Taddrtype^?~~n~~n~~\Treftype~\text{)} \\ & \qquad + \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\Taddrtype'\text{.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\text{(}~\text{ref.func}~~\Tfuncidx~\text{)})~\text{)} \\ & \qquad\qquad - (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh) \\ - \end{array} - -.. math:: - \begin{array}{llclll} - \production{module field} & - \text{(}~\text{table}~~\Tid^?~~\Treftype~~\text{(}~\text{elem}~~x^n{:}\Tvec(\Tfuncidx)~\text{)}~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{table}~~\Tid'~~n~~n~~\Treftype~\text{)} \\ & \qquad - \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\text{i32.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\text{(}~\text{ref.func}~~\Tfuncidx~\text{)})~\text{)} - \\ & \qquad\qquad - (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh) \\ + (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad + \iff \Taddrtype? \neq \epsilon \wedge \Taddrtype' = \Taddrtype^? \vee \Taddrtype^? = \epsilon \wedge \Taddrtype' = \text{i32}) \\ \end{array} Tables can be defined as :ref:`imports ` or :ref:`exports ` inline: @@ -378,13 +369,13 @@ A :ref:`data segment ` can be given inline with a memory definition, .. math:: \begin{array}{llclll} \production{module field} & - \text{(}~\text{memory}~~\Tid^?~~\X{at}^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{memory}~~\Tid'~~\X{at}^?~~m~~m~\text{)} \\ & \qquad - \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\X{at}'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} + \text{(}~\text{memory}~~\Tid^?~~\Taddrtype^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad + \text{(}~\text{memory}~~\Tid'~~\Taddrtype^?~~m~~m~\text{)} \\ & \qquad + \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\Taddrtype'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} \\ & \qquad\qquad (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad - \iff \X{at}^? \neq \epsilon \wedge \X{at}' = \X{at}^? \vee \X{at}^? = \epsilon \wedge \X{at}' = \text{i32}, \\ & \qquad\qquad - m = \F{ceil}(n / 64\,\F{Ki})), \\ + \iff \Taddrtype? \neq \epsilon \wedge \Taddrtype' = \Taddrtype^? \vee \Taddrtype^? = \epsilon \wedge \Taddrtype' = \text{i32}, \\ & \qquad\qquad + m = \F{ceil}(n / 64\,\F{Ki})) \\ \end{array} Memories can be defined as :ref:`imports ` or :ref:`exports ` inline: diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 01e09d93c..602540d97 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1496,11 +1496,11 @@ Table Instructions * Let :math:`\X{at}_2~\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`. -* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_1` and :math:`\X{at}_2` - * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`. -* Then the instruction is valid with type :math:`[\X{at}_1~\X{at}_2~\atmin(\X{at}_1, \X{at}_2)] \to []`. +* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_1` and :math:`\X{at}_2` + +* Then the instruction is valid with type :math:`[\X{at}_1~\X{at}_2~\X{at}] \to []`. .. math:: \frac{ @@ -1890,7 +1890,7 @@ Memory Instructions * Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y` -* Then the instruction is valid with type :math:`[\X{at}_x~\X{at}_y~\atmin(\X{at}_x, \X{at}_y)] \to []`. +* Then the instruction is valid with type :math:`[\X{at}_x~\X{at}_y~\X{at}] \to []`. .. math:: \frac{ diff --git a/document/core/valid/matching.rst b/document/core/valid/matching.rst index 75ff8c08e..12457adf8 100644 --- a/document/core/valid/matching.rst +++ b/document/core/valid/matching.rst @@ -513,15 +513,13 @@ A :ref:`table type ` :math:`(\addrtype_1~\limits_1~\reftype_1) .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 - \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 \qquad C \vdashreftypematch \reftype_1 \matchesreftype \reftype_2 \qquad C \vdashreftypematch \reftype_2 \matchesreftype \reftype_1 }{ - C \vdashtabletypematch \addrtype_1~\limits_1~\reftype_1 \matchestabletype \addrtype_2~\limits_2~\reftype_2 + C \vdashtabletypematch \addrtype~\limits_1~\reftype_1 \matchestabletype \addrtype~\limits_2~\reftype_2 } @@ -541,11 +539,9 @@ A :ref:`memory type ` :math:`(\addrtype_1~\limits_1)` matches :m .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 - \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 }{ - C \vdashmemtypematch \limits_1 \matchesmemtype \limits_2 + C \vdashmemtypematch \addrtype~\limits_1 \matchesmemtype \addrtype~\limits_2 } diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 1db0dce4f..53c7294c8 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -281,19 +281,19 @@ let limits uN s = let flags = byte s in require (flags land 0xfa = 0) s (pos s - 1) "malformed limits flags"; let has_max = (flags land 1 = 1) in - let is64 = (flags land 4 = 4) in + let at = if flags land 4 = 4 then I64AT else I32AT in let min = uN s in let max = opt uN has_max s in - {min; max}, is64 + at, {min; max} let table_type s = let t = ref_type s in - let lim, is64 = limits u64 s in - TableT (lim, (if is64 then I64AddrType else I32AddrType), t) + let at, lim = limits u64 s in + TableT (at, lim, t) let memory_type s = - let lim, is64 = limits u64 s in - MemoryT (lim, if is64 then I64AddrType else I32AddrType) + let at, lim = limits u64 s in + MemoryT (at, lim) let global_type s = let t = val_type s in diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 3e7003a89..eb1e729b0 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -194,15 +194,15 @@ struct | RecT [st] -> sub_type st | RecT sts -> s7 (-0x32); vec sub_type sts - let limits vu {min; max} at = - let flags = flag (max <> None) 0 + flag (at = I64AddrType) 2 in - byte flags; vu min; opt vu max + let limits at {min; max} = + let flags = flag (max <> None) 0 + flag (at = I64AT) 2 in + byte flags; u64 min; opt u64 max let table_type = function - | TableT (lim, at, t) -> ref_type t; limits u64 lim at + | TableT (at, lim, t) -> ref_type t; limits at lim let memory_type = function - | MemoryT (lim, at) -> limits u64 lim at + | MemoryT (at, lim) -> limits at lim let global_type = function | GlobalT (mut, t) -> val_type t; mutability mut diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index c5631d1ba..8af47528d 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -157,48 +157,27 @@ let split n (vs : 'a stack) at = take n vs at, drop n vs at * c : config *) -let inc_address i loc = - match i with - | I32 x -> (I32 (I32.add x 1l) @@ loc) - | I64 x -> (I64 (I64.add x 1L) @@ loc) - | _ -> Crash.error loc ("bad address type") - -let index_of_num x = - match x with - | I64 i -> i - | I32 i -> I64_convert.extend_i32_u i - | _ -> raise Type - let mem_oob frame x i n = let mem = (memory frame.inst x) in - let start = Memory.address_of_num i in - I64.gt_u (I64.add start (Memory.address_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Memory.bound mem) let data_oob frame x i n = - I64.gt_u (I64.add (Memory.address_of_num i) (Memory.address_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Data.size (data frame.inst x)) let table_oob frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Table.size (table frame.inst x)) let elem_oob frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n)) - (Elem.size (elem frame.inst x)) - -let elem_oob2 frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (I64_convert.extend_i32_u n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Elem.size (elem frame.inst x)) let array_oob a i n = I64.gt_u (I64.add (I64_convert.extend_i32_u i) (I64_convert.extend_i32_u n)) (I64_convert.extend_i32_u (Aggr.array_length a)) -let array_oob2 a i n = - I64.gt_u (I64.add (I64_convert.extend_i32_u i) (index_of_num n)) - (I64_convert.extend_i32_u (Aggr.array_length a)) - let rec step (c : config) : config = let vs, es = c.code in let e = List.hd es in @@ -284,9 +263,9 @@ let rec step (c : config) : config = | CallRef _x, Ref (FuncRef f) :: vs -> vs, [Invoke f @@ e.at] - | CallIndirect (x, y), Num n :: vs -> - let i = Table.index_of_num n in - let f = func_ref c.frame.inst x i e.at in + | CallIndirect (x, y), Num i :: vs -> + let i_64 = addr_of_num i in + let f = func_ref c.frame.inst x i_64 e.at in if Match.match_def_type [] (Func.type_of f) (type_ c.frame.inst y) then vs, [Invoke f @@ e.at] else @@ -373,96 +352,96 @@ let rec step (c : config) : config = with Global.NotMutable -> Crash.error e.at "write to immutable global" | Global.Type -> Crash.error e.at "type mismatch at global write") - | TableGet x, Num n :: vs' -> - let i = Table.index_of_num n in - (try Ref (Table.load (table c.frame.inst x) i) :: vs', [] + | TableGet x, Num i :: vs' -> + let i_64 = addr_of_num i in + (try Ref (Table.load (table c.frame.inst x) i_64) :: vs', [] with exn -> vs', [Trapping (table_error e.at exn) @@ e.at]) - | TableSet x, Ref r :: Num n :: vs' -> - let i = Table.index_of_num n in - (try Table.store (table c.frame.inst x) i r; vs', [] + | TableSet x, Ref r :: Num i :: vs' -> + let i_64 = addr_of_num i in + (try Table.store (table c.frame.inst x) i_64 r; vs', [] with exn -> vs', [Trapping (table_error e.at exn) @@ e.at]) | TableSize x, vs -> let tab = table c.frame.inst x in - value_of_addr (Table.addr_type_of tab) (Table.size (table c.frame.inst x)) :: vs, [] + Num (num_of_addr (Table.addr_type_of tab) (Table.size tab)) :: vs, [] - | TableGrow x, Num delta :: Ref r :: vs' -> + | TableGrow x, Num n :: Ref r :: vs' -> + let n_64 = addr_of_num n in let tab = table c.frame.inst x in let old_size = Table.size tab in let result = - try Table.grow tab (Table.index_of_num delta) r; old_size + try Table.grow tab n_64 r; old_size with Table.SizeOverflow | Table.SizeLimit | Table.OutOfMemory -> -1L - in (value_of_addr (Table.addr_type_of tab) result) :: vs', [] + in Num (num_of_addr (Table.addr_type_of tab) result) :: vs', [] | TableFill x, Num n :: Ref r :: Num i :: vs' -> - let n_64 = Table.index_of_num n in + let n_64 = addr_of_num n in + let i_64 = addr_of_num i in if table_oob c.frame x i n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else - let i_64 = Table.index_of_num i in let _ = assert (I64.lt_u i_64 0xffff_ffff_ffff_ffffL) in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 i_64 @@ e.at)); + Plain (Const (i @@ e.at)); Refer r; Plain (TableSet x); - Plain (Const (I64 (I64.add i_64 1L) @@ e.at)); + Plain (Const (addr_add i 1L @@ e.at)); Refer r; - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableFill x); ] | TableCopy (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Table.index_of_num n in - let s_64 = Table.index_of_num s in - let d_64 = Table.index_of_num d in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in + let d_64 = addr_of_num d in if table_oob c.frame x d n || table_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else if I64.le_u d_64 s_64 then vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); Plain (TableGet y); Plain (TableSet x); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableCopy (x, y)); ] else (* d > s *) let n' = I64.sub n_64 1L in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 (I64.add d_64 n') @@ e.at)); - Plain (Const (I64 (I64.add s_64 n') @@ e.at)); + Plain (Const (addr_add d n' @@ e.at)); + Plain (Const (addr_add s n' @@ e.at)); Plain (TableGet y); Plain (TableSet x); - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); - Plain (Const (I64 n' @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableCopy (x, y)); ] | TableInit (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Table.index_of_num n in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if table_oob c.frame x d n || elem_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else - let d_64 = Table.index_of_num d in - let s_64 = Table.index_of_num s in let seg = elem c.frame.inst y in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); + Plain (Const (d @@ e.at)); Refer (Elem.load seg s_64); Plain (TableSet x); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableInit (x, y)); ] @@ -472,98 +451,99 @@ let rec step (c : config) : config = vs, [] | Load (x, {offset; ty; pack; _}), Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = Memory.address_of_num i in (try let n = match pack with - | None -> Memory.load_num mem a offset ty - | Some (sz, ext) -> Memory.load_num_packed sz ext mem a offset ty + | None -> Memory.load_num mem i_64 offset ty + | Some (sz, ext) -> Memory.load_num_packed sz ext mem i_64 offset ty in Num n :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) | Store (x, {offset; pack; _}), Num n :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = Memory.address_of_num i in (try (match pack with - | None -> Memory.store_num mem a offset n - | Some sz -> Memory.store_num_packed sz mem a offset n + | None -> Memory.store_num mem i_64 offset n + | Some sz -> Memory.store_num_packed sz mem i_64 offset n ); vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]); - | VecLoad (x, {offset; ty; pack; _}), Num (I32 i) :: vs' -> + | VecLoad (x, {offset; ty; pack; _}), Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = I64_convert.extend_i32_u i in (try let v = match pack with - | None -> Memory.load_vec mem a offset ty - | Some (sz, ext) -> Memory.load_vec_packed sz ext mem a offset ty + | None -> Memory.load_vec mem i_64 offset ty + | Some (sz, ext) -> Memory.load_vec_packed sz ext mem i_64 offset ty in Vec v :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) - | VecStore (x, {offset; _}), Vec v :: Num (I32 i) :: vs' -> + | VecStore (x, {offset; _}), Vec v :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try - Memory.store_vec mem addr offset v; + Memory.store_vec mem i_64 offset v; vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]); - | VecLoadLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num (I32 i) :: vs' -> + | VecLoadLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try let v = match pack with | Pack8 -> V128.I8x16.replace_lane j v - (I32Num.of_num 0 (Memory.load_num_packed Pack8 SX mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num_packed Pack8 SX mem i_64 offset I32T)) | Pack16 -> V128.I16x8.replace_lane j v - (I32Num.of_num 0 (Memory.load_num_packed Pack16 SX mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num_packed Pack16 SX mem i_64 offset I32T)) | Pack32 -> V128.I32x4.replace_lane j v - (I32Num.of_num 0 (Memory.load_num mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num mem i_64 offset I32T)) | Pack64 -> V128.I64x2.replace_lane j v - (I64Num.of_num 0 (Memory.load_num mem addr offset I64T)) + (I64Num.of_num 0 (Memory.load_num mem i_64 offset I64T)) in Vec (V128 v) :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) - | VecStoreLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num (I32 i) :: vs' -> + | VecStoreLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try (match pack with | Pack8 -> - Memory.store_num_packed Pack8 mem addr offset (I32 (V128.I8x16.extract_lane_s j v)) + Memory.store_num_packed Pack8 mem i_64 offset (I32 (V128.I8x16.extract_lane_s j v)) | Pack16 -> - Memory.store_num_packed Pack16 mem addr offset (I32 (V128.I16x8.extract_lane_s j v)) + Memory.store_num_packed Pack16 mem i_64 offset (I32 (V128.I16x8.extract_lane_s j v)) | Pack32 -> - Memory.store_num mem addr offset (I32 (V128.I32x4.extract_lane_s j v)) + Memory.store_num mem i_64 offset (I32 (V128.I32x4.extract_lane_s j v)) | Pack64 -> - Memory.store_num mem addr offset (I64 (V128.I64x2.extract_lane_s j v)) + Memory.store_num mem i_64 offset (I64 (V128.I64x2.extract_lane_s j v)) ); vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) | MemorySize x, vs -> let mem = memory c.frame.inst x in - value_of_addr (Memory.addr_type_of mem) (Memory.size mem) :: vs, [] + Num (num_of_addr (Memory.addr_type_of mem) (Memory.size mem)) :: vs, [] - | MemoryGrow x, Num delta :: vs' -> + | MemoryGrow x, Num n :: vs' -> + let n_64 = addr_of_num n in let mem = memory c.frame.inst x in let old_size = Memory.size mem in let result = - try Memory.grow mem (Memory.address_of_num delta); old_size + try Memory.grow mem n_64; old_size with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1L - in (value_of_addr (Memory.addr_type_of mem) result) :: vs', [] + in Num (num_of_addr (Memory.addr_type_of mem) result) :: vs', [] | MemoryFill x, Num n :: Num k :: Num i :: vs' -> - let n_64 = Memory.address_of_num n in + let n_64 = addr_of_num n in if mem_oob c.frame x i n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then @@ -574,67 +554,66 @@ let rec step (c : config) : config = Plain (Const (k @@ e.at)); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (inc_address i e.at)); + Plain (Const (addr_add i 1L @@ e.at)); Plain (Const (k @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryFill x); ] | MemoryCopy (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Memory.address_of_num n in - let s_64 = Memory.address_of_num s in - let d_64 = Memory.address_of_num d in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in + let d_64 = addr_of_num d in if mem_oob c.frame x d n || mem_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else if I64.le_u d_64 s_64 then vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); Plain (Load (y, {ty = I32T; align = 0; offset = 0L; pack = Some (Pack8, ZX)})); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryCopy (x, y)); ] else (* d > s *) let n' = I64.sub n_64 1L in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 (I64.add d_64 n') @@ e.at)); - Plain (Const (I64 (I64.add s_64 n') @@ e.at)); + Plain (Const (addr_add d n' @@ e.at)); + Plain (Const (addr_add s n' @@ e.at)); Plain (Load (y, {ty = I32T; align = 0; offset = 0L; pack = Some (Pack8, ZX)})); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); - Plain (Const (I64 n' @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryCopy (x, y)); ] | MemoryInit (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Memory.address_of_num n in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if mem_oob c.frame x d n || data_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else let seg = data c.frame.inst y in - let s_64 = Memory.address_of_num s in - let d_64 = Memory.address_of_num d in let b = Data.load_byte seg s_64 in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 (I64.of_int_u (Char.code b)) @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (I32 (I32.of_int_u (Char.code b)) @@ e.at)); Plain (Store (x, {ty = I64T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryInit (x, y)); ] @@ -748,12 +727,14 @@ let rec step (c : config) : config = in Ref (Aggr.ArrayRef array) :: vs'', [] | ArrayNewElem (x, y), Num n :: Num s :: vs' -> + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if elem_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else let seg = elem c.frame.inst y in - let s_64 = Table.index_of_num s in - let rs = Lib.List64.init (Table.index_of_num n) (fun i -> Elem.load seg (Int64.add s_64 i)) in + let rs = Lib.List64.init n_64 + (fun i -> Elem.load seg (Int64.add s_64 i)) in let args = List.map (fun r -> Ref r) rs in let array = try Aggr.alloc_array (type_ c.frame.inst x) args @@ -761,14 +742,16 @@ let rec step (c : config) : config = in Ref (Aggr.ArrayRef array) :: vs', [] | ArrayNewData (x, y), Num n :: Num s :: vs' -> + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if data_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else let ArrayT (FieldT (_mut, st)) = array_type c.frame.inst x in let seg = data c.frame.inst y in - let args = Lib.List64.init (Memory.address_of_num n) + let args = Lib.List64.init n_64 (fun i -> - let a = I64.(add (Memory.address_of_num s) (mul i (I64.of_int_u (storage_size st)))) in + let a = I64.(add s_64 (mul i (I64.of_int_u (storage_size st)))) in Data.load_val_storage seg a st ) in @@ -884,18 +867,17 @@ let rec step (c : config) : config = vs', [Trapping "null array reference" @@ e.at] | ArrayInitData (x, y), - Num n :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> - let n_64 = Memory.address_of_num n in - if array_oob2 a d n then + Num (I32 n) :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> + let s_64 = addr_of_num s in + if array_oob a d n then vs', [Trapping "out of bounds array access" @@ e.at] - else if data_oob c.frame y s n then + else if data_oob c.frame y s (I64 (I64_convert.extend_i32_u n)) then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] - else if n_64 = 0L then + else if n = 0l then vs', [] else let ArrayT (FieldT (_mut, st)) = array_type c.frame.inst x in let seg = data c.frame.inst y in - let s_64 = Memory.address_of_num s in let v = Data.load_val_storage seg s_64 st in vs', List.map (Lib.Fun.flip (@@) e.at) [ Refer (Aggr.ArrayRef a); @@ -904,8 +886,8 @@ let rec step (c : config) : config = Plain (ArraySet x); Refer (Aggr.ArrayRef a); Plain (Const (I32 (I32.add d 1l) @@ e.at)); - Plain (Const (I64 (I64.add s_64 (I64.of_int_u (storage_size st))) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add s (I64.of_int_u (storage_size st)) @@ e.at)); + Plain (Const (I32 (I32.sub n 1l) @@ e.at)); Plain (ArrayInitData (x, y)); ] @@ -915,15 +897,15 @@ let rec step (c : config) : config = | ArrayInitElem (x, y), Num (I32 n) :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> + let s_64 = addr_of_num s in if array_oob a d n then vs', [Trapping "out of bounds array access" @@ e.at] - else if elem_oob2 c.frame y s n then + else if elem_oob c.frame y s (I64 (I64_convert.extend_i32_u n)) then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n = 0l then vs', [] else let seg = elem c.frame.inst y in - let s_64 = Table.index_of_num s in let v = Ref (Elem.load seg s_64) in vs', List.map (Lib.Fun.flip (@@) e.at) [ Refer (Aggr.ArrayRef a); @@ -932,7 +914,7 @@ let rec step (c : config) : config = Plain (ArraySet x); Refer (Aggr.ArrayRef a); Plain (Const (I32 (I32.add d 1l) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); Plain (Const (I32 (I32.sub n 1l) @@ e.at)); Plain (ArrayInitElem (x, y)); ] diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml index aaf8f0665..8d6c039bf 100644 --- a/interpreter/host/spectest.ml +++ b/interpreter/host/spectest.ml @@ -20,15 +20,15 @@ let global (GlobalT (_, t) as gt) = in ExternGlobal (Global.alloc gt v) let table = - let tt = TableT ({min = 10L; max = Some 20L}, I32AddrType, (Null, FuncHT)) in + let tt = TableT (I32AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let table64 = - let tt = TableT ({min = 10L; max = Some 20L}, I64AddrType, (Null, FuncHT)) in + let tt = TableT (I64AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let memory = - let mt = MemoryT ({min = 1L; max = Some 2L}, I32AddrType) in + let mt = MemoryT (I32AT, {min = 1L; max = Some 2L}) in ExternMemory (Memory.alloc mt) let func f ft = diff --git a/interpreter/runtime/data.ml b/interpreter/runtime/data.ml index 785dcc608..66c2ad58d 100644 --- a/interpreter/runtime/data.ml +++ b/interpreter/runtime/data.ml @@ -1,6 +1,5 @@ type data = string ref type t = data -type address = Memory.address exception Bounds diff --git a/interpreter/runtime/data.mli b/interpreter/runtime/data.mli index f0074e366..86741d5c0 100644 --- a/interpreter/runtime/data.mli +++ b/interpreter/runtime/data.mli @@ -1,6 +1,7 @@ +open Value + type data type t = data -type address = Memory.address exception Bounds diff --git a/interpreter/runtime/elem.mli b/interpreter/runtime/elem.mli index b9b35a11d..d61442907 100644 --- a/interpreter/runtime/elem.mli +++ b/interpreter/runtime/elem.mli @@ -7,5 +7,5 @@ exception Bounds val alloc : ref_ list -> elem val size : elem -> Table.size -val load : elem -> Table.index -> ref_ (* raises Bounds *) +val load : elem -> address -> ref_ (* raises Bounds *) val drop : elem -> unit diff --git a/interpreter/runtime/memory.ml b/interpreter/runtime/memory.ml index 113a9cd25..3c3742d94 100644 --- a/interpreter/runtime/memory.ml +++ b/interpreter/runtime/memory.ml @@ -4,8 +4,7 @@ open Bigarray open Lib.Bigarray type size = int64 (* number of pages *) -type address = int64 -type offset = int64 +type offset = address type count = int32 type memory' = (int, int8_unsigned_elt, c_layout) Array1.t @@ -25,8 +24,12 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let create n at = - if I64.gt_u n 0x10000L && at = I32AddrType then raise SizeOverflow else +let valid_size at i = + match at with + | I32AT -> I64.le_u i 0xffffL + | I64AT -> true + +let create n = try let size = Int64.(mul n page_size) in let mem = Array1_64.create Int8_unsigned C_layout size in @@ -34,10 +37,11 @@ let create n at = mem with Out_of_memory -> raise OutOfMemory -let alloc (MemoryT (lim, at) as ty) = +let alloc (MemoryT (at, lim) as ty) = assert Free.((memory_type ty).types = Set.empty); + if not (valid_size at lim.min) then raise SizeOverflow; if not (valid_limits lim) then raise Type; - {ty; content = create lim.min at} + {ty; content = create lim.min} let bound mem = Array1_64.dim mem.content @@ -49,31 +53,21 @@ let type_of mem = mem.ty let addr_type_of mem = - let (MemoryT (_, at)) = type_of mem in at - -let address_of_num x = - match x with - | I32 i -> I64_convert.extend_i32_u i - | I64 i -> i - | _ -> raise Type - -let address_of_value x = - match x with - | Num n -> address_of_num n - | _ -> raise Type + let MemoryT (at, _) = type_of mem in at let grow mem delta = - let MemoryT (lim, at) = mem.ty in + let MemoryT (at, lim) = mem.ty in assert (lim.min = size mem); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in + if not (valid_size at new_size) then raise SizeOverflow else if not (valid_limits lim') then raise SizeLimit else - let after = create new_size (addr_type_of mem) in + let after = create new_size in let dim = Array1_64.dim mem.content in Array1.blit (Array1_64.sub mem.content 0L dim) (Array1_64.sub after 0L dim); - mem.ty <- MemoryT (lim', at); + mem.ty <- MemoryT (at, lim'); mem.content <- after let load_byte mem a = diff --git a/interpreter/runtime/memory.mli b/interpreter/runtime/memory.mli index da9f468f8..9f0edc7cd 100644 --- a/interpreter/runtime/memory.mli +++ b/interpreter/runtime/memory.mli @@ -5,8 +5,7 @@ type memory type t = memory type size = int64 (* number of pages *) -type address = int64 -type offset = int64 +type offset = address type count = int32 exception Type @@ -22,8 +21,6 @@ val type_of : memory -> memory_type val addr_type_of : memory -> addr_type val size : memory -> size val bound : memory -> address -val address_of_value : value -> address -val address_of_num : num -> address val grow : memory -> size -> unit (* raises SizeLimit, SizeOverflow, OutOfMemory *) diff --git a/interpreter/runtime/table.ml b/interpreter/runtime/table.ml index b18dbd5df..d87807f4c 100644 --- a/interpreter/runtime/table.ml +++ b/interpreter/runtime/table.ml @@ -1,9 +1,8 @@ open Types open Value -type size = int64 -type index = int64 -type count = int32 +type size = address +type offset = address type table = {mutable ty : table_type; mutable content : ref_ array} type t = table @@ -19,17 +18,18 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let valid_addr at i = +let valid_size at i = match at with - | I32AddrType -> I64.le_u i 0xffff_ffffL - | I64AddrType -> true + | I32AT -> I64.le_u i 0xffff_ffffL + | I64AT -> true let create size r = try Lib.Array64.make size r with Out_of_memory | Invalid_argument _ -> raise OutOfMemory -let alloc (TableT (lim, at, t) as ty) r = +let alloc (TableT (at, lim, t) as ty) r = assert Free.((ref_type t).types = Set.empty); + if not (valid_size at lim.min) then raise SizeOverflow; if not (valid_limits lim) then raise Type; {ty; content = create lim.min r} @@ -40,26 +40,26 @@ let type_of tab = tab.ty let addr_type_of tab = - let (TableT (_, at, _)) = type_of tab in at + let TableT (at, _, _) = type_of tab in at -let index_of_num x = +let addr_of_num x = match x with | I64 i -> i | I32 i -> I64_convert.extend_i32_u i | _ -> raise Type let grow tab delta r = - let TableT (lim, at, t) = tab.ty in + let TableT (at, lim, t) = tab.ty in assert (lim.min = size tab); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in - if not (valid_addr at new_size) then raise SizeOverflow else + if not (valid_size at new_size) then raise SizeOverflow else if not (valid_limits lim') then raise SizeLimit else let after = create new_size r in Array.blit tab.content 0 after 0 (Array.length tab.content); - tab.ty <- TableT (lim', at, t); + tab.ty <- TableT (at, lim', t); tab.content <- after let load tab i = @@ -67,7 +67,7 @@ let load tab i = Lib.Array64.get tab.content i let store tab i r = - let TableT (_lim, _at, t) = tab.ty in + let TableT (_at, _lim, t) = tab.ty in if not (Match.match_ref_type [] (type_of_ref r) t) then raise Type; if i < 0L || i >= Lib.Array64.length tab.content then raise Bounds; Lib.Array64.set tab.content i r diff --git a/interpreter/runtime/table.mli b/interpreter/runtime/table.mli index 6ebba6068..53caf5965 100644 --- a/interpreter/runtime/table.mli +++ b/interpreter/runtime/table.mli @@ -4,9 +4,8 @@ open Value type table type t = table -type size = int64 -type index = int64 -type count = int32 +type size = address +type offset = address exception Type exception Bounds @@ -18,10 +17,10 @@ val alloc : table_type -> ref_ -> table (* raises Type, OutOfMemory *) val type_of : table -> table_type val addr_type_of : table -> addr_type val size : table -> size -val index_of_num : num -> index +val addr_of_num : num -> address val grow : table -> size -> ref_ -> unit (* raises SizeOverflow, SizeLimit, OutOfMemory *) -val load : table -> index -> ref_ (* raises Bounds *) -val store : table -> index -> ref_ -> unit (* raises Type, Bounds *) -val blit : table -> index -> ref_ list -> unit (* raises Bounds *) +val load : table -> address -> ref_ (* raises Bounds *) +val store : table -> address -> ref_ -> unit (* raises Type, Bounds *) +val blit : table -> address -> ref_ list -> unit (* raises Bounds *) diff --git a/interpreter/runtime/value.ml b/interpreter/runtime/value.ml index 5381b67f1..75c5cd2c9 100644 --- a/interpreter/runtime/value.ml +++ b/interpreter/runtime/value.ml @@ -19,6 +19,8 @@ type t = value type ref_ += NullRef of heap_type +type address = I64.t + (* Injection & projection *) @@ -281,10 +283,22 @@ let storage_bits_of_val st v = let value_of_bool b = Num (I32 (if b then 1l else 0l)) -let value_of_addr at x = +let num_of_addr at i = match at with - | I64AddrType -> Num (I64 x) - | I32AddrType -> Num (I32 (Int64.to_int32 x)) + | I64AT -> I64 i + | I32AT -> I32 (I32_convert.wrap_i64 i) + +let addr_of_num x = + match x with + | I32 i -> I64_convert.extend_i32_u i + | I64 i -> i + | _ -> raise Type + +let addr_add n i = + num_of_addr (addr_type_of_num_type (type_of_num n)) (I64.add (addr_of_num n) i) +let addr_sub n i = + num_of_addr (addr_type_of_num_type (type_of_num n)) (I64.sub (addr_of_num n) i) + let string_of_num = function | I32 i -> I32.to_string_s i diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index efbbd58da..37ab763fe 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -121,8 +121,8 @@ let def_type = function | DefT (rt, _i) -> rec_type rt let global_type (GlobalT (_mut, t)) = val_type t -let table_type (TableT (_lim, _at, t)) = ref_type t -let memory_type (MemoryT (_lim, _at)) = empty +let table_type (TableT (_at, _lim, t)) = ref_type t +let memory_type (MemoryT (_at, _lim)) = empty let tag_type (TagT dt) = def_type dt let extern_type = function diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 2f9879ef8..b6e65a360 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -15,6 +15,10 @@ let v128_const n = VecConst (V128 n.it @@ n.at) let ref_null t = RefNull t let ref_func x = RefFunc x +let at_const = function + | I32AT -> fun n -> i32_const (I32_convert.wrap_i64 n.it @@ n.at) + | I64AT -> i64_const + let unreachable = Unreachable let nop = Nop let drop = Drop diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml index fb5246445..f6a7fe245 100644 --- a/interpreter/syntax/types.ml +++ b/interpreter/syntax/types.ml @@ -12,6 +12,7 @@ type 'a limits = {min : 'a; max : 'a option} type var = StatX of type_idx | RecX of int32 +type addr_type = I32AT | I64AT type num_type = I32T | I64T | F32T | F64T type vec_type = V128T type heap_type = @@ -25,7 +26,6 @@ type heap_type = and ref_type = null * heap_type and val_type = NumT of num_type | VecT of vec_type | RefT of ref_type | BotT -and addr_type = I32AddrType | I64AddrType and result_type = val_type list and instr_type = InstrT of result_type * result_type * local_idx list @@ -45,8 +45,8 @@ and sub_type = SubT of final * heap_type list * str_type and rec_type = RecT of sub_type list and def_type = DefT of rec_type * int32 -type table_type = TableT of Int64.t limits * addr_type * ref_type -type memory_type = MemoryT of Int64.t limits * addr_type +type table_type = TableT of addr_type * Int64.t limits * ref_type +type memory_type = MemoryT of addr_type * Int64.t limits type global_type = GlobalT of mut * val_type type tag_type = TagT of def_type type local_type = LocalT of init * val_type @@ -111,7 +111,17 @@ let defaultable = function | BotT -> assert false -(* Projections *) +(* Conversions & Projections *) + +let num_type_of_addr_type = function + | I32AT -> I32T + | I64AT -> I64T + +let addr_type_of_num_type = function + | I32T -> I32AT + | I64T -> I64AT + | _ -> assert false + let unpacked_storage_type = function | ValStorageT t -> t @@ -147,11 +157,6 @@ let memories = List.filter_map (function ExternMemoryT mt -> Some mt | _ -> None let globals = List.filter_map (function ExternGlobalT gt -> Some gt | _ -> None) let tags = List.filter_map (function ExternTagT tt -> Some tt | _ -> None) -let num_type_of_addr_type = function - | I32AddrType -> I32T - | I64AddrType -> I64T - -let value_type_of_addr_type t = NumT (num_type_of_addr_type t) (* Substitution *) @@ -161,6 +166,8 @@ let subst_of dts = function | StatX x -> DefHT (Lib.List32.nth dts x) | RecX i -> VarHT (RecX i) +let subst_addr_type s t = t + let subst_num_type s t = t let subst_vec_type s t = t @@ -228,10 +235,10 @@ let subst_def_type s = function let subst_memory_type s = function - | MemoryT (lim, at) -> MemoryT (lim, at) + | MemoryT (at, lim) -> MemoryT (subst_addr_type s at, lim) let subst_table_type s = function - | TableT (lim, at, t) -> TableT (lim, at, subst_ref_type s t) + | TableT (at, lim, t) -> TableT (subst_addr_type s at, lim, subst_ref_type s t) let subst_global_type s = function | GlobalT (mut, t) -> GlobalT (mut, subst_val_type s t) @@ -294,6 +301,7 @@ let expand_def_type (dt : def_type) : str_type = let SubT (_, _, st) = unroll_def_type dt in st + (* String conversion *) let string_of_idx x = @@ -336,6 +344,9 @@ let string_of_num_type = function | F32T -> "f32" | F64T -> "f64" +let string_of_addr_type at = + string_of_num_type (num_type_of_addr_type at) + let string_of_vec_type = function | V128T -> "v128" @@ -365,9 +376,6 @@ and string_of_val_type = function | RefT t -> string_of_ref_type t | BotT -> "bot" -and string_of_addr_type t = - string_of_val_type (value_type_of_addr_type t) - and string_of_result_type = function | ts -> "[" ^ String.concat " " (List.map string_of_val_type ts) ^ "]" @@ -418,10 +426,10 @@ let string_of_limits = function (match max with None -> "" | Some n -> " " ^ I64.to_string_u n) let string_of_memory_type = function - | MemoryT (lim, at) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim + | MemoryT (at, lim) -> string_of_addr_type at ^ " " ^ string_of_limits lim let string_of_table_type = function - | TableT (lim, at, t) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t + | TableT (at, lim, t) -> string_of_addr_type at ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t let string_of_global_type = function | GlobalT (mut, t) -> string_of_mut (string_of_val_type t) mut diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 6f7eccdaa..76c987f94 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -64,6 +64,7 @@ let mutability node = function | Cons -> node | Var -> Node ("mut", [node]) +let addr_type t = string_of_addr_type t let num_type t = string_of_num_type t let vec_type t = string_of_vec_type t let ref_type t = @@ -77,7 +78,6 @@ let ref_type t = | (Null, ExnHT) -> "exnref" | t -> string_of_ref_type t -let addr_type t = string_of_val_type (value_type_of_addr_type t) let heap_type t = string_of_heap_type t let val_type t = string_of_val_type t let storage_type t = string_of_storage_type t @@ -657,13 +657,13 @@ let tag off i tag = ) let table off i tab = - let {ttype = TableT (lim, at, t); tinit} = tab.it in + let {ttype = TableT (at, lim, t); tinit} = tab.it in Node ("table $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, atom ref_type t :: list instr tinit.it ) let memory off i mem = - let {mtype = MemoryT (lim, at)} = mem.it in + let {mtype = MemoryT (at, lim)} = mem.it in Node ("memory $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, []) let is_elem_kind = function diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index df2ec4057..1fbeeeccc 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -264,39 +264,6 @@ let inline_func_type_explicit (c : context) x ft loc = error (at loc) "inline function type does not match explicit type"; x -let addr_type_of_num_type t loc = - match t with - | I32T -> I32AddrType - | I64T -> I64AddrType - | _ -> error (at loc) "illegal address type" - -let addr_type_of_value_type t loc = - match t with - | NumT t -> addr_type_of_num_type t loc - | _ -> error (at loc) "illegal address type" - -let memory_data init at c x loc = - let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in - let instr = match at with - | I32AddrType -> i32_const (0l @@ loc) - | I64AddrType -> i64_const (0L @@ loc) in - let offset = [instr @@ loc] @@ loc in - [{mtype = MemoryT ({min = size; max = Some size}, at)} @@ loc], - [{dinit = init; dmode = Active {index = x; offset} @@ loc} @@ loc], - [], [] - -let table_data tinit init at etype c x loc = - let instr = match at with - | I32AddrType -> i32_const (0l @@ loc) - | I64AddrType -> i64_const (0L @@ loc) in - let offset = [instr @@ loc] @@ loc in - let einit = init c in - let size = Lib.List32.length einit in - let size64 = Int64.of_int32 size in - let emode = Active {index = x; offset} @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, at, etype); tinit} @@ loc], - [{etype; einit; emode} @@ loc], - [], [] (* Custom annotations *) @@ -397,6 +364,14 @@ string_list : /* Types */ +%inline addr_type : + | NUM_TYPE + { match $1 with + | I32T -> I32AT + | I64T -> I64AT + | _ -> error (at $sloc) "malformed address type" } + | /* empty */ { I32AT } /* Sugar */ + null_opt : | /* empty */ { NoNull } | NULL { Null } @@ -501,12 +476,10 @@ sub_type : List.map (fun y -> VarHT (StatX y.it)) ($4 c type_), $5 c x) } table_type : - | val_type limits ref_type { fun c -> TableT ($2, addr_type_of_value_type ($1 c) $sloc, $3 c) } - | limits ref_type { fun c -> TableT ($1, I32AddrType, $2 c) } + | addr_type limits ref_type { fun c -> TableT ($1, $2, $3 c) } memory_type : - | val_type limits { fun c -> MemoryT ($2, addr_type_of_value_type ($1 c) $sloc) } - | limits { fun c -> MemoryT ($1, I32AddrType) } + | addr_type limits { fun c -> MemoryT ($1, $2) } limits : | NAT { {min = nat64 $1 $loc($1); max = None} } @@ -1156,28 +1129,28 @@ table_fields : | inline_export table_fields /* Sugar */ { fun c x loc -> let tabs, elems, ims, exs = $2 c x loc in tabs, elems, ims, $1 (TableExport x) c :: exs } - | ref_type LPAR ELEM elem_expr elem_expr_list RPAR /* Sugar */ + | addr_type ref_type LPAR ELEM elem_expr elem_expr_list RPAR /* Sugar */ { fun c x loc -> - let offset = [i32_const (0l @@ loc) @@ loc] @@ loc in - let einit = $4 c :: $5 c in - let size = Lib.List32.length einit in - let size64 = Int64.of_int32 size in + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + let einit = $5 c :: $6 c in + let size = Lib.List64.length einit in let emode = Active {index = x; offset} @@ loc in - let (_, ht) as etype = $1 c in + let (_, ht) as etype = $2 c in let tinit = [RefNull ht @@ loc] @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, I32AddrType, etype); tinit} @@ loc], + [{ttype = TableT ($1, {min = size; max = Some size}, etype); tinit} @@ loc], [{etype; einit; emode} @@ loc], [], [] } - | ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ - { fun c x loc -> - let (_, ht) as etype = $1 c in - let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $4 I32AddrType etype c x loc } - | val_type ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ + | addr_type ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ { fun c x loc -> let (_, ht) as etype = $2 c in let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $5 (addr_type_of_value_type ($1 c) loc) etype c x loc } + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + let einit = $5 c in + let size = Lib.List64.length einit in + let emode = Active {index = x; offset} @@ loc in + [{ttype = TableT ($1, {min = size; max = Some size}, etype); tinit} @@ loc], + [{etype; einit; emode} @@ loc], + [], [] } data : | LPAR DATA bind_var_opt string_list RPAR @@ -1208,10 +1181,13 @@ memory_fields : | inline_export memory_fields /* Sugar */ { fun c x loc -> let mems, data, ims, exs = $2 c x loc in mems, data, ims, $1 (MemoryExport x) c :: exs } - | LPAR DATA string_list RPAR /* Sugar */ - { memory_data $3 I32AddrType } - | val_type LPAR DATA string_list RPAR /* Sugar */ - { fun c x loc -> memory_data $4 (addr_type_of_value_type ($1 c) $sloc) c x loc } + | addr_type LPAR DATA string_list RPAR /* Sugar */ + { fun c x loc -> + let size = Int64.(div (add (of_int (String.length $4)) 65535L) 65536L) in + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + [{mtype = MemoryT ($1, {min = size; max = Some size})} @@ loc], + [{dinit = $4; dmode = Active {index = x; offset} @@ loc} @@ loc], + [], [] } tag : | LPAR TAG bind_var_opt tag_fields RPAR diff --git a/interpreter/valid/match.ml b/interpreter/valid/match.ml index b2cc26630..7d889b899 100644 --- a/interpreter/valid/match.ml +++ b/interpreter/valid/match.ml @@ -161,11 +161,12 @@ let match_global_type c (GlobalT (mut1, t1)) (GlobalT (mut2, t2)) = | Cons -> true | Var -> match_val_type c t2 t1 -let match_table_type c (TableT (lim1, at1, t1)) (TableT (lim2, at2, t2)) = - match_limits c lim1 lim2 && at1 = at2 && match_ref_type c t1 t2 && match_ref_type c t2 t1 +let match_table_type c (TableT (at1, lim1, t1)) (TableT (at2, lim2, t2)) = + at1 = at2 && match_limits c lim1 lim2 && + match_ref_type c t1 t2 && match_ref_type c t2 t1 -let match_memory_type c (MemoryT (lim1, at1)) (MemoryT (lim2, at2)) = - match_limits c lim1 lim2 && at1 = at2 +let match_memory_type c (MemoryT (at1, lim1)) (MemoryT (at2, lim2)) = + at1 = at2 && match_limits c lim1 lim2 let match_tag_type c (TagT dt1) (TagT dt2) = match_def_type c dt1 dt2 && match_def_type c dt2 dt1 diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 6fc75ace7..ba4e8bb55 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -89,13 +89,13 @@ let refer_func (c : context) x = refer "function" c.refs.Free.funcs x (* Types *) -let check_limits le_u {min; max} range at msg = - require (le_u min range) at msg; +let check_limits {min; max} range at msg = + require (I64.le_u min range) at msg; match max with | None -> () | Some max -> - require (le_u max range) at msg; - require (le_u min max) at + require (I64.le_u max range) at msg; + require (I64.le_u min max) at "size minimum must not be greater than maximum" let check_num_type (c : context) (t : num_type) at = @@ -151,30 +151,29 @@ let check_func_type (c : context) (ft : func_type) at = check_result_type c ts2 at let check_table_type (c : context) (tt : table_type) at = - let TableT (lim, _at, t) = tt in + let TableT (at_, lim, t) = tt in check_ref_type c t at; - match _at with - | I64AddrType -> - check_limits I64.le_u lim 0xffff_ffff_ffff_ffffL at - "table size must be at most 2^64-1" - | I32AddrType -> - check_limits I64.le_u lim 0xffff_ffffL at - "table size must be at most 2^32-1" + let sz, s = + match at_ with + | I32AT -> 0xffff_ffffL, "2^32-1 for i32" + | I64AT -> 0xffff_ffff_ffff_ffffL, "2^64-1 for i64" + in + check_limits lim sz at ("table size must be at most " ^ s) let check_memory_type (c : context) (mt : memory_type) at = - let MemoryT (lim, _at) = mt in - match _at with - | I32AddrType -> - check_limits I64.le_u lim 0x1_0000L at - "memory size must be at most 65536 pages (4GiB)" - | I64AddrType -> - check_limits I64.le_u lim 0x1_0000_0000_0000L at - "memory size must be at most 48 bits of pages" + let MemoryT (at_, lim) = mt in + let sz, s = + match at_ with + | I32AT -> 0x1_0000L, "2^16 pages (4 GiB) for i32" + | I64AT -> 0x1_0000_0000_0000L, "2^48 pages (256 TiB) for i64" + in + check_limits lim sz at ("memory size must be at most " ^ s) let check_global_type (c : context) (gt : global_type) at = let GlobalT (_mut, t) = gt in check_val_type c t at + let check_str_type (c : context) (st : str_type) at = match st with | DefStructT st -> check_struct_type c st at @@ -370,8 +369,8 @@ let check_memop (c : context) (memop : ('t, 's) memop) ty_size get_sz at = in require (1 lsl memop.align >= 1 && 1 lsl memop.align <= size) at "alignment must not be larger than natural"; - let MemoryT (_lim, _at) = memory c (0l @@ at) in - if _at = I32AddrType then + let MemoryT (at_, _lim) = memory c (0l @@ at) in + if at_ = I32AT then require (I64.lt_u memop.offset 0x1_0000_0000L) at "offset out of range"; memop.ty @@ -518,12 +517,12 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) --> ts2, [] | CallIndirect (x, y) -> - let TableT (lim, at, t) = table c x in + let TableT (at, _lim, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_ref_type c.types t (Null, FuncHT)) x.at ("type mismatch: instruction requires table of function type" ^ " but table has element type " ^ string_of_ref_type t); - (ts1 @ [value_type_of_addr_type at]) --> ts2, [] + (ts1 @ [NumT (num_type_of_addr_type at)]) --> ts2, [] | ReturnCall x -> let FuncT (ts1, ts2) = as_func_str_type (expand_def_type (func c x)) in @@ -542,13 +541,13 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) -->... [], [] | ReturnCallIndirect (x, y) -> - let TableT (_lim, at, t) = table c x in + let TableT (at, _lim, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_result_type c.types ts2 c.results) e.at ("type mismatch: current function requires result type " ^ string_of_result_type c.results ^ " but callee returns " ^ string_of_result_type ts2); - (ts1 @ [value_type_of_addr_type at]) -->... [], [] + (ts1 @ [NumT (num_type_of_addr_type at)]) -->... [], [] | Throw x -> let TagT dt = tag c x in @@ -588,102 +587,105 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in [t] --> [], [] | TableGet x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at] --> [RefT rt], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at)] --> [RefT rt], [] | TableSet x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at; RefT rt] --> [], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at); RefT rt] --> [], [] | TableSize x -> - let TableT (_lim, at, _rt) = table c x in - [] --> [value_type_of_addr_type at], [] + let TableT (at, _lim, _rt) = table c x in + [] --> [NumT (num_type_of_addr_type at)], [] | TableGrow x -> - let TableT (_lim, at, rt) = table c x in - [RefT rt; value_type_of_addr_type at] --> [value_type_of_addr_type at], [] + let TableT (at, _lim, rt) = table c x in + [RefT rt; NumT (num_type_of_addr_type at)] --> + [NumT (num_type_of_addr_type at)], [] | TableFill x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at; RefT rt; value_type_of_addr_type at] --> [], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at); RefT rt; + NumT (num_type_of_addr_type at)] --> [], [] | TableCopy (x, y) -> - let TableT (_lim1, at1, t1) = table c x in - let TableT (_lim2, at2, t2) = table c y in - let at_min = min at1 at2 in + let TableT (at1, _lim1, t1) = table c x in + let TableT (at2, _lim2, t2) = table c y in require (match_ref_type c.types t2 t1) x.at ("type mismatch: source element type " ^ string_of_ref_type t1 ^ " does not match destination element type " ^ string_of_ref_type t2); - [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] + [NumT (num_type_of_addr_type at1); NumT (num_type_of_addr_type at2); + NumT (num_type_of_addr_type (min at1 at2))] --> [], [] | TableInit (x, y) -> - let TableT (_lim1, at, t1) = table c x in + let TableT (at, _lim1, t1) = table c x in let t2 = elem c y in require (match_ref_type c.types t2 t1) x.at ("type mismatch: element segment's type " ^ string_of_ref_type t1 ^ " does not match table's element type " ^ string_of_ref_type t2); - [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] + [NumT (num_type_of_addr_type at); NumT I32T; NumT I32T] --> [], [] | ElemDrop x -> ignore (elem c x); [] --> [], [] | Load (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop num_size (Lib.Option.map fst) e.at in - [value_type_of_addr_type at] --> [NumT t], [] + [NumT (num_type_of_addr_type at)] --> [NumT t], [] | Store (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop num_size (fun sz -> sz) e.at in - [value_type_of_addr_type at; NumT t] --> [], [] + [NumT (num_type_of_addr_type at); NumT t] --> [], [] | VecLoad (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (Lib.Option.map fst) e.at in - [value_type_of_addr_type at] --> [VecT t], [] + [NumT (num_type_of_addr_type at)] --> [VecT t], [] | VecStore (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun _ -> None) e.at in - [value_type_of_addr_type at; VecT t] --> [], [] + [NumT (num_type_of_addr_type at); VecT t] --> [], [] | VecLoadLane (x, memop, i) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_addr_type at; VecT t] --> [VecT t], [] + [NumT (num_type_of_addr_type at); VecT t] --> [VecT t], [] | VecStoreLane (x, memop, i) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_addr_type at; VecT t] --> [], [] + [NumT (num_type_of_addr_type at); VecT t] --> [], [] | MemorySize x -> - let MemoryT (_lim, at) = memory c x in - [] --> [value_type_of_addr_type at], [] + let MemoryT (at, _lim) = memory c x in + [] --> [NumT (num_type_of_addr_type at)], [] | MemoryGrow x -> - let MemoryT (_lim, at) = memory c x in - [value_type_of_addr_type at] --> [value_type_of_addr_type at], [] + let MemoryT (at, _lim) = memory c x in + [NumT (num_type_of_addr_type at)] --> [NumT (num_type_of_addr_type at)], [] | MemoryFill x -> - let MemoryT (_lim, at) = memory c x in - [value_type_of_addr_type at; NumT I32T; value_type_of_addr_type at] --> [], [] + let MemoryT (at, _lim) = memory c x in + [NumT (num_type_of_addr_type at); NumT I32T; + NumT (num_type_of_addr_type at)] --> [], [] | MemoryCopy (x, y)-> - let MemoryT (_lib1, at1) = memory c x in - let MemoryT (_lib2, at2) = memory c y in - let at_min = min at1 at2 in - [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] + let MemoryT (at1, _lib1) = memory c x in + let MemoryT (at2, _lib2) = memory c y in + [NumT (num_type_of_addr_type at1); NumT (num_type_of_addr_type at2); + NumT (num_type_of_addr_type (min at1 at2))] --> [], [] | MemoryInit (x, y) -> - let MemoryT (_lib, at) = memory c x in + let MemoryT (at, _lib) = memory c x in let () = data c y in - [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] + [NumT (num_type_of_addr_type at); NumT I32T; NumT I32T] --> [], [] | DataDrop x -> let () = data c x in @@ -1029,7 +1031,7 @@ let check_global (c : context) (glob : global) : context = let check_table (c : context) (tab : table) : context = let {ttype; tinit} = tab.it in - let TableT (_lim, _at, rt) = ttype in + let TableT (_at, _lim, rt) = ttype in check_table_type c ttype tab.at; check_const c tinit (RefT rt); {c with tables = c.tables @ [ttype]} @@ -1048,11 +1050,11 @@ let check_elem_mode (c : context) (t : ref_type) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let TableT (_lim, at, et) = table c index in + let TableT (at, _lim, et) = table c index in require (match_ref_type c.types t et) mode.at ("type mismatch: element segment's type " ^ string_of_ref_type t ^ " does not match table's element type " ^ string_of_ref_type et); - check_const c offset (value_type_of_addr_type at) + check_const c offset (NumT (num_type_of_addr_type at)) | Declarative -> () let check_elem (c : context) (seg : elem_segment) : context = @@ -1066,8 +1068,8 @@ let check_data_mode (c : context) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let MemoryT (_, at) = memory c index in - check_const c offset (value_type_of_addr_type at) + let MemoryT (at, _) = memory c index in + check_const c offset (NumT (num_type_of_addr_type at)) | Declarative -> assert false let check_data (c : context) (seg : data_segment) : context = diff --git a/test/core/memory.wast b/test/core/memory.wast index 1c57a8f35..e01170a8f 100644 --- a/test/core/memory.wast +++ b/test/core/memory.wast @@ -50,40 +50,53 @@ ) (assert_invalid (module (memory 65537)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 2147483648)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 4294967295)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 65537)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 2147483648)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 4294967295)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid - (module quote "(memory 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0x1_0000_0000)) + "memory size" ) (assert_invalid - (module quote "(memory 0x1_0000_0000 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0x1_0000_0000 0x1_0000_0000)) + "memory size" ) (assert_invalid - (module quote "(memory 0 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0 0x1_0000_0000)) + "memory size" +) + +(assert_invalid + (module (memory (import "M" "m") 0x1_0000_0000)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") 0x1_0000_0000 0x1_0000_0000)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") 0 0x1_0000_0000)) + "memory size" ) (module diff --git a/test/core/memory64.wast b/test/core/memory64.wast index 41e1bf034..ba3b24233 100644 --- a/test/core/memory64.wast +++ b/test/core/memory64.wast @@ -48,6 +48,24 @@ "size minimum must not be greater than maximum" ) +(assert_invalid + (module (memory i64 0x1_0000_0000_0001)) + "memory size" +) +(assert_invalid + (module (memory i64 0 0x1_0000_0000_0001)) + "memory size" +) + +(assert_invalid + (module (memory (import "M" "m") i64 0x1_0000_0000_0001)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") i64 0 0x1_0000_0000_0001)) + "memory size" +) + (module (memory i64 1) (data (i64.const 0) "ABC\a7D") (data (i64.const 20) "WASM") diff --git a/test/core/table.wast b/test/core/table.wast index 8648df070..a0feefff9 100644 --- a/test/core/table.wast +++ b/test/core/table.wast @@ -33,15 +33,15 @@ (assert_invalid (module quote "(table 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) (assert_invalid (module quote "(table 0x1_0000_0000 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) (assert_invalid (module quote "(table 0 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) ;; Same as above but with i64 address types From 3f6b4207bb88daab0c07da0f7d3ab5d2eb20eeed Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 6 Nov 2024 15:40:27 +0100 Subject: [PATCH 212/230] Changes entry --- document/core/appendix/changes.rst | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 352bc504a..e5ffa79ae 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -389,6 +389,44 @@ Added the ability to use multiple memories per module. [#proposal-multimem]_ * :ref:`Data segments ` take a :ref:`memory index ` +.. index:: address type, number type, table, memory, instruction + +64-bit Address Space +.................... + +Added the ability to declare an :math:`\I64` :ref:`address type ` for :ref:`tables ` and :ref:`memories `. [#proposal-addr64]_ + +* :ref:`Address types ` denote a subset of the integral :ref:`number types ` + +* :ref:`Table types ` include an :ref:`address type ` + +* :ref:`Memory types ` include an :ref:`address type ` + +* Operand types of :ref:`table ` and :ref:`memory ` instructions now depend on the subject's declared address type: + + - |TABLEGET| + - |TABLESET| + - |TABLESIZE| + - |TABLEGROW| + - |TABLEFILL| + - |TABLECOPY| + - |TABLEINIT| + - |MEMORYSIZE| + - |MEMORYGROW| + - |MEMORYFILL| + - |MEMORYCOPY| + - |MEMORYINIT| + - :math:`t\K{.load}` + - :math:`t\K{.store}` + - :math:`t\K{.load}\!N\!\K{\_}\sx` + - :math:`t\K{.store}\!N` + - :math:`\K{v128.load}\!N\!\K{x}\!M\!\K{\_}\sx` + - :math:`\K{v128.load}\!N\!\K{\_zero}` + - :math:`\K{v128.load}\!N\!\K{\_splat}` + - :math:`\K{v128.load}\!N\!\K{\_lane}` + - :math:`\K{v128.store}\!N\!\K{\_lane}` + + .. index:: reference, reference type, heap type, value type, local, local type, instruction, instruction type, table, function, function type, matching, subtyping Typeful References @@ -595,6 +633,9 @@ mirroring the role of custom sections in the binary format. [#proposal-annot]_ .. [#proposal-multimem] https://github.com/WebAssembly/spec/blob/main/proposals/multi-memory/ +.. [#proposal-addr64] + https://github.com/WebAssembly/spec/blob/main/proposals/memory64/ + .. [#proposal-typedref] https://github.com/WebAssembly/spec/tree/main/proposals/function-references/ From 67ebdcd338914a7d604345c7c58fadfe6d177d2f Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Wed, 6 Nov 2024 21:42:42 +0100 Subject: [PATCH 213/230] Typo --- document/core/exec/instructions.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 07407cac4..d6a16b84a 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -3440,7 +3440,7 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Assert: due to :ref:`validation `, a value of :ref:`adress type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. 7. Pop the value :math:`\X{at}.\CONST~i` from the stack. From 5f2f99d19117fd269bf93075a9ac1705b176b02e Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 6 Nov 2024 14:25:08 -0800 Subject: [PATCH 214/230] embedding.rst: Fix heading underline. NFC (#1840) Looks like this was missing from 76bcf867. --- document/core/appendix/embedding.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/document/core/appendix/embedding.rst b/document/core/appendix/embedding.rst index 8dd8ffe0c..46afd6ff2 100644 --- a/document/core/appendix/embedding.rst +++ b/document/core/appendix/embedding.rst @@ -165,7 +165,7 @@ Modules .. _embed-module-instantiate: :math:`\F{module\_instantiate}(\store, \module, \externval^\ast) : (\store, \moduleinst ~|~ \exception ~|~ \error)` -.................................................................................................... +................................................................................................................... 1. Try :ref:`instantiating ` :math:`\module` in :math:`\store` with :ref:`external values ` :math:`\externval^\ast` as imports: From ed1fc5324b18cf709d076aa18378eaa398d5e816 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 6 Nov 2024 14:58:13 -0800 Subject: [PATCH 215/230] Update appendix for memory64 (#97) Split out from https://github.com/WebAssembly/spec/pull/1839 --- document/core/appendix/changes.rst | 41 ++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/document/core/appendix/changes.rst b/document/core/appendix/changes.rst index 352bc504a..e5ffa79ae 100644 --- a/document/core/appendix/changes.rst +++ b/document/core/appendix/changes.rst @@ -389,6 +389,44 @@ Added the ability to use multiple memories per module. [#proposal-multimem]_ * :ref:`Data segments ` take a :ref:`memory index ` +.. index:: address type, number type, table, memory, instruction + +64-bit Address Space +.................... + +Added the ability to declare an :math:`\I64` :ref:`address type ` for :ref:`tables ` and :ref:`memories `. [#proposal-addr64]_ + +* :ref:`Address types ` denote a subset of the integral :ref:`number types ` + +* :ref:`Table types ` include an :ref:`address type ` + +* :ref:`Memory types ` include an :ref:`address type ` + +* Operand types of :ref:`table ` and :ref:`memory ` instructions now depend on the subject's declared address type: + + - |TABLEGET| + - |TABLESET| + - |TABLESIZE| + - |TABLEGROW| + - |TABLEFILL| + - |TABLECOPY| + - |TABLEINIT| + - |MEMORYSIZE| + - |MEMORYGROW| + - |MEMORYFILL| + - |MEMORYCOPY| + - |MEMORYINIT| + - :math:`t\K{.load}` + - :math:`t\K{.store}` + - :math:`t\K{.load}\!N\!\K{\_}\sx` + - :math:`t\K{.store}\!N` + - :math:`\K{v128.load}\!N\!\K{x}\!M\!\K{\_}\sx` + - :math:`\K{v128.load}\!N\!\K{\_zero}` + - :math:`\K{v128.load}\!N\!\K{\_splat}` + - :math:`\K{v128.load}\!N\!\K{\_lane}` + - :math:`\K{v128.store}\!N\!\K{\_lane}` + + .. index:: reference, reference type, heap type, value type, local, local type, instruction, instruction type, table, function, function type, matching, subtyping Typeful References @@ -595,6 +633,9 @@ mirroring the role of custom sections in the binary format. [#proposal-annot]_ .. [#proposal-multimem] https://github.com/WebAssembly/spec/blob/main/proposals/multi-memory/ +.. [#proposal-addr64] + https://github.com/WebAssembly/spec/blob/main/proposals/memory64/ + .. [#proposal-typedref] https://github.com/WebAssembly/spec/tree/main/proposals/function-references/ From ace09470a6aab8e31710c6835a70a344cbec051b Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 6 Nov 2024 14:58:53 -0800 Subject: [PATCH 216/230] Memory64 spec tweaks and fixes from @rossberg (#98) - Removed unnecessary/mismatching lookup of table/memory type in execution prose - Added missing result type lookup in formal rule for table.size and memory.size - Fixed computation of -1 result value for table.grow and table.size to work for i64 - Some fixes around specification of text format for inline elements/data shorthand - Fixed matching rules for tabletype/memtype to enforce same address type Split out from https://github.com/WebAssembly/spec/pull/1839 --- document/core/binary/types.rst | 6 +- document/core/exec/instructions.rst | 420 ++++++++++++--------------- document/core/syntax/types.rst | 13 +- document/core/text/modules.rst | 29 +- document/core/valid/instructions.rst | 8 +- document/core/valid/matching.rst | 8 +- 6 files changed, 217 insertions(+), 267 deletions(-) diff --git a/document/core/binary/types.rst b/document/core/binary/types.rst index d5501ec48..3ab538a09 100644 --- a/document/core/binary/types.rst +++ b/document/core/binary/types.rst @@ -251,7 +251,7 @@ Additional shorthands are recognized for unary recursions and sub types without Limits ~~~~~~ -:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and the corresponding :ref:`address type `. +:ref:`Limits ` are encoded with a preceding flag indicating whether a maximum is present, and a flag for the :ref:`address type `. .. math:: \begin{array}{llclll} @@ -275,7 +275,7 @@ Memory Types .. math:: \begin{array}{llclll@{\qquad\qquad}l} \production{memory type} & \Bmemtype &::=& - (\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim} \\ + (\X{at},\X{lim}){:}\Blimits &\Rightarrow& \X{at}~\X{lim} \\ \end{array} @@ -291,7 +291,7 @@ Table Types .. math:: \begin{array}{llclll} \production{table type} & \Btabletype &::=& - \X{et}{:}\Breftype~~(\X{at}, \X{lim}){:}\Blimits &\Rightarrow& \X{at}~~\X{lim}~\X{et} \\ + \X{et}{:}\Breftype~~(\X{at},\X{lim}){:}\Blimits &\Rightarrow& \X{at}~\X{lim}~\X{et} \\ \end{array} diff --git a/document/core/exec/instructions.rst b/document/core/exec/instructions.rst index 3a23b045e..d6a16b84a 100644 --- a/document/core/exec/instructions.rst +++ b/document/core/exec/instructions.rst @@ -2725,19 +2725,17 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: +8. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -10. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`. +9. Let :math:`\val` be the value :math:`\X{tab}.\TIELEM[i]`. -11. Push the value :math:`\val` to the stack. +10. Push the value :math:`\val` to the stack. .. math:: ~\\[-1ex] @@ -2770,21 +2768,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. +6. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -8. Pop the value :math:`\val` from the stack. +7. Pop the value :math:`\val` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: +10. If :math:`i` is not smaller than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -12. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`. +11. Replace the element :math:`\X{tab}.\TIELEM[i]` with :math:`\val`. .. math:: ~\\[-1ex] @@ -2829,7 +2825,10 @@ Table Instructions S; F; (\TABLESIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad - (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz}) \\ + \begin{array}[t]{@{}r@{~}l@{}} + (\iff |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM| = \X{sz} \\ + \wedge S.\STABLES[F.\AMODULE.\MITABLES[x]].\TITYPE = \X{at}~\X{lim}~t) + \end{array} \\ \end{array} @@ -2849,21 +2848,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`. +6. Let :math:`\X{sz}` be the length of :math:`S.\STABLES[a]`. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Pop the value :math:`t.\CONST~n` from the stack. -10. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. +9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -11. Pop the value :math:`\val` from the stack. +10. Pop the value :math:`\val` from the stack. -12. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +11. Let :math:`\X{err}` be the value :math:`2^{|\X{at}|}-1`, for which :math:`\signed_{|\X{at}|}(\X{err})` is :math:`-1`. -13. Either: +12. Either: a. If :ref:`growing ` :math:`\X{tab}` by :math:`n` entries with initialization value :math:`\val` succeeds, then: @@ -2873,7 +2870,7 @@ Table Instructions i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. -14. Or: +13. Or: a. push the value :math:`\X{at}.\CONST~\X{err}` to the stack. @@ -2891,7 +2888,7 @@ Table Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) + S; F; \val~(\X{at}.\CONST~n)~(\TABLEGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{|\X{at}|}^{-1}(-1)) \end{array} \end{array} @@ -2919,21 +2916,19 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Pop the value :math:`\X{at}.\CONST~n` from the stack. -8. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. -9. Assert: due to :ref:`validation `, a :ref:`reference value ` is on the top of the stack. - -10. Pop the value :math:`\val` from the stack. +9. Pop the value :math:`\val` from the stack. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`address type ` :math:`\X{at}` is on the top of the stack. -12. Pop the value :math:`\X{at}.\CONST~i` from the stack. +11. Pop the value :math:`\X{at}.\CONST~i` from the stack. -13. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: +12. If :math:`i + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. @@ -3004,25 +2999,19 @@ Table Instructions 9. Let :math:`\X{tab}_y` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}_y]`. -10. Let :math:`\X{at}_x~\limits_x` be the :ref:`table type ` :math:`\X{tab}_x.\TITYPE`. - -11. Let :math:`\X{at}_y~\limits_y` be the :ref:`table type ` :math:`\X{tab}_y.\TITYPE`. - -12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y`. +10. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_n` is on the top of the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. +11. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. +12. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_s` is on the top of the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_y` is on the top of the stack. +13. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. -16. Pop the value :math:`\X{at}_y.\CONST~s` from the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_d` is on the top of the stack. -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_x` is on the top of the stack. +15. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. -18. Pop the value :math:`\X{at}_x.\CONST~d` from the stack. - -19. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{tab}_y.\TIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}_x.\TIELEM`, then: a. Trap. @@ -3032,9 +3021,9 @@ Table Instructions 21. If :math:`d \leq s`, then: - a. Push the value :math:`\X{at}_x.\CONST~d` to the stack. + a. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - b. Push the value :math:`\X{at}_y.\CONST~s` to the stack. + b. Push the value :math:`\X{at}_s.\CONST~s` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. @@ -3042,29 +3031,29 @@ Table Instructions e. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. - f. Push the value :math:`\X{at}_x.\CONST~(d+1)` to the stack. + f. Push the value :math:`\X{at}_d.\CONST~(d+1)` to the stack. g. Assert: due to the earlier check against the table size, :math:`s+1 < 2^{32}`. - h. Push the value :math:`\X{at}_y.\CONST~(s+1)` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~(s+1)` to the stack. 22. Else: a. Assert: due to the earlier check against the table size, :math:`d+n-1 < 2^{32}`. - b. Push the value :math:`\X{at}_x.\CONST~(d+n-1)` to the stack. + b. Push the value :math:`\X{at}_d.\CONST~(d+n-1)` to the stack. c. Assert: due to the earlier check against the table size, :math:`s+n-1 < 2^{32}`. - d. Push the value :math:`\X{at}_y.\CONST~(s+n-1)` to the stack. + d. Push the value :math:`\X{at}_s.\CONST~(s+n-1)` to the stack. c. Execute the instruction :math:`\TABLEGET~y`. f. Execute the instruction :math:`\TABLESET~x`. - g. Push the value :math:`\X{at}_x.\CONST~d` to the stack. + g. Push the value :math:`\X{at}_d.\CONST~d` to the stack. - h. Push the value :math:`\X{at}_y.\CONST~s` to the stack. + h. Push the value :math:`\X{at}_s.\CONST~s` to the stack. 23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. @@ -3073,7 +3062,7 @@ Table Instructions .. math:: ~\\[-1ex] \begin{array}{l} - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \TRAP \\ \qquad \begin{array}[t]{@{}r@{~}l@{}} @@ -3081,27 +3070,27 @@ Table Instructions \vee & d + n > |S.\STABLES[F.\AMODULE.\MITABLES[x]].\TIELEM|) \\[1ex] \end{array} \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~0)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~0)~(\TABLECOPY~x~y) \quad\stepto\quad S; F; \epsilon \\ \qquad (\otherwise) \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{at}_x.\CONST~d+1)~(\X{at}_y.\CONST~s+1)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_d.\CONST~d+1)~(\X{at}_s.\CONST~s+1)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d \leq s) \\[1ex] - S; F; (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) + S; F; (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n+1)~(\TABLECOPY~x~y) \quad\stepto \\ \qquad S; F; \begin{array}[t]{@{}l@{}} - (\X{at}_x.\CONST~d+n)~(\X{at}_y.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ - (\X{at}_x.\CONST~d)~(\X{at}_y.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ + (\X{at}_d.\CONST~d+n)~(\X{at}_s.\CONST~s+n)~(\TABLEGET~y)~(\TABLESET~x) \\ + (\X{at}_d.\CONST~d)~(\X{at}_s.\CONST~s)~(\X{at}_n.\CONST~n)~(\TABLECOPY~x~y) \\ \end{array} \\ \qquad (\otherwise, \iff d > s) \\ @@ -3123,55 +3112,53 @@ Table Instructions 5. Let :math:`\X{tab}` be the :ref:`table instance ` :math:`S.\STABLES[\X{ta}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`table type ` :math:`\X{tab}.\TITYPE`. - -7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists. +6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIELEMS[y]` exists. -8. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`. +7. Let :math:`\X{ea}` be the :ref:`element address ` :math:`F.\AMODULE.\MIELEMS[y]`. -9. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists. +8. Assert: due to :ref:`validation `, :math:`S.\SELEMS[\X{ea}]` exists. -10. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`. +9. Let :math:`\X{elem}` be the :ref:`element instance ` :math:`S.\SELEMS[\X{ea}]`. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\I32` is on the top of the stack. -12. Pop the value :math:`\I32.\CONST~n` from the stack. +11. Pop the value :math:`\I32.\CONST~n` from the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -14. Pop the value :math:`\I32.\CONST~s` from the stack. +13. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{at}.\CONST~d` from the stack. +15. Pop the value :math:`\X{at}.\CONST~d` from the stack. -17. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{elem}.\EIELEM` or :math:`d + n` is larger than the length of :math:`\X{tab}.\TIELEM`, then: a. Trap. -18. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -19. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`. +18. Let :math:`\val` be the :ref:`reference value ` :math:`\X{elem}.\EIELEM[s]`. -20. Push the value :math:`\X{at}.\CONST~d` to the stack. +19. Push the value :math:`\X{at}.\CONST~d` to the stack. -21. Push the value :math:`\val` to the stack. +20. Push the value :math:`\val` to the stack. -22. Execute the instruction :math:`\TABLESET~x`. +21. Execute the instruction :math:`\TABLESET~x`. -23. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. +22. Assert: due to the earlier check against the table size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. +23. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. -25. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`. +24. Assert: due to the earlier check against the segment size, :math:`s+1 < 2^{32}`. -26. Push the value :math:`\I32.\CONST~(s+1)` to the stack. +25. Push the value :math:`\I32.\CONST~(s+1)` to the stack. -27. Push the value :math:`\I32.\CONST~(n-1)` to the stack. +26. Push the value :math:`\I32.\CONST~(n-1)` to the stack. -28. Execute the instruction :math:`\TABLEINIT~x~y`. +27. Execute the instruction :math:`\TABLEINIT~x~y`. .. math:: ~\\[-1ex] @@ -3260,35 +3247,33 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`N` is not part of the instruction, then: +9. If :math:`N` is not part of the instruction, then: a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`. -11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -13. If :math:`N` and :math:`\sx` are part of the instruction, then: +12. If :math:`N` and :math:`\sx` are part of the instruction, then: a. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. b. Let :math:`c` be the result of computing :math:`\extend^{\sx}_{N,|t|}(n)`. -14. Else: +13. Else: a. Let :math:`c` be the constant for which :math:`\bytes_t(c) = b^\ast`. -15. Push the value :math:`t.\CONST~c` to the stack. +14. Push the value :math:`t.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3337,29 +3322,27 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + M \cdot N /8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice M \cdot N /8]`. -12. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`. +11. Let :math:`m_k` be the integer for which :math:`\bytes_{\iM}(m_k) = b^\ast[k \cdot M/8 \slice M/8]`. -13. Let :math:`W` be the integer :math:`M \cdot 2`. +12. Let :math:`W` be the integer :math:`M \cdot 2`. -14. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`. +13. Let :math:`n_k` be the result of computing :math:`\extend^{\sx}_{M,W}(m_k)`. -15. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`. +14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\K{i}W\K{x}N}(n_0 \dots n_{N-1})`. -16. Push the value :math:`\V128.\CONST~c` to the stack. +15. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3400,27 +3383,25 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. +11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. -13. Let :math:`L` be the integer :math:`128 / N`. +12. Let :math:`L` be the integer :math:`128 / N`. -14. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`. +13. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(n^L)`. -15. Push the value :math:`\V128.\CONST~c` to the stack. +14. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3459,25 +3440,23 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Pop the value :math:`\X{at}.\CONST~i` from the stack. -8. Pop the value :math:`\X{at}.\CONST~i` from the stack. +8. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -9. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. - -10. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +9. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -11. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +10. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -12. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. +11. Let :math:`n` be the integer for which :math:`\bytes_{\iN}(n) = b^\ast`. -13. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`. +12. Let :math:`c` be the result of computing :math:`\extendu_{N,128}(n)`. -14. Push the value :math:`\V128.\CONST~c` to the stack. +13. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3516,33 +3495,31 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` |V128| is on the top of the stack. -8. Pop the value :math:`\V128.\CONST~v` from the stack. +7. Pop the value :math:`\V128.\CONST~v` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -13. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. +12. Let :math:`b^\ast` be the byte sequence :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]`. -14. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`. +13. Let :math:`r` be the constant for which :math:`\bytes_{\iN}(r) = b^\ast`. -15. Let :math:`L` be :math:`128 / N`. +14. Let :math:`L` be :math:`128 / N`. -16. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`. +15. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(v)`. -17. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`. +16. Let :math:`c` be the result of computing :math:`\lanes^{-1}_{\IN\K{x}L}(j^\ast \with [y] = r)`. -18. Push the value :math:`\V128.\CONST~c` to the stack. +17. Push the value :math:`\V128.\CONST~c` to the stack. .. math:: ~\\[-1ex] @@ -3583,37 +3560,35 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`t` is on the top of the stack. -8. Pop the value :math:`t.\CONST~c` from the stack. +7. Pop the value :math:`t.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`N` is not part of the instruction, then: +11. If :math:`N` is not part of the instruction, then: a. Let :math:`N` be the :ref:`bit width ` :math:`|t|` of :ref:`number type ` :math:`t`. -13. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -14. If :math:`N` is part of the instruction, then: +13. If :math:`N` is part of the instruction, then: a. Let :math:`n` be the result of computing :math:`\wrap_{|t|,N}(c)`. b. Let :math:`b^\ast` be the byte sequence :math:`\bytes_{\iN}(n)`. -15. Else: +14. Else: a. Let :math:`b^\ast` be the byte sequence :math:`\bytes_t(c)`. -16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. +15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. .. math:: ~\\[-1ex] @@ -3661,29 +3636,27 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\V128` is on the top of the stack. -8. Pop the value :math:`\V128.\CONST~c` from the stack. +7. Pop the value :math:`\V128.\CONST~c` from the stack. -9. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +8. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -10. Pop the value :math:`\X{at}.\CONST~i` from the stack. +9. Pop the value :math:`\X{at}.\CONST~i` from the stack. -11. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. +10. Let :math:`\X{ea}` be the integer :math:`i + \memarg.\OFFSET`. -12. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +11. If :math:`\X{ea} + N/8` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -13. Let :math:`L` be :math:`128/N`. +12. Let :math:`L` be :math:`128/N`. -14. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`. +13. Let :math:`j^\ast` be the result of computing :math:`\lanes_{\IN\K{x}L}(c)`. -15. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`. +14. Let :math:`b^\ast` be the result of computing :math:`\bytes_{\iN}(j^\ast[y])`. -16. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. +15. Replace the bytes :math:`\X{mem}.\MIDATA[\X{ea} \slice N/8]` with :math:`b^\ast`. .. math:: ~\\[-1ex] @@ -3734,7 +3707,10 @@ Memory Instructions S; F; (\MEMORYSIZE~x) &\stepto& S; F; (\X{at}.\CONST~\X{sz}) \end{array} \\ \qquad - (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki}) \\ + \begin{array}[t]{@{}r@{~}l@{}} + (\iff |S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MIDATA| = \X{sz}\cdot64\,\F{Ki} \\ + \wedge S.\SMEMS[F.\AMODULE.\MIMEMS[x]].\MITYPE = \X{at}~\X{lim}) + \end{array} \\ \end{array} @@ -3754,17 +3730,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[a]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `. +6. Let :math:`\X{sz}` be the length of :math:`S.\SMEMS[a]` divided by the :ref:`page size `. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +7. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -9. Pop the value :math:`\X{at}.\CONST~n` from the stack. +8. Pop the value :math:`\X{at}.\CONST~n` from the stack. -10. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{32}-1`, for which :math:`\signed_{32}(\X{err})` is :math:`-1`. +9. Let :math:`\X{err}` be the :math:`\X{at}` value :math:`2^{|\X{at}|}-1`, for which :math:`\signed_{|\X{at}|}(\X{err})` is :math:`-1`. -11. Either: +10. Either: a. If :ref:`growing ` :math:`\X{mem}` by :math:`n` :ref:`pages ` succeeds, then: @@ -3774,7 +3748,7 @@ Memory Instructions i. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. -12. Or: +11. Or: a. Push the value :math:`\X{at}.\CONST~\X{err}` to the stack. @@ -3792,7 +3766,7 @@ Memory Instructions \end{array} \\[1ex] \begin{array}{lcl@{\qquad}l} - S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{32}^{-1}(-1)) + S; F; (\X{at}.\CONST~n)~(\MEMORYGROW~x) &\stepto& S; F; (\X{at}.\CONST~\signed_{|\X{at}|}^{-1}(-1)) \end{array} \end{array} @@ -3820,17 +3794,15 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +6. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. 7. Pop the value :math:`\X{at}.\CONST~n` from the stack. -8. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +8. Assert: due to :ref:`validation `, a value is on the top of the stack. 9. Pop the value :math:`\val` from the stack. -10. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`address type ` :math:`\X{at}` is on the top of the stack. 11. Pop the value :math:`\X{at}.\CONST~d` from the stack. @@ -3906,33 +3878,27 @@ Memory Instructions 9. Let :math:`\X{mem}_s` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{sa}]`. -10. Let :math:`\X{at}_d~\limits_d` be the :ref:`memory type ` :math:`\X{mem}_d.\MITYPE`. +10. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_n` is on the top of the stack. -11. Let :math:`\X{at}_s~\limits_s` be the :ref:`memory type ` :math:`\X{mem}_s.\MITYPE`. +11. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. -12. Let :math:`\X{at}_n` be the :ref:`minimum ` of :math:`\X{at}_s` and :math:`\X{at}_d`. +12. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_s` is on the top of the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_n` is on the top of the stack. +13. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. -14. Pop the value :math:`\X{at}_n.\CONST~n` from the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}_d` is on the top of the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_s` is on the top of the stack. +15. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. -16. Pop the value :math:`\X{at}_s.\CONST~s` from the stack. - -17. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}_d` is on the top of the stack. - -18. Pop the value :math:`\X{at}_d.\CONST~d` from the stack. - -19. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{mem}_s.\MIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}_d.\MIDATA`, then: a. Trap. -20. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -21. If :math:`d \leq s`, then: +18. If :math:`d \leq s`, then: a. Push the value :math:`\X{at}_d.\CONST~d` to the stack. @@ -3950,7 +3916,7 @@ Memory Instructions h. Push the value :math:`\X{at}_s.\CONST~(s+1)` to the stack. -22. Else: +19. Else: a. Assert: due to the earlier check against the memory size, :math:`d+n-1 < 2^{32}`. @@ -3968,9 +3934,9 @@ Memory Instructions h. Push the value :math:`\X{at}_s.\CONST~s` to the stack. -23. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. +20. Push the value :math:`\X{at}_n.\CONST~(n-1)` to the stack. -24. Execute the instruction :math:`\MEMORYCOPY~x~y`. +21. Execute the instruction :math:`\MEMORYCOPY~x~y`. .. math:: ~\\[-1ex] @@ -4029,55 +3995,53 @@ Memory Instructions 5. Let :math:`\X{mem}` be the :ref:`memory instance ` :math:`S.\SMEMS[\X{ma}]`. -6. Let :math:`\X{at}~\limits` be the :ref:`memory type ` :math:`\X{mem}.\MITYPE`. - -7. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists. +6. Assert: due to :ref:`validation `, :math:`F.\AMODULE.\MIDATAS[y]` exists. -8. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`. +7. Let :math:`\X{da}` be the :ref:`data address ` :math:`F.\AMODULE.\MIDATAS[y]`. -9. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists. +8. Assert: due to :ref:`validation `, :math:`S.\SDATAS[\X{da}]` exists. -10. Let :math:`\X{data}` be the :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`. +9. Let :math:`\X{data}` be the :ref:`data instance ` :math:`S.\SDATAS[\X{da}]`. -11. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +10. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -12. Pop the value :math:`\I32.\CONST~n` from the stack. +11. Pop the value :math:`\I32.\CONST~n` from the stack. -13. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. +12. Assert: due to :ref:`validation `, a value of :ref:`value type ` |I32| is on the top of the stack. -14. Pop the value :math:`\I32.\CONST~s` from the stack. +13. Pop the value :math:`\I32.\CONST~s` from the stack. -15. Assert: due to :ref:`validation `, a value of :ref:`value type ` :math:`\X{at}` is on the top of the stack. +14. Assert: due to :ref:`validation `, a value of some :ref:`address type ` :math:`\X{at}` is on the top of the stack. -16. Pop the value :math:`\X{at}.\CONST~d` from the stack. +15. Pop the value :math:`\X{at}.\CONST~d` from the stack. -17. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: +16. If :math:`s + n` is larger than the length of :math:`\X{data}.\DIDATA` or :math:`d + n` is larger than the length of :math:`\X{mem}.\MIDATA`, then: a. Trap. -18. If :math:`n = 0`, then: +17. If :math:`n = 0`, then: a. Return. -19. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`. +18. Let :math:`b` be the byte :math:`\X{data}.\DIDATA[s]`. -20. Push the value :math:`\X{at}.\CONST~d` to the stack. +19. Push the value :math:`\X{at}.\CONST~d` to the stack. -21. Push the value :math:`\I32.\CONST~b` to the stack. +20. Push the value :math:`\I32.\CONST~b` to the stack. -22. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`. +21. Execute the instruction :math:`\I32\K{.}\STORE\K{8}~x~\{ \OFFSET~0, \ALIGN~0 \}`. -23. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. +22. Assert: due to the earlier check against the memory size, :math:`d+1 < 2^{32}`. -24. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. +23. Push the value :math:`\X{at}.\CONST~(d+1)` to the stack. -25. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. +24. Assert: due to the earlier check against the memory size, :math:`s+1 < 2^{32}`. -26. Push the value :math:`\I32.\CONST~(s+1)` to the stack. +25. Push the value :math:`\I32.\CONST~(s+1)` to the stack. -27. Push the value :math:`\I32.\CONST~(n-1)` to the stack. +26. Push the value :math:`\I32.\CONST~(n-1)` to the stack. -28. Execute the instruction :math:`\MEMORYINIT~x~y`. +27. Execute the instruction :math:`\MEMORYINIT~x~y`. .. math:: ~\\[-1ex] diff --git a/document/core/syntax/types.rst b/document/core/syntax/types.rst index 5e17179f2..2da8a265f 100644 --- a/document/core/syntax/types.rst +++ b/document/core/syntax/types.rst @@ -366,7 +366,7 @@ The syntax of sub types is :ref:`generalized ` for the purp Address Type ~~~~~~~~~~~~ -*Address types* classify the values that can be used to index into +*Address types* are a subset of :ref:`number types ` that classify the values that can be used as offsets into :ref:`memories ` and :ref:`tables `. .. math:: @@ -380,13 +380,12 @@ Address Type Conventions ........... -The *minimum* of two address types is defined as |I32| if either of the types are -|I32|, and |I64| otherwise. +The *minimum* of two address types is defined as the address type whose :ref:`bit width ` is the minimum of the two. .. math:: \begin{array}{llll} - \atmin(\I64, \I64) &=& \I64 \\ - \atmin(\X{at}_1, \X{at}_2) &=& \I32 & (\otherwise) \\ + \atmin(\X{at}_1, \X{at}_2) &=& \X{at}_1 & (\iff |\X{at}_1| \leq |\X{at}_2|) \\ + \atmin(\X{at}_1, \X{at}_2) &=& \X{at}_2 & (\otherwise) \\ \end{array} @@ -424,7 +423,7 @@ Memory Types .. math:: \begin{array}{llrl} \production{memory type} & \memtype &::=& - ~\addrtype~\limits \\ + \addrtype~\limits \\ \end{array} The limits constrain the minimum and optionally the maximum size of a memory. @@ -445,7 +444,7 @@ Table Types .. math:: \begin{array}{llrl} \production{table type} & \tabletype &::=& - ~\addrtype~\limits ~\reftype \\ + \addrtype~\limits~\reftype \\ \end{array} Like memories, tables are constrained by limits for their minimum and optionally maximum size. diff --git a/document/core/text/modules.rst b/document/core/text/modules.rst index 3178332dd..73bb7182b 100644 --- a/document/core/text/modules.rst +++ b/document/core/text/modules.rst @@ -307,21 +307,12 @@ An :ref:`element segment ` can be given inline with a table definitio .. math:: \begin{array}{llclll} \production{module field} & - \text{(}~\text{table}~~\Tid^?~~\Treftype~~\text{(}~\text{elem}~~\expr^n{:}\Tvec(\Telemexpr)~\text{)}~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{table}~~\Tid'~~n~~n~~\Treftype~\text{)} \\ & \qquad - \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\text{i32.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\Telemexpr)~\text{)} + \text{(}~\text{table}~~\Tid^?~~\Taddrtype^?~~\Treftype~~\text{(}~\text{elem}~~x^n{:}\Tvec(\Tfuncidx)~\text{)}~\text{)} \quad\equiv \\ & \qquad + \text{(}~\text{table}~~\Tid'~~\Taddrtype^?~~n~~n~~\Treftype~\text{)} \\ & \qquad + \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\Taddrtype'\text{.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\text{(}~\text{ref.func}~~\Tfuncidx~\text{)})~\text{)} \\ & \qquad\qquad - (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh) \\ - \end{array} - -.. math:: - \begin{array}{llclll} - \production{module field} & - \text{(}~\text{table}~~\Tid^?~~\Treftype~~\text{(}~\text{elem}~~x^n{:}\Tvec(\Tfuncidx)~\text{)}~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{table}~~\Tid'~~n~~n~~\Treftype~\text{)} \\ & \qquad - \text{(}~\text{elem}~~\text{(}~\text{table}~~\Tid'~\text{)}~~\text{(}~\text{i32.const}~~\text{0}~\text{)}~~\Treftype~~\Tvec(\text{(}~\text{ref.func}~~\Tfuncidx~\text{)})~\text{)} - \\ & \qquad\qquad - (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh) \\ + (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad + \iff \Taddrtype? \neq \epsilon \wedge \Taddrtype' = \Taddrtype^? \vee \Taddrtype^? = \epsilon \wedge \Taddrtype' = \text{i32}) \\ \end{array} Tables can be defined as :ref:`imports ` or :ref:`exports ` inline: @@ -378,13 +369,13 @@ A :ref:`data segment ` can be given inline with a memory definition, .. math:: \begin{array}{llclll} \production{module field} & - \text{(}~\text{memory}~~\Tid^?~~\X{at}^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad - \text{(}~\text{memory}~~\Tid'~~\X{at}^?~~m~~m~\text{)} \\ & \qquad - \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\X{at}'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} + \text{(}~\text{memory}~~\Tid^?~~\Taddrtype^?~~\text{(}~\text{data}~~b^n{:}\Tdatastring~\text{)}~~\text{)} \quad\equiv \\ & \qquad + \text{(}~\text{memory}~~\Tid'~~\Taddrtype^?~~m~~m~\text{)} \\ & \qquad + \text{(}~\text{data}~~\text{(}~\text{memory}~~\Tid'~\text{)}~~\text{(}~\Taddrtype'\text{.const}~~\text{0}~\text{)}~~\Tdatastring~\text{)} \\ & \qquad\qquad (\iff \Tid^? \neq \epsilon \wedge \Tid' = \Tid^? \vee \Tid^? = \epsilon \wedge \Tid' \idfresh, \\ & \qquad\qquad - \iff \X{at}^? \neq \epsilon \wedge \X{at}' = \X{at}^? \vee \X{at}^? = \epsilon \wedge \X{at}' = \text{i32}, \\ & \qquad\qquad - m = \F{ceil}(n / 64\,\F{Ki})), \\ + \iff \Taddrtype? \neq \epsilon \wedge \Taddrtype' = \Taddrtype^? \vee \Taddrtype^? = \epsilon \wedge \Taddrtype' = \text{i32}, \\ & \qquad\qquad + m = \F{ceil}(n / 64\,\F{Ki})) \\ \end{array} Memories can be defined as :ref:`imports ` or :ref:`exports ` inline: diff --git a/document/core/valid/instructions.rst b/document/core/valid/instructions.rst index 01e09d93c..602540d97 100644 --- a/document/core/valid/instructions.rst +++ b/document/core/valid/instructions.rst @@ -1496,11 +1496,11 @@ Table Instructions * Let :math:`\X{at}_2~\limits_2~t_2` be the :ref:`table type ` :math:`C.\CTABLES[y]`. -* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_1` and :math:`\X{at}_2` - * The :ref:`reference type ` :math:`t_2` must :ref:`match ` :math:`t_1`. -* Then the instruction is valid with type :math:`[\X{at}_1~\X{at}_2~\atmin(\X{at}_1, \X{at}_2)] \to []`. +* Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_1` and :math:`\X{at}_2` + +* Then the instruction is valid with type :math:`[\X{at}_1~\X{at}_2~\X{at}] \to []`. .. math:: \frac{ @@ -1890,7 +1890,7 @@ Memory Instructions * Let :math:`\X{at}` be the :ref:`minimum ` of :math:`\X{at}_x` and :math:`\X{at}_y` -* Then the instruction is valid with type :math:`[\X{at}_x~\X{at}_y~\atmin(\X{at}_x, \X{at}_y)] \to []`. +* Then the instruction is valid with type :math:`[\X{at}_x~\X{at}_y~\X{at}] \to []`. .. math:: \frac{ diff --git a/document/core/valid/matching.rst b/document/core/valid/matching.rst index 75ff8c08e..12457adf8 100644 --- a/document/core/valid/matching.rst +++ b/document/core/valid/matching.rst @@ -513,15 +513,13 @@ A :ref:`table type ` :math:`(\addrtype_1~\limits_1~\reftype_1) .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 - \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 \qquad C \vdashreftypematch \reftype_1 \matchesreftype \reftype_2 \qquad C \vdashreftypematch \reftype_2 \matchesreftype \reftype_1 }{ - C \vdashtabletypematch \addrtype_1~\limits_1~\reftype_1 \matchestabletype \addrtype_2~\limits_2~\reftype_2 + C \vdashtabletypematch \addrtype~\limits_1~\reftype_1 \matchestabletype \addrtype~\limits_2~\reftype_2 } @@ -541,11 +539,9 @@ A :ref:`memory type ` :math:`(\addrtype_1~\limits_1)` matches :m .. math:: ~\\[-1ex] \frac{ - C \vdashnumtypematch \addrtype_1 \matchesnumtype \addrtype_2 - \qquad C \vdashlimitsmatch \limits_1 \matcheslimits \limits_2 }{ - C \vdashmemtypematch \limits_1 \matchesmemtype \limits_2 + C \vdashmemtypematch \addrtype~\limits_1 \matchesmemtype \addrtype~\limits_2 } From 906d452282a9615fa99067b3cd3d4587402489a8 Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Wed, 6 Nov 2024 15:10:58 -0800 Subject: [PATCH 217/230] Intepreter and test updates from @rossberg (#99) Interpreter: - Fixed evaluation of v128 load/store instructions to work with i64 - Reworked bulk operation execution to still reduce to well-typed instructions for i32 - Added missing size check to table allocation - Various minor refactorings and clean-ups Tests: - Added tests for size check in i64 table and memory type limits Split out from https://github.com/WebAssembly/spec/pull/1839 --- interpreter/binary/decode.ml | 12 +- interpreter/binary/encode.ml | 10 +- interpreter/exec/eval.ml | 244 +++++++++++++++----------------- interpreter/host/spectest.ml | 6 +- interpreter/runtime/data.ml | 1 - interpreter/runtime/data.mli | 3 +- interpreter/runtime/elem.mli | 2 +- interpreter/runtime/memory.ml | 36 ++--- interpreter/runtime/memory.mli | 5 +- interpreter/runtime/table.ml | 26 ++-- interpreter/runtime/table.mli | 13 +- interpreter/runtime/value.ml | 20 ++- interpreter/syntax/free.ml | 4 +- interpreter/syntax/operators.ml | 4 + interpreter/syntax/types.ml | 40 +++--- interpreter/text/arrange.ml | 6 +- interpreter/text/parser.mly | 86 ++++------- interpreter/valid/match.ml | 9 +- interpreter/valid/valid.ml | 144 +++++++++---------- test/core/memory.wast | 37 +++-- test/core/memory64.wast | 18 +++ test/core/table.wast | 6 +- 22 files changed, 370 insertions(+), 362 deletions(-) diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 1db0dce4f..53c7294c8 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -281,19 +281,19 @@ let limits uN s = let flags = byte s in require (flags land 0xfa = 0) s (pos s - 1) "malformed limits flags"; let has_max = (flags land 1 = 1) in - let is64 = (flags land 4 = 4) in + let at = if flags land 4 = 4 then I64AT else I32AT in let min = uN s in let max = opt uN has_max s in - {min; max}, is64 + at, {min; max} let table_type s = let t = ref_type s in - let lim, is64 = limits u64 s in - TableT (lim, (if is64 then I64AddrType else I32AddrType), t) + let at, lim = limits u64 s in + TableT (at, lim, t) let memory_type s = - let lim, is64 = limits u64 s in - MemoryT (lim, if is64 then I64AddrType else I32AddrType) + let at, lim = limits u64 s in + MemoryT (at, lim) let global_type s = let t = val_type s in diff --git a/interpreter/binary/encode.ml b/interpreter/binary/encode.ml index 3e7003a89..eb1e729b0 100644 --- a/interpreter/binary/encode.ml +++ b/interpreter/binary/encode.ml @@ -194,15 +194,15 @@ struct | RecT [st] -> sub_type st | RecT sts -> s7 (-0x32); vec sub_type sts - let limits vu {min; max} at = - let flags = flag (max <> None) 0 + flag (at = I64AddrType) 2 in - byte flags; vu min; opt vu max + let limits at {min; max} = + let flags = flag (max <> None) 0 + flag (at = I64AT) 2 in + byte flags; u64 min; opt u64 max let table_type = function - | TableT (lim, at, t) -> ref_type t; limits u64 lim at + | TableT (at, lim, t) -> ref_type t; limits at lim let memory_type = function - | MemoryT (lim, at) -> limits u64 lim at + | MemoryT (at, lim) -> limits at lim let global_type = function | GlobalT (mut, t) -> val_type t; mutability mut diff --git a/interpreter/exec/eval.ml b/interpreter/exec/eval.ml index c5631d1ba..8af47528d 100644 --- a/interpreter/exec/eval.ml +++ b/interpreter/exec/eval.ml @@ -157,48 +157,27 @@ let split n (vs : 'a stack) at = take n vs at, drop n vs at * c : config *) -let inc_address i loc = - match i with - | I32 x -> (I32 (I32.add x 1l) @@ loc) - | I64 x -> (I64 (I64.add x 1L) @@ loc) - | _ -> Crash.error loc ("bad address type") - -let index_of_num x = - match x with - | I64 i -> i - | I32 i -> I64_convert.extend_i32_u i - | _ -> raise Type - let mem_oob frame x i n = let mem = (memory frame.inst x) in - let start = Memory.address_of_num i in - I64.gt_u (I64.add start (Memory.address_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Memory.bound mem) let data_oob frame x i n = - I64.gt_u (I64.add (Memory.address_of_num i) (Memory.address_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Data.size (data frame.inst x)) let table_oob frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Table.size (table frame.inst x)) let elem_oob frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (Table.index_of_num n)) - (Elem.size (elem frame.inst x)) - -let elem_oob2 frame x i n = - I64.gt_u (I64.add (Table.index_of_num i) (I64_convert.extend_i32_u n)) + I64.gt_u (I64.add (addr_of_num i) (addr_of_num n)) (Elem.size (elem frame.inst x)) let array_oob a i n = I64.gt_u (I64.add (I64_convert.extend_i32_u i) (I64_convert.extend_i32_u n)) (I64_convert.extend_i32_u (Aggr.array_length a)) -let array_oob2 a i n = - I64.gt_u (I64.add (I64_convert.extend_i32_u i) (index_of_num n)) - (I64_convert.extend_i32_u (Aggr.array_length a)) - let rec step (c : config) : config = let vs, es = c.code in let e = List.hd es in @@ -284,9 +263,9 @@ let rec step (c : config) : config = | CallRef _x, Ref (FuncRef f) :: vs -> vs, [Invoke f @@ e.at] - | CallIndirect (x, y), Num n :: vs -> - let i = Table.index_of_num n in - let f = func_ref c.frame.inst x i e.at in + | CallIndirect (x, y), Num i :: vs -> + let i_64 = addr_of_num i in + let f = func_ref c.frame.inst x i_64 e.at in if Match.match_def_type [] (Func.type_of f) (type_ c.frame.inst y) then vs, [Invoke f @@ e.at] else @@ -373,96 +352,96 @@ let rec step (c : config) : config = with Global.NotMutable -> Crash.error e.at "write to immutable global" | Global.Type -> Crash.error e.at "type mismatch at global write") - | TableGet x, Num n :: vs' -> - let i = Table.index_of_num n in - (try Ref (Table.load (table c.frame.inst x) i) :: vs', [] + | TableGet x, Num i :: vs' -> + let i_64 = addr_of_num i in + (try Ref (Table.load (table c.frame.inst x) i_64) :: vs', [] with exn -> vs', [Trapping (table_error e.at exn) @@ e.at]) - | TableSet x, Ref r :: Num n :: vs' -> - let i = Table.index_of_num n in - (try Table.store (table c.frame.inst x) i r; vs', [] + | TableSet x, Ref r :: Num i :: vs' -> + let i_64 = addr_of_num i in + (try Table.store (table c.frame.inst x) i_64 r; vs', [] with exn -> vs', [Trapping (table_error e.at exn) @@ e.at]) | TableSize x, vs -> let tab = table c.frame.inst x in - value_of_addr (Table.addr_type_of tab) (Table.size (table c.frame.inst x)) :: vs, [] + Num (num_of_addr (Table.addr_type_of tab) (Table.size tab)) :: vs, [] - | TableGrow x, Num delta :: Ref r :: vs' -> + | TableGrow x, Num n :: Ref r :: vs' -> + let n_64 = addr_of_num n in let tab = table c.frame.inst x in let old_size = Table.size tab in let result = - try Table.grow tab (Table.index_of_num delta) r; old_size + try Table.grow tab n_64 r; old_size with Table.SizeOverflow | Table.SizeLimit | Table.OutOfMemory -> -1L - in (value_of_addr (Table.addr_type_of tab) result) :: vs', [] + in Num (num_of_addr (Table.addr_type_of tab) result) :: vs', [] | TableFill x, Num n :: Ref r :: Num i :: vs' -> - let n_64 = Table.index_of_num n in + let n_64 = addr_of_num n in + let i_64 = addr_of_num i in if table_oob c.frame x i n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else - let i_64 = Table.index_of_num i in let _ = assert (I64.lt_u i_64 0xffff_ffff_ffff_ffffL) in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 i_64 @@ e.at)); + Plain (Const (i @@ e.at)); Refer r; Plain (TableSet x); - Plain (Const (I64 (I64.add i_64 1L) @@ e.at)); + Plain (Const (addr_add i 1L @@ e.at)); Refer r; - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableFill x); ] | TableCopy (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Table.index_of_num n in - let s_64 = Table.index_of_num s in - let d_64 = Table.index_of_num d in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in + let d_64 = addr_of_num d in if table_oob c.frame x d n || table_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else if I64.le_u d_64 s_64 then vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); Plain (TableGet y); Plain (TableSet x); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableCopy (x, y)); ] else (* d > s *) let n' = I64.sub n_64 1L in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 (I64.add d_64 n') @@ e.at)); - Plain (Const (I64 (I64.add s_64 n') @@ e.at)); + Plain (Const (addr_add d n' @@ e.at)); + Plain (Const (addr_add s n' @@ e.at)); Plain (TableGet y); Plain (TableSet x); - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); - Plain (Const (I64 n' @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableCopy (x, y)); ] | TableInit (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Table.index_of_num n in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if table_oob c.frame x d n || elem_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else - let d_64 = Table.index_of_num d in - let s_64 = Table.index_of_num s in let seg = elem c.frame.inst y in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); + Plain (Const (d @@ e.at)); Refer (Elem.load seg s_64); Plain (TableSet x); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (TableInit (x, y)); ] @@ -472,98 +451,99 @@ let rec step (c : config) : config = vs, [] | Load (x, {offset; ty; pack; _}), Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = Memory.address_of_num i in (try let n = match pack with - | None -> Memory.load_num mem a offset ty - | Some (sz, ext) -> Memory.load_num_packed sz ext mem a offset ty + | None -> Memory.load_num mem i_64 offset ty + | Some (sz, ext) -> Memory.load_num_packed sz ext mem i_64 offset ty in Num n :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) | Store (x, {offset; pack; _}), Num n :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = Memory.address_of_num i in (try (match pack with - | None -> Memory.store_num mem a offset n - | Some sz -> Memory.store_num_packed sz mem a offset n + | None -> Memory.store_num mem i_64 offset n + | Some sz -> Memory.store_num_packed sz mem i_64 offset n ); vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]); - | VecLoad (x, {offset; ty; pack; _}), Num (I32 i) :: vs' -> + | VecLoad (x, {offset; ty; pack; _}), Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let a = I64_convert.extend_i32_u i in (try let v = match pack with - | None -> Memory.load_vec mem a offset ty - | Some (sz, ext) -> Memory.load_vec_packed sz ext mem a offset ty + | None -> Memory.load_vec mem i_64 offset ty + | Some (sz, ext) -> Memory.load_vec_packed sz ext mem i_64 offset ty in Vec v :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) - | VecStore (x, {offset; _}), Vec v :: Num (I32 i) :: vs' -> + | VecStore (x, {offset; _}), Vec v :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try - Memory.store_vec mem addr offset v; + Memory.store_vec mem i_64 offset v; vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]); - | VecLoadLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num (I32 i) :: vs' -> + | VecLoadLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try let v = match pack with | Pack8 -> V128.I8x16.replace_lane j v - (I32Num.of_num 0 (Memory.load_num_packed Pack8 SX mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num_packed Pack8 SX mem i_64 offset I32T)) | Pack16 -> V128.I16x8.replace_lane j v - (I32Num.of_num 0 (Memory.load_num_packed Pack16 SX mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num_packed Pack16 SX mem i_64 offset I32T)) | Pack32 -> V128.I32x4.replace_lane j v - (I32Num.of_num 0 (Memory.load_num mem addr offset I32T)) + (I32Num.of_num 0 (Memory.load_num mem i_64 offset I32T)) | Pack64 -> V128.I64x2.replace_lane j v - (I64Num.of_num 0 (Memory.load_num mem addr offset I64T)) + (I64Num.of_num 0 (Memory.load_num mem i_64 offset I64T)) in Vec (V128 v) :: vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) - | VecStoreLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num (I32 i) :: vs' -> + | VecStoreLane (x, {offset; ty; pack; _}, j), Vec (V128 v) :: Num i :: vs' -> + let i_64 = addr_of_num i in let mem = memory c.frame.inst x in - let addr = I64_convert.extend_i32_u i in (try (match pack with | Pack8 -> - Memory.store_num_packed Pack8 mem addr offset (I32 (V128.I8x16.extract_lane_s j v)) + Memory.store_num_packed Pack8 mem i_64 offset (I32 (V128.I8x16.extract_lane_s j v)) | Pack16 -> - Memory.store_num_packed Pack16 mem addr offset (I32 (V128.I16x8.extract_lane_s j v)) + Memory.store_num_packed Pack16 mem i_64 offset (I32 (V128.I16x8.extract_lane_s j v)) | Pack32 -> - Memory.store_num mem addr offset (I32 (V128.I32x4.extract_lane_s j v)) + Memory.store_num mem i_64 offset (I32 (V128.I32x4.extract_lane_s j v)) | Pack64 -> - Memory.store_num mem addr offset (I64 (V128.I64x2.extract_lane_s j v)) + Memory.store_num mem i_64 offset (I64 (V128.I64x2.extract_lane_s j v)) ); vs', [] with exn -> vs', [Trapping (memory_error e.at exn) @@ e.at]) | MemorySize x, vs -> let mem = memory c.frame.inst x in - value_of_addr (Memory.addr_type_of mem) (Memory.size mem) :: vs, [] + Num (num_of_addr (Memory.addr_type_of mem) (Memory.size mem)) :: vs, [] - | MemoryGrow x, Num delta :: vs' -> + | MemoryGrow x, Num n :: vs' -> + let n_64 = addr_of_num n in let mem = memory c.frame.inst x in let old_size = Memory.size mem in let result = - try Memory.grow mem (Memory.address_of_num delta); old_size + try Memory.grow mem n_64; old_size with Memory.SizeOverflow | Memory.SizeLimit | Memory.OutOfMemory -> -1L - in (value_of_addr (Memory.addr_type_of mem) result) :: vs', [] + in Num (num_of_addr (Memory.addr_type_of mem) result) :: vs', [] | MemoryFill x, Num n :: Num k :: Num i :: vs' -> - let n_64 = Memory.address_of_num n in + let n_64 = addr_of_num n in if mem_oob c.frame x i n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then @@ -574,67 +554,66 @@ let rec step (c : config) : config = Plain (Const (k @@ e.at)); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (inc_address i e.at)); + Plain (Const (addr_add i 1L @@ e.at)); Plain (Const (k @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryFill x); ] | MemoryCopy (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Memory.address_of_num n in - let s_64 = Memory.address_of_num s in - let d_64 = Memory.address_of_num d in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in + let d_64 = addr_of_num d in if mem_oob c.frame x d n || mem_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else if I64.le_u d_64 s_64 then vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); Plain (Load (y, {ty = I32T; align = 0; offset = 0L; pack = Some (Pack8, ZX)})); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryCopy (x, y)); ] else (* d > s *) let n' = I64.sub n_64 1L in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 (I64.add d_64 n') @@ e.at)); - Plain (Const (I64 (I64.add s_64 n') @@ e.at)); + Plain (Const (addr_add d n' @@ e.at)); + Plain (Const (addr_add s n' @@ e.at)); Plain (Load (y, {ty = I32T; align = 0; offset = 0L; pack = Some (Pack8, ZX)})); Plain (Store (x, {ty = I32T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 s_64 @@ e.at)); - Plain (Const (I64 n' @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (s @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryCopy (x, y)); ] | MemoryInit (x, y), Num n :: Num s :: Num d :: vs' -> - let n_64 = Memory.address_of_num n in + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if mem_oob c.frame x d n || data_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else if n_64 = 0L then vs', [] else let seg = data c.frame.inst y in - let s_64 = Memory.address_of_num s in - let d_64 = Memory.address_of_num d in let b = Data.load_byte seg s_64 in vs', List.map (Lib.Fun.flip (@@) e.at) [ - Plain (Const (I64 d_64 @@ e.at)); - Plain (Const (I64 (I64.of_int_u (Char.code b)) @@ e.at)); + Plain (Const (d @@ e.at)); + Plain (Const (I32 (I32.of_int_u (Char.code b)) @@ e.at)); Plain (Store (x, {ty = I64T; align = 0; offset = 0L; pack = Some Pack8})); - Plain (Const (I64 (I64.add d_64 1L) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add d 1L @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); + Plain (Const (addr_sub n 1L @@ e.at)); Plain (MemoryInit (x, y)); ] @@ -748,12 +727,14 @@ let rec step (c : config) : config = in Ref (Aggr.ArrayRef array) :: vs'', [] | ArrayNewElem (x, y), Num n :: Num s :: vs' -> + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if elem_oob c.frame y s n then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else let seg = elem c.frame.inst y in - let s_64 = Table.index_of_num s in - let rs = Lib.List64.init (Table.index_of_num n) (fun i -> Elem.load seg (Int64.add s_64 i)) in + let rs = Lib.List64.init n_64 + (fun i -> Elem.load seg (Int64.add s_64 i)) in let args = List.map (fun r -> Ref r) rs in let array = try Aggr.alloc_array (type_ c.frame.inst x) args @@ -761,14 +742,16 @@ let rec step (c : config) : config = in Ref (Aggr.ArrayRef array) :: vs', [] | ArrayNewData (x, y), Num n :: Num s :: vs' -> + let n_64 = addr_of_num n in + let s_64 = addr_of_num s in if data_oob c.frame y s n then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] else let ArrayT (FieldT (_mut, st)) = array_type c.frame.inst x in let seg = data c.frame.inst y in - let args = Lib.List64.init (Memory.address_of_num n) + let args = Lib.List64.init n_64 (fun i -> - let a = I64.(add (Memory.address_of_num s) (mul i (I64.of_int_u (storage_size st)))) in + let a = I64.(add s_64 (mul i (I64.of_int_u (storage_size st)))) in Data.load_val_storage seg a st ) in @@ -884,18 +867,17 @@ let rec step (c : config) : config = vs', [Trapping "null array reference" @@ e.at] | ArrayInitData (x, y), - Num n :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> - let n_64 = Memory.address_of_num n in - if array_oob2 a d n then + Num (I32 n) :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> + let s_64 = addr_of_num s in + if array_oob a d n then vs', [Trapping "out of bounds array access" @@ e.at] - else if data_oob c.frame y s n then + else if data_oob c.frame y s (I64 (I64_convert.extend_i32_u n)) then vs', [Trapping (memory_error e.at Memory.Bounds) @@ e.at] - else if n_64 = 0L then + else if n = 0l then vs', [] else let ArrayT (FieldT (_mut, st)) = array_type c.frame.inst x in let seg = data c.frame.inst y in - let s_64 = Memory.address_of_num s in let v = Data.load_val_storage seg s_64 st in vs', List.map (Lib.Fun.flip (@@) e.at) [ Refer (Aggr.ArrayRef a); @@ -904,8 +886,8 @@ let rec step (c : config) : config = Plain (ArraySet x); Refer (Aggr.ArrayRef a); Plain (Const (I32 (I32.add d 1l) @@ e.at)); - Plain (Const (I64 (I64.add s_64 (I64.of_int_u (storage_size st))) @@ e.at)); - Plain (Const (I64 (I64.sub n_64 1L) @@ e.at)); + Plain (Const (addr_add s (I64.of_int_u (storage_size st)) @@ e.at)); + Plain (Const (I32 (I32.sub n 1l) @@ e.at)); Plain (ArrayInitData (x, y)); ] @@ -915,15 +897,15 @@ let rec step (c : config) : config = | ArrayInitElem (x, y), Num (I32 n) :: Num s :: Num (I32 d) :: Ref (Aggr.ArrayRef a) :: vs' -> + let s_64 = addr_of_num s in if array_oob a d n then vs', [Trapping "out of bounds array access" @@ e.at] - else if elem_oob2 c.frame y s n then + else if elem_oob c.frame y s (I64 (I64_convert.extend_i32_u n)) then vs', [Trapping (table_error e.at Table.Bounds) @@ e.at] else if n = 0l then vs', [] else let seg = elem c.frame.inst y in - let s_64 = Table.index_of_num s in let v = Ref (Elem.load seg s_64) in vs', List.map (Lib.Fun.flip (@@) e.at) [ Refer (Aggr.ArrayRef a); @@ -932,7 +914,7 @@ let rec step (c : config) : config = Plain (ArraySet x); Refer (Aggr.ArrayRef a); Plain (Const (I32 (I32.add d 1l) @@ e.at)); - Plain (Const (I64 (I64.add s_64 1L) @@ e.at)); + Plain (Const (addr_add s 1L @@ e.at)); Plain (Const (I32 (I32.sub n 1l) @@ e.at)); Plain (ArrayInitElem (x, y)); ] diff --git a/interpreter/host/spectest.ml b/interpreter/host/spectest.ml index aaf8f0665..8d6c039bf 100644 --- a/interpreter/host/spectest.ml +++ b/interpreter/host/spectest.ml @@ -20,15 +20,15 @@ let global (GlobalT (_, t) as gt) = in ExternGlobal (Global.alloc gt v) let table = - let tt = TableT ({min = 10L; max = Some 20L}, I32AddrType, (Null, FuncHT)) in + let tt = TableT (I32AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let table64 = - let tt = TableT ({min = 10L; max = Some 20L}, I64AddrType, (Null, FuncHT)) in + let tt = TableT (I64AT, {min = 10L; max = Some 20L}, (Null, FuncHT)) in ExternTable (Table.alloc tt (NullRef FuncHT)) let memory = - let mt = MemoryT ({min = 1L; max = Some 2L}, I32AddrType) in + let mt = MemoryT (I32AT, {min = 1L; max = Some 2L}) in ExternMemory (Memory.alloc mt) let func f ft = diff --git a/interpreter/runtime/data.ml b/interpreter/runtime/data.ml index 785dcc608..66c2ad58d 100644 --- a/interpreter/runtime/data.ml +++ b/interpreter/runtime/data.ml @@ -1,6 +1,5 @@ type data = string ref type t = data -type address = Memory.address exception Bounds diff --git a/interpreter/runtime/data.mli b/interpreter/runtime/data.mli index f0074e366..86741d5c0 100644 --- a/interpreter/runtime/data.mli +++ b/interpreter/runtime/data.mli @@ -1,6 +1,7 @@ +open Value + type data type t = data -type address = Memory.address exception Bounds diff --git a/interpreter/runtime/elem.mli b/interpreter/runtime/elem.mli index b9b35a11d..d61442907 100644 --- a/interpreter/runtime/elem.mli +++ b/interpreter/runtime/elem.mli @@ -7,5 +7,5 @@ exception Bounds val alloc : ref_ list -> elem val size : elem -> Table.size -val load : elem -> Table.index -> ref_ (* raises Bounds *) +val load : elem -> address -> ref_ (* raises Bounds *) val drop : elem -> unit diff --git a/interpreter/runtime/memory.ml b/interpreter/runtime/memory.ml index 113a9cd25..3c3742d94 100644 --- a/interpreter/runtime/memory.ml +++ b/interpreter/runtime/memory.ml @@ -4,8 +4,7 @@ open Bigarray open Lib.Bigarray type size = int64 (* number of pages *) -type address = int64 -type offset = int64 +type offset = address type count = int32 type memory' = (int, int8_unsigned_elt, c_layout) Array1.t @@ -25,8 +24,12 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let create n at = - if I64.gt_u n 0x10000L && at = I32AddrType then raise SizeOverflow else +let valid_size at i = + match at with + | I32AT -> I64.le_u i 0xffffL + | I64AT -> true + +let create n = try let size = Int64.(mul n page_size) in let mem = Array1_64.create Int8_unsigned C_layout size in @@ -34,10 +37,11 @@ let create n at = mem with Out_of_memory -> raise OutOfMemory -let alloc (MemoryT (lim, at) as ty) = +let alloc (MemoryT (at, lim) as ty) = assert Free.((memory_type ty).types = Set.empty); + if not (valid_size at lim.min) then raise SizeOverflow; if not (valid_limits lim) then raise Type; - {ty; content = create lim.min at} + {ty; content = create lim.min} let bound mem = Array1_64.dim mem.content @@ -49,31 +53,21 @@ let type_of mem = mem.ty let addr_type_of mem = - let (MemoryT (_, at)) = type_of mem in at - -let address_of_num x = - match x with - | I32 i -> I64_convert.extend_i32_u i - | I64 i -> i - | _ -> raise Type - -let address_of_value x = - match x with - | Num n -> address_of_num n - | _ -> raise Type + let MemoryT (at, _) = type_of mem in at let grow mem delta = - let MemoryT (lim, at) = mem.ty in + let MemoryT (at, lim) = mem.ty in assert (lim.min = size mem); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in + if not (valid_size at new_size) then raise SizeOverflow else if not (valid_limits lim') then raise SizeLimit else - let after = create new_size (addr_type_of mem) in + let after = create new_size in let dim = Array1_64.dim mem.content in Array1.blit (Array1_64.sub mem.content 0L dim) (Array1_64.sub after 0L dim); - mem.ty <- MemoryT (lim', at); + mem.ty <- MemoryT (at, lim'); mem.content <- after let load_byte mem a = diff --git a/interpreter/runtime/memory.mli b/interpreter/runtime/memory.mli index da9f468f8..9f0edc7cd 100644 --- a/interpreter/runtime/memory.mli +++ b/interpreter/runtime/memory.mli @@ -5,8 +5,7 @@ type memory type t = memory type size = int64 (* number of pages *) -type address = int64 -type offset = int64 +type offset = address type count = int32 exception Type @@ -22,8 +21,6 @@ val type_of : memory -> memory_type val addr_type_of : memory -> addr_type val size : memory -> size val bound : memory -> address -val address_of_value : value -> address -val address_of_num : num -> address val grow : memory -> size -> unit (* raises SizeLimit, SizeOverflow, OutOfMemory *) diff --git a/interpreter/runtime/table.ml b/interpreter/runtime/table.ml index b18dbd5df..d87807f4c 100644 --- a/interpreter/runtime/table.ml +++ b/interpreter/runtime/table.ml @@ -1,9 +1,8 @@ open Types open Value -type size = int64 -type index = int64 -type count = int32 +type size = address +type offset = address type table = {mutable ty : table_type; mutable content : ref_ array} type t = table @@ -19,17 +18,18 @@ let valid_limits {min; max} = | None -> true | Some m -> I64.le_u min m -let valid_addr at i = +let valid_size at i = match at with - | I32AddrType -> I64.le_u i 0xffff_ffffL - | I64AddrType -> true + | I32AT -> I64.le_u i 0xffff_ffffL + | I64AT -> true let create size r = try Lib.Array64.make size r with Out_of_memory | Invalid_argument _ -> raise OutOfMemory -let alloc (TableT (lim, at, t) as ty) r = +let alloc (TableT (at, lim, t) as ty) r = assert Free.((ref_type t).types = Set.empty); + if not (valid_size at lim.min) then raise SizeOverflow; if not (valid_limits lim) then raise Type; {ty; content = create lim.min r} @@ -40,26 +40,26 @@ let type_of tab = tab.ty let addr_type_of tab = - let (TableT (_, at, _)) = type_of tab in at + let TableT (at, _, _) = type_of tab in at -let index_of_num x = +let addr_of_num x = match x with | I64 i -> i | I32 i -> I64_convert.extend_i32_u i | _ -> raise Type let grow tab delta r = - let TableT (lim, at, t) = tab.ty in + let TableT (at, lim, t) = tab.ty in assert (lim.min = size tab); let old_size = lim.min in let new_size = Int64.add old_size delta in if I64.gt_u old_size new_size then raise SizeOverflow else let lim' = {lim with min = new_size} in - if not (valid_addr at new_size) then raise SizeOverflow else + if not (valid_size at new_size) then raise SizeOverflow else if not (valid_limits lim') then raise SizeLimit else let after = create new_size r in Array.blit tab.content 0 after 0 (Array.length tab.content); - tab.ty <- TableT (lim', at, t); + tab.ty <- TableT (at, lim', t); tab.content <- after let load tab i = @@ -67,7 +67,7 @@ let load tab i = Lib.Array64.get tab.content i let store tab i r = - let TableT (_lim, _at, t) = tab.ty in + let TableT (_at, _lim, t) = tab.ty in if not (Match.match_ref_type [] (type_of_ref r) t) then raise Type; if i < 0L || i >= Lib.Array64.length tab.content then raise Bounds; Lib.Array64.set tab.content i r diff --git a/interpreter/runtime/table.mli b/interpreter/runtime/table.mli index 6ebba6068..53caf5965 100644 --- a/interpreter/runtime/table.mli +++ b/interpreter/runtime/table.mli @@ -4,9 +4,8 @@ open Value type table type t = table -type size = int64 -type index = int64 -type count = int32 +type size = address +type offset = address exception Type exception Bounds @@ -18,10 +17,10 @@ val alloc : table_type -> ref_ -> table (* raises Type, OutOfMemory *) val type_of : table -> table_type val addr_type_of : table -> addr_type val size : table -> size -val index_of_num : num -> index +val addr_of_num : num -> address val grow : table -> size -> ref_ -> unit (* raises SizeOverflow, SizeLimit, OutOfMemory *) -val load : table -> index -> ref_ (* raises Bounds *) -val store : table -> index -> ref_ -> unit (* raises Type, Bounds *) -val blit : table -> index -> ref_ list -> unit (* raises Bounds *) +val load : table -> address -> ref_ (* raises Bounds *) +val store : table -> address -> ref_ -> unit (* raises Type, Bounds *) +val blit : table -> address -> ref_ list -> unit (* raises Bounds *) diff --git a/interpreter/runtime/value.ml b/interpreter/runtime/value.ml index 5381b67f1..75c5cd2c9 100644 --- a/interpreter/runtime/value.ml +++ b/interpreter/runtime/value.ml @@ -19,6 +19,8 @@ type t = value type ref_ += NullRef of heap_type +type address = I64.t + (* Injection & projection *) @@ -281,10 +283,22 @@ let storage_bits_of_val st v = let value_of_bool b = Num (I32 (if b then 1l else 0l)) -let value_of_addr at x = +let num_of_addr at i = match at with - | I64AddrType -> Num (I64 x) - | I32AddrType -> Num (I32 (Int64.to_int32 x)) + | I64AT -> I64 i + | I32AT -> I32 (I32_convert.wrap_i64 i) + +let addr_of_num x = + match x with + | I32 i -> I64_convert.extend_i32_u i + | I64 i -> i + | _ -> raise Type + +let addr_add n i = + num_of_addr (addr_type_of_num_type (type_of_num n)) (I64.add (addr_of_num n) i) +let addr_sub n i = + num_of_addr (addr_type_of_num_type (type_of_num n)) (I64.sub (addr_of_num n) i) + let string_of_num = function | I32 i -> I32.to_string_s i diff --git a/interpreter/syntax/free.ml b/interpreter/syntax/free.ml index efbbd58da..37ab763fe 100644 --- a/interpreter/syntax/free.ml +++ b/interpreter/syntax/free.ml @@ -121,8 +121,8 @@ let def_type = function | DefT (rt, _i) -> rec_type rt let global_type (GlobalT (_mut, t)) = val_type t -let table_type (TableT (_lim, _at, t)) = ref_type t -let memory_type (MemoryT (_lim, _at)) = empty +let table_type (TableT (_at, _lim, t)) = ref_type t +let memory_type (MemoryT (_at, _lim)) = empty let tag_type (TagT dt) = def_type dt let extern_type = function diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index 2f9879ef8..b6e65a360 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -15,6 +15,10 @@ let v128_const n = VecConst (V128 n.it @@ n.at) let ref_null t = RefNull t let ref_func x = RefFunc x +let at_const = function + | I32AT -> fun n -> i32_const (I32_convert.wrap_i64 n.it @@ n.at) + | I64AT -> i64_const + let unreachable = Unreachable let nop = Nop let drop = Drop diff --git a/interpreter/syntax/types.ml b/interpreter/syntax/types.ml index fb5246445..f6a7fe245 100644 --- a/interpreter/syntax/types.ml +++ b/interpreter/syntax/types.ml @@ -12,6 +12,7 @@ type 'a limits = {min : 'a; max : 'a option} type var = StatX of type_idx | RecX of int32 +type addr_type = I32AT | I64AT type num_type = I32T | I64T | F32T | F64T type vec_type = V128T type heap_type = @@ -25,7 +26,6 @@ type heap_type = and ref_type = null * heap_type and val_type = NumT of num_type | VecT of vec_type | RefT of ref_type | BotT -and addr_type = I32AddrType | I64AddrType and result_type = val_type list and instr_type = InstrT of result_type * result_type * local_idx list @@ -45,8 +45,8 @@ and sub_type = SubT of final * heap_type list * str_type and rec_type = RecT of sub_type list and def_type = DefT of rec_type * int32 -type table_type = TableT of Int64.t limits * addr_type * ref_type -type memory_type = MemoryT of Int64.t limits * addr_type +type table_type = TableT of addr_type * Int64.t limits * ref_type +type memory_type = MemoryT of addr_type * Int64.t limits type global_type = GlobalT of mut * val_type type tag_type = TagT of def_type type local_type = LocalT of init * val_type @@ -111,7 +111,17 @@ let defaultable = function | BotT -> assert false -(* Projections *) +(* Conversions & Projections *) + +let num_type_of_addr_type = function + | I32AT -> I32T + | I64AT -> I64T + +let addr_type_of_num_type = function + | I32T -> I32AT + | I64T -> I64AT + | _ -> assert false + let unpacked_storage_type = function | ValStorageT t -> t @@ -147,11 +157,6 @@ let memories = List.filter_map (function ExternMemoryT mt -> Some mt | _ -> None let globals = List.filter_map (function ExternGlobalT gt -> Some gt | _ -> None) let tags = List.filter_map (function ExternTagT tt -> Some tt | _ -> None) -let num_type_of_addr_type = function - | I32AddrType -> I32T - | I64AddrType -> I64T - -let value_type_of_addr_type t = NumT (num_type_of_addr_type t) (* Substitution *) @@ -161,6 +166,8 @@ let subst_of dts = function | StatX x -> DefHT (Lib.List32.nth dts x) | RecX i -> VarHT (RecX i) +let subst_addr_type s t = t + let subst_num_type s t = t let subst_vec_type s t = t @@ -228,10 +235,10 @@ let subst_def_type s = function let subst_memory_type s = function - | MemoryT (lim, at) -> MemoryT (lim, at) + | MemoryT (at, lim) -> MemoryT (subst_addr_type s at, lim) let subst_table_type s = function - | TableT (lim, at, t) -> TableT (lim, at, subst_ref_type s t) + | TableT (at, lim, t) -> TableT (subst_addr_type s at, lim, subst_ref_type s t) let subst_global_type s = function | GlobalT (mut, t) -> GlobalT (mut, subst_val_type s t) @@ -294,6 +301,7 @@ let expand_def_type (dt : def_type) : str_type = let SubT (_, _, st) = unroll_def_type dt in st + (* String conversion *) let string_of_idx x = @@ -336,6 +344,9 @@ let string_of_num_type = function | F32T -> "f32" | F64T -> "f64" +let string_of_addr_type at = + string_of_num_type (num_type_of_addr_type at) + let string_of_vec_type = function | V128T -> "v128" @@ -365,9 +376,6 @@ and string_of_val_type = function | RefT t -> string_of_ref_type t | BotT -> "bot" -and string_of_addr_type t = - string_of_val_type (value_type_of_addr_type t) - and string_of_result_type = function | ts -> "[" ^ String.concat " " (List.map string_of_val_type ts) ^ "]" @@ -418,10 +426,10 @@ let string_of_limits = function (match max with None -> "" | Some n -> " " ^ I64.to_string_u n) let string_of_memory_type = function - | MemoryT (lim, at) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim + | MemoryT (at, lim) -> string_of_addr_type at ^ " " ^ string_of_limits lim let string_of_table_type = function - | TableT (lim, at, t) -> string_of_num_type (num_type_of_addr_type at) ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t + | TableT (at, lim, t) -> string_of_addr_type at ^ " " ^ string_of_limits lim ^ " " ^ string_of_ref_type t let string_of_global_type = function | GlobalT (mut, t) -> string_of_mut (string_of_val_type t) mut diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 6f7eccdaa..76c987f94 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -64,6 +64,7 @@ let mutability node = function | Cons -> node | Var -> Node ("mut", [node]) +let addr_type t = string_of_addr_type t let num_type t = string_of_num_type t let vec_type t = string_of_vec_type t let ref_type t = @@ -77,7 +78,6 @@ let ref_type t = | (Null, ExnHT) -> "exnref" | t -> string_of_ref_type t -let addr_type t = string_of_val_type (value_type_of_addr_type t) let heap_type t = string_of_heap_type t let val_type t = string_of_val_type t let storage_type t = string_of_storage_type t @@ -657,13 +657,13 @@ let tag off i tag = ) let table off i tab = - let {ttype = TableT (lim, at, t); tinit} = tab.it in + let {ttype = TableT (at, lim, t); tinit} = tab.it in Node ("table $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, atom ref_type t :: list instr tinit.it ) let memory off i mem = - let {mtype = MemoryT (lim, at)} = mem.it in + let {mtype = MemoryT (at, lim)} = mem.it in Node ("memory $" ^ nat (off + i) ^ " " ^ addr_type at ^ " " ^ limits nat64 lim, []) let is_elem_kind = function diff --git a/interpreter/text/parser.mly b/interpreter/text/parser.mly index df2ec4057..1fbeeeccc 100644 --- a/interpreter/text/parser.mly +++ b/interpreter/text/parser.mly @@ -264,39 +264,6 @@ let inline_func_type_explicit (c : context) x ft loc = error (at loc) "inline function type does not match explicit type"; x -let addr_type_of_num_type t loc = - match t with - | I32T -> I32AddrType - | I64T -> I64AddrType - | _ -> error (at loc) "illegal address type" - -let addr_type_of_value_type t loc = - match t with - | NumT t -> addr_type_of_num_type t loc - | _ -> error (at loc) "illegal address type" - -let memory_data init at c x loc = - let size = Int64.(div (add (of_int (String.length init)) 65535L) 65536L) in - let instr = match at with - | I32AddrType -> i32_const (0l @@ loc) - | I64AddrType -> i64_const (0L @@ loc) in - let offset = [instr @@ loc] @@ loc in - [{mtype = MemoryT ({min = size; max = Some size}, at)} @@ loc], - [{dinit = init; dmode = Active {index = x; offset} @@ loc} @@ loc], - [], [] - -let table_data tinit init at etype c x loc = - let instr = match at with - | I32AddrType -> i32_const (0l @@ loc) - | I64AddrType -> i64_const (0L @@ loc) in - let offset = [instr @@ loc] @@ loc in - let einit = init c in - let size = Lib.List32.length einit in - let size64 = Int64.of_int32 size in - let emode = Active {index = x; offset} @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, at, etype); tinit} @@ loc], - [{etype; einit; emode} @@ loc], - [], [] (* Custom annotations *) @@ -397,6 +364,14 @@ string_list : /* Types */ +%inline addr_type : + | NUM_TYPE + { match $1 with + | I32T -> I32AT + | I64T -> I64AT + | _ -> error (at $sloc) "malformed address type" } + | /* empty */ { I32AT } /* Sugar */ + null_opt : | /* empty */ { NoNull } | NULL { Null } @@ -501,12 +476,10 @@ sub_type : List.map (fun y -> VarHT (StatX y.it)) ($4 c type_), $5 c x) } table_type : - | val_type limits ref_type { fun c -> TableT ($2, addr_type_of_value_type ($1 c) $sloc, $3 c) } - | limits ref_type { fun c -> TableT ($1, I32AddrType, $2 c) } + | addr_type limits ref_type { fun c -> TableT ($1, $2, $3 c) } memory_type : - | val_type limits { fun c -> MemoryT ($2, addr_type_of_value_type ($1 c) $sloc) } - | limits { fun c -> MemoryT ($1, I32AddrType) } + | addr_type limits { fun c -> MemoryT ($1, $2) } limits : | NAT { {min = nat64 $1 $loc($1); max = None} } @@ -1156,28 +1129,28 @@ table_fields : | inline_export table_fields /* Sugar */ { fun c x loc -> let tabs, elems, ims, exs = $2 c x loc in tabs, elems, ims, $1 (TableExport x) c :: exs } - | ref_type LPAR ELEM elem_expr elem_expr_list RPAR /* Sugar */ + | addr_type ref_type LPAR ELEM elem_expr elem_expr_list RPAR /* Sugar */ { fun c x loc -> - let offset = [i32_const (0l @@ loc) @@ loc] @@ loc in - let einit = $4 c :: $5 c in - let size = Lib.List32.length einit in - let size64 = Int64.of_int32 size in + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + let einit = $5 c :: $6 c in + let size = Lib.List64.length einit in let emode = Active {index = x; offset} @@ loc in - let (_, ht) as etype = $1 c in + let (_, ht) as etype = $2 c in let tinit = [RefNull ht @@ loc] @@ loc in - [{ttype = TableT ({min = size64; max = Some size64}, I32AddrType, etype); tinit} @@ loc], + [{ttype = TableT ($1, {min = size; max = Some size}, etype); tinit} @@ loc], [{etype; einit; emode} @@ loc], [], [] } - | ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ - { fun c x loc -> - let (_, ht) as etype = $1 c in - let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $4 I32AddrType etype c x loc } - | val_type ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ + | addr_type ref_type LPAR ELEM elem_var_list RPAR /* Sugar */ { fun c x loc -> let (_, ht) as etype = $2 c in let tinit = [RefNull ht @@ loc] @@ loc in - table_data tinit $5 (addr_type_of_value_type ($1 c) loc) etype c x loc } + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + let einit = $5 c in + let size = Lib.List64.length einit in + let emode = Active {index = x; offset} @@ loc in + [{ttype = TableT ($1, {min = size; max = Some size}, etype); tinit} @@ loc], + [{etype; einit; emode} @@ loc], + [], [] } data : | LPAR DATA bind_var_opt string_list RPAR @@ -1208,10 +1181,13 @@ memory_fields : | inline_export memory_fields /* Sugar */ { fun c x loc -> let mems, data, ims, exs = $2 c x loc in mems, data, ims, $1 (MemoryExport x) c :: exs } - | LPAR DATA string_list RPAR /* Sugar */ - { memory_data $3 I32AddrType } - | val_type LPAR DATA string_list RPAR /* Sugar */ - { fun c x loc -> memory_data $4 (addr_type_of_value_type ($1 c) $sloc) c x loc } + | addr_type LPAR DATA string_list RPAR /* Sugar */ + { fun c x loc -> + let size = Int64.(div (add (of_int (String.length $4)) 65535L) 65536L) in + let offset = [at_const $1 (0L @@ loc) @@ loc] @@ loc in + [{mtype = MemoryT ($1, {min = size; max = Some size})} @@ loc], + [{dinit = $4; dmode = Active {index = x; offset} @@ loc} @@ loc], + [], [] } tag : | LPAR TAG bind_var_opt tag_fields RPAR diff --git a/interpreter/valid/match.ml b/interpreter/valid/match.ml index b2cc26630..7d889b899 100644 --- a/interpreter/valid/match.ml +++ b/interpreter/valid/match.ml @@ -161,11 +161,12 @@ let match_global_type c (GlobalT (mut1, t1)) (GlobalT (mut2, t2)) = | Cons -> true | Var -> match_val_type c t2 t1 -let match_table_type c (TableT (lim1, at1, t1)) (TableT (lim2, at2, t2)) = - match_limits c lim1 lim2 && at1 = at2 && match_ref_type c t1 t2 && match_ref_type c t2 t1 +let match_table_type c (TableT (at1, lim1, t1)) (TableT (at2, lim2, t2)) = + at1 = at2 && match_limits c lim1 lim2 && + match_ref_type c t1 t2 && match_ref_type c t2 t1 -let match_memory_type c (MemoryT (lim1, at1)) (MemoryT (lim2, at2)) = - match_limits c lim1 lim2 && at1 = at2 +let match_memory_type c (MemoryT (at1, lim1)) (MemoryT (at2, lim2)) = + at1 = at2 && match_limits c lim1 lim2 let match_tag_type c (TagT dt1) (TagT dt2) = match_def_type c dt1 dt2 && match_def_type c dt2 dt1 diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 6fc75ace7..ba4e8bb55 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -89,13 +89,13 @@ let refer_func (c : context) x = refer "function" c.refs.Free.funcs x (* Types *) -let check_limits le_u {min; max} range at msg = - require (le_u min range) at msg; +let check_limits {min; max} range at msg = + require (I64.le_u min range) at msg; match max with | None -> () | Some max -> - require (le_u max range) at msg; - require (le_u min max) at + require (I64.le_u max range) at msg; + require (I64.le_u min max) at "size minimum must not be greater than maximum" let check_num_type (c : context) (t : num_type) at = @@ -151,30 +151,29 @@ let check_func_type (c : context) (ft : func_type) at = check_result_type c ts2 at let check_table_type (c : context) (tt : table_type) at = - let TableT (lim, _at, t) = tt in + let TableT (at_, lim, t) = tt in check_ref_type c t at; - match _at with - | I64AddrType -> - check_limits I64.le_u lim 0xffff_ffff_ffff_ffffL at - "table size must be at most 2^64-1" - | I32AddrType -> - check_limits I64.le_u lim 0xffff_ffffL at - "table size must be at most 2^32-1" + let sz, s = + match at_ with + | I32AT -> 0xffff_ffffL, "2^32-1 for i32" + | I64AT -> 0xffff_ffff_ffff_ffffL, "2^64-1 for i64" + in + check_limits lim sz at ("table size must be at most " ^ s) let check_memory_type (c : context) (mt : memory_type) at = - let MemoryT (lim, _at) = mt in - match _at with - | I32AddrType -> - check_limits I64.le_u lim 0x1_0000L at - "memory size must be at most 65536 pages (4GiB)" - | I64AddrType -> - check_limits I64.le_u lim 0x1_0000_0000_0000L at - "memory size must be at most 48 bits of pages" + let MemoryT (at_, lim) = mt in + let sz, s = + match at_ with + | I32AT -> 0x1_0000L, "2^16 pages (4 GiB) for i32" + | I64AT -> 0x1_0000_0000_0000L, "2^48 pages (256 TiB) for i64" + in + check_limits lim sz at ("memory size must be at most " ^ s) let check_global_type (c : context) (gt : global_type) at = let GlobalT (_mut, t) = gt in check_val_type c t at + let check_str_type (c : context) (st : str_type) at = match st with | DefStructT st -> check_struct_type c st at @@ -370,8 +369,8 @@ let check_memop (c : context) (memop : ('t, 's) memop) ty_size get_sz at = in require (1 lsl memop.align >= 1 && 1 lsl memop.align <= size) at "alignment must not be larger than natural"; - let MemoryT (_lim, _at) = memory c (0l @@ at) in - if _at = I32AddrType then + let MemoryT (at_, _lim) = memory c (0l @@ at) in + if at_ = I32AT then require (I64.lt_u memop.offset 0x1_0000_0000L) at "offset out of range"; memop.ty @@ -518,12 +517,12 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) --> ts2, [] | CallIndirect (x, y) -> - let TableT (lim, at, t) = table c x in + let TableT (at, _lim, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_ref_type c.types t (Null, FuncHT)) x.at ("type mismatch: instruction requires table of function type" ^ " but table has element type " ^ string_of_ref_type t); - (ts1 @ [value_type_of_addr_type at]) --> ts2, [] + (ts1 @ [NumT (num_type_of_addr_type at)]) --> ts2, [] | ReturnCall x -> let FuncT (ts1, ts2) = as_func_str_type (expand_def_type (func c x)) in @@ -542,13 +541,13 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in (ts1 @ [RefT (Null, DefHT (type_ c x))]) -->... [], [] | ReturnCallIndirect (x, y) -> - let TableT (_lim, at, t) = table c x in + let TableT (at, _lim, t) = table c x in let FuncT (ts1, ts2) = func_type c y in require (match_result_type c.types ts2 c.results) e.at ("type mismatch: current function requires result type " ^ string_of_result_type c.results ^ " but callee returns " ^ string_of_result_type ts2); - (ts1 @ [value_type_of_addr_type at]) -->... [], [] + (ts1 @ [NumT (num_type_of_addr_type at)]) -->... [], [] | Throw x -> let TagT dt = tag c x in @@ -588,102 +587,105 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : infer_in [t] --> [], [] | TableGet x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at] --> [RefT rt], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at)] --> [RefT rt], [] | TableSet x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at; RefT rt] --> [], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at); RefT rt] --> [], [] | TableSize x -> - let TableT (_lim, at, _rt) = table c x in - [] --> [value_type_of_addr_type at], [] + let TableT (at, _lim, _rt) = table c x in + [] --> [NumT (num_type_of_addr_type at)], [] | TableGrow x -> - let TableT (_lim, at, rt) = table c x in - [RefT rt; value_type_of_addr_type at] --> [value_type_of_addr_type at], [] + let TableT (at, _lim, rt) = table c x in + [RefT rt; NumT (num_type_of_addr_type at)] --> + [NumT (num_type_of_addr_type at)], [] | TableFill x -> - let TableT (_lim, at, rt) = table c x in - [value_type_of_addr_type at; RefT rt; value_type_of_addr_type at] --> [], [] + let TableT (at, _lim, rt) = table c x in + [NumT (num_type_of_addr_type at); RefT rt; + NumT (num_type_of_addr_type at)] --> [], [] | TableCopy (x, y) -> - let TableT (_lim1, at1, t1) = table c x in - let TableT (_lim2, at2, t2) = table c y in - let at_min = min at1 at2 in + let TableT (at1, _lim1, t1) = table c x in + let TableT (at2, _lim2, t2) = table c y in require (match_ref_type c.types t2 t1) x.at ("type mismatch: source element type " ^ string_of_ref_type t1 ^ " does not match destination element type " ^ string_of_ref_type t2); - [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] + [NumT (num_type_of_addr_type at1); NumT (num_type_of_addr_type at2); + NumT (num_type_of_addr_type (min at1 at2))] --> [], [] | TableInit (x, y) -> - let TableT (_lim1, at, t1) = table c x in + let TableT (at, _lim1, t1) = table c x in let t2 = elem c y in require (match_ref_type c.types t2 t1) x.at ("type mismatch: element segment's type " ^ string_of_ref_type t1 ^ " does not match table's element type " ^ string_of_ref_type t2); - [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] + [NumT (num_type_of_addr_type at); NumT I32T; NumT I32T] --> [], [] | ElemDrop x -> ignore (elem c x); [] --> [], [] | Load (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop num_size (Lib.Option.map fst) e.at in - [value_type_of_addr_type at] --> [NumT t], [] + [NumT (num_type_of_addr_type at)] --> [NumT t], [] | Store (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop num_size (fun sz -> sz) e.at in - [value_type_of_addr_type at; NumT t] --> [], [] + [NumT (num_type_of_addr_type at); NumT t] --> [], [] | VecLoad (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (Lib.Option.map fst) e.at in - [value_type_of_addr_type at] --> [VecT t], [] + [NumT (num_type_of_addr_type at)] --> [VecT t], [] | VecStore (x, memop) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun _ -> None) e.at in - [value_type_of_addr_type at; VecT t] --> [], [] + [NumT (num_type_of_addr_type at); VecT t] --> [], [] | VecLoadLane (x, memop, i) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_addr_type at; VecT t] --> [VecT t], [] + [NumT (num_type_of_addr_type at); VecT t] --> [VecT t], [] | VecStoreLane (x, memop, i) -> - let MemoryT (_lim, at) = memory c x in + let MemoryT (at, _lim) = memory c x in let t = check_memop c memop vec_size (fun sz -> Some sz) e.at in require (i < vec_size t / Pack.packed_size memop.pack) e.at "invalid lane index"; - [value_type_of_addr_type at; VecT t] --> [], [] + [NumT (num_type_of_addr_type at); VecT t] --> [], [] | MemorySize x -> - let MemoryT (_lim, at) = memory c x in - [] --> [value_type_of_addr_type at], [] + let MemoryT (at, _lim) = memory c x in + [] --> [NumT (num_type_of_addr_type at)], [] | MemoryGrow x -> - let MemoryT (_lim, at) = memory c x in - [value_type_of_addr_type at] --> [value_type_of_addr_type at], [] + let MemoryT (at, _lim) = memory c x in + [NumT (num_type_of_addr_type at)] --> [NumT (num_type_of_addr_type at)], [] | MemoryFill x -> - let MemoryT (_lim, at) = memory c x in - [value_type_of_addr_type at; NumT I32T; value_type_of_addr_type at] --> [], [] + let MemoryT (at, _lim) = memory c x in + [NumT (num_type_of_addr_type at); NumT I32T; + NumT (num_type_of_addr_type at)] --> [], [] | MemoryCopy (x, y)-> - let MemoryT (_lib1, at1) = memory c x in - let MemoryT (_lib2, at2) = memory c y in - let at_min = min at1 at2 in - [value_type_of_addr_type at1; value_type_of_addr_type at2; value_type_of_addr_type at_min] --> [], [] + let MemoryT (at1, _lib1) = memory c x in + let MemoryT (at2, _lib2) = memory c y in + [NumT (num_type_of_addr_type at1); NumT (num_type_of_addr_type at2); + NumT (num_type_of_addr_type (min at1 at2))] --> [], [] | MemoryInit (x, y) -> - let MemoryT (_lib, at) = memory c x in + let MemoryT (at, _lib) = memory c x in let () = data c y in - [value_type_of_addr_type at; NumT I32T; NumT I32T] --> [], [] + [NumT (num_type_of_addr_type at); NumT I32T; NumT I32T] --> [], [] | DataDrop x -> let () = data c x in @@ -1029,7 +1031,7 @@ let check_global (c : context) (glob : global) : context = let check_table (c : context) (tab : table) : context = let {ttype; tinit} = tab.it in - let TableT (_lim, _at, rt) = ttype in + let TableT (_at, _lim, rt) = ttype in check_table_type c ttype tab.at; check_const c tinit (RefT rt); {c with tables = c.tables @ [ttype]} @@ -1048,11 +1050,11 @@ let check_elem_mode (c : context) (t : ref_type) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let TableT (_lim, at, et) = table c index in + let TableT (at, _lim, et) = table c index in require (match_ref_type c.types t et) mode.at ("type mismatch: element segment's type " ^ string_of_ref_type t ^ " does not match table's element type " ^ string_of_ref_type et); - check_const c offset (value_type_of_addr_type at) + check_const c offset (NumT (num_type_of_addr_type at)) | Declarative -> () let check_elem (c : context) (seg : elem_segment) : context = @@ -1066,8 +1068,8 @@ let check_data_mode (c : context) (mode : segment_mode) = match mode.it with | Passive -> () | Active {index; offset} -> - let MemoryT (_, at) = memory c index in - check_const c offset (value_type_of_addr_type at) + let MemoryT (at, _) = memory c index in + check_const c offset (NumT (num_type_of_addr_type at)) | Declarative -> assert false let check_data (c : context) (seg : data_segment) : context = diff --git a/test/core/memory.wast b/test/core/memory.wast index 1c57a8f35..e01170a8f 100644 --- a/test/core/memory.wast +++ b/test/core/memory.wast @@ -50,40 +50,53 @@ ) (assert_invalid (module (memory 65537)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 2147483648)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 4294967295)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 65537)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 2147483648)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid (module (memory 0 4294967295)) - "memory size must be at most 65536 pages (4GiB)" + "memory size" ) (assert_invalid - (module quote "(memory 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0x1_0000_0000)) + "memory size" ) (assert_invalid - (module quote "(memory 0x1_0000_0000 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0x1_0000_0000 0x1_0000_0000)) + "memory size" ) (assert_invalid - (module quote "(memory 0 0x1_0000_0000)") - "memory size must be at most 65536 pages (4GiB)" + (module (memory 0 0x1_0000_0000)) + "memory size" +) + +(assert_invalid + (module (memory (import "M" "m") 0x1_0000_0000)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") 0x1_0000_0000 0x1_0000_0000)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") 0 0x1_0000_0000)) + "memory size" ) (module diff --git a/test/core/memory64.wast b/test/core/memory64.wast index 41e1bf034..ba3b24233 100644 --- a/test/core/memory64.wast +++ b/test/core/memory64.wast @@ -48,6 +48,24 @@ "size minimum must not be greater than maximum" ) +(assert_invalid + (module (memory i64 0x1_0000_0000_0001)) + "memory size" +) +(assert_invalid + (module (memory i64 0 0x1_0000_0000_0001)) + "memory size" +) + +(assert_invalid + (module (memory (import "M" "m") i64 0x1_0000_0000_0001)) + "memory size" +) +(assert_invalid + (module (memory (import "M" "m") i64 0 0x1_0000_0000_0001)) + "memory size" +) + (module (memory i64 1) (data (i64.const 0) "ABC\a7D") (data (i64.const 20) "WASM") diff --git a/test/core/table.wast b/test/core/table.wast index 8648df070..a0feefff9 100644 --- a/test/core/table.wast +++ b/test/core/table.wast @@ -33,15 +33,15 @@ (assert_invalid (module quote "(table 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) (assert_invalid (module quote "(table 0x1_0000_0000 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) (assert_invalid (module quote "(table 0 0x1_0000_0000 funcref)") - "table size must be at most 2^32-1" + "table size" ) ;; Same as above but with i64 address types From 0d9b98500ae9726542fd23c39f6647ce849569bd Mon Sep 17 00:00:00 2001 From: Andreas Rossberg Date: Thu, 7 Nov 2024 09:08:21 +0100 Subject: [PATCH 218/230] Update draft PDF --- .../versions/core/WebAssembly-3.0-draft.pdf | Bin 2201962 -> 2274501 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/document/versions/core/WebAssembly-3.0-draft.pdf b/document/versions/core/WebAssembly-3.0-draft.pdf index 3141db529135d383188760cf0e13d9d2b6ce1a6e..1909a6257fd14296adbe2378d41bf2d18d170a5a 100644 GIT binary patch delta 1790113 zcmYhiQ;;r9uq-;ZZQHhOt+8#}-;_wr$%y|2`+;?)%X7)D`{E5m{APnHLRV zz{BTJz;(NzX~I5OGyu(Udt6DR?nl}SOUQ^N*=GnWh(s=B5HcAgT!C{D<-c@7B;X7( zU$0)`ec~L;ti^Jfkk4#kthGBT+pMILVI*FnkyZ6?q?i0!vNKFt6r)_&V~4Zm5B&-B zM=lhn5qel$io|;jQU!aZV$3{&(V3yo6I4vX%mxVCkiyjj#5NjEH^fR^MM{DW$oAm?+L2XZ z5KRt?E+LE-1%XHx+TJiBf)j&F!5LmZTNKT4g9MY&eL(azIP~#i;D8jrBYJw6HM{2_24$vGiVF4_r-lN$LF(#gvv<1I_ z1i5bND4|~m*@1*LXe2iWMr$1Lw>znej)IAxAGvW!#Ci&a+4zviHy$@!EkY=k10kM< z;()dA5X>Q-kpi3xX&k$Qe&O)%84|Z}xoPZ*wpRpDa6*k}P(Ke@Fj#Qtti#USyAMxq zx_|n@JAl`l{e#U{_pgP;3wyU8uczDbpCN+|mXR-tL9wt9iZwE4?hXN1g@ZVJus5(-<$kf?df{6jdJzIwNZ@Kb#U5z$Y);_T)_>vTSjbw^O8q_q8_^4nubgA z=H~bndbXPu0AW_{g{{GkTurws;{}CZ`FEBbj(f#1Mvi=UlE`2`;Zpf8+O@ug4MAR< z0-&@W+_$PVAhdAWy{f=m(Z9;0)$G=I>uAL`l5jb6n1N{c<7VofI`bbj;4*`C<+QJD zb)NobpY02G`YxJ+(~fOj?AW*VbG+%tt^QBWYnk%ssO2+GL&Bt4cf!?r!OvdEXR6uY z9%4s4!K;2kPcsRln_BIY{%ZHPS*^ElJ3wAzftqK~!(JyR$0@(c7e^~*4WPDF(C`Dp zj4O`w@4}(`JFf$GBt|0_w3@E0o~3KA-#wj#qf8m?(>d#3p-;7=W>#^mj@ey)RoOG=hA<5$A#7=FMvDO1>TzDI+K#)auSL;d zmHoAs!TfeX$6|;zuA9F`aX8Ni{~pe4u;2ybh}Ea;A+5=N>}qU557idoKTwfTi|vo; z=Z>8k#460s;%$NgA(P%OtzJaTXA?K)x~A!qA9II8nz&Daq?7JnIZyo)zzO38d|E;W zELxI36g4~x45OTxy@jhK5i<)@niC5oHDFp(-T{{rsrypnE*-60-Z_j=2aI~7R35fT zSh=%(iGM8W0;-uzG%@;U_jS7PBno4-lXl%1G4q&#+hNDoF_re8w3V5g5}IS=1XocN z^TZI0#=k0;wgU|#+b(1J#}wm%uH^}oINh9iJ^obRb(hRb&%c3GvxBZGf7Z zr-A~ue4VU5_Mi|*CNpwnRZ2a2X?ij-u0*O9Hbn*u7Fc=X+}}QMjYE1Uu4rL1>lTWD zST`XAf-!_KWzlU=ZsUSyvYqn;aPmLg86eK`Q<7l)BD6rV(X_%_El35i!E%woIB>yY zLIW7hZ7|DJJzAU%%Gu~}M&sJ0g@86Nc%$(kVqiDm$`n**O-*QYXc2OABsmmTsR>r`BuDUyW<-m7qGNbk0m6Hy#|WIofpjks1yO&I zBY74ir{+X{B0z8Ag`5>m07IDVp zrt$m@l5bA&YeXM+5ZYrzlF&e1#}T^7EMw>_Qe*k71K5f=6+lo5u|sC2bM;~%R*o|` zP6(iLWJ>oC!w`(jLO@v9Pk@FvEa6v2i>Hee9{xXN4r!;dZXXien!EZnWl7Vv?OgSg zzQ+2MtF@Ah3_>Wqjs?yBln3fVx5 z=pl@L5pZA91DeP%9Y0=$mRQlbYm_hcd(9H%#z+pyO=%rEKiSYY7nbMil8DPgai%M0 zUH}J+Q`!{c_y^xDNM77P`Nb7jOto3mO41^WciQSJi9lrAxW@@kB!PP(@@itV_P3~W zVMQ#%O3hQD4apPnE+Ba^x0;8bNUd{0_JU7se>wmQ&HD$DIz2jgVj$(i?b7^4!Ufd* z&=$zP0KZ3mD>d?hi~lmrw=P=mc`$-r=Yr?;U7vj0?z!%)Uobusn7V@vq&v*(2~4CE+M%7T~;c33ca`*D#gmsLi7M z_fV#!^m7e3Fd;Dm7~YvSc!ofxE$N@#y7_dwPikKo^@B%qZ<&s3HeZw9AGYwM%dP%@ zcDp0*mv1-sx99g4MpX*lUvtQYbHrA0uD177U7P+2Z%Mw7_~zrUyuu294lmcwvwa@? zP_%n$GD$RVeF3;#vMyP~*EF1XItbG8vN>sgn#!I{Ka^v=0?zOAX3T#408$C--@l^k zv$_T2U+GJu(ARyjTIE54D)W9blit}avsT{jyM+<89l$+Pic`-Aap1Qy96wusT6wXS zfBMq}zt%a(=*aW38pq4ff@0lrz(?YqX4m{vPM=xTcerU@8=EI?syiRw0HZDmtGe_( z{um>{9QQw+?*IPko%a8{#3ybysB)S4W&!@JW*y!Vr2c@*#$sou-9G`NCe_1JA#yWu z|1YkwF{RCqL(?SnazXiCaCZn!@SR0iGP(} zz6)$mM6}08AMsXBkg}qX7&qH-Tf%=6NxbvW=o1e$&bP?OkFJ2YZ1E9NB0gp((w+%v zg|`vhwm4q?h;aGHq%Xmr%u`IrqknDLu5;hW*bn{^4|`tn#Y)=7o)7TS$5esh|Z zW<%@;Gs}W&HtP*aLbQ@!$?_1JDDNu)k`NeX*(t=k@s}1GXmq+9iV4>3<}9vprdLo8 z>xuOpCess&s}3vMH>W?FR-1DYZC)AUeC56J?i|MK0(0N1S&KTl&d!4*eACP`XvqHZ z2|1~GlsaOJMK>Z|i?Sm-Y6nyf_7plPQ3s=~vm590>e3b+%}PWMOWD8~9}`}H21l)$ zj2rIO^3is78Q3AWOp)g}e)^C+6Yr&HyzN7AuVMT8((Nnv)-lyee_5Wg@FQ7>bS>??}1Zhg)c5R0x}yf ztj3o+z1zt}oD2@kqn|oulv6zobEsG%Yng7;_$-3 z0K4G;J4Bn^R6eeXBy6dxX{Xks&0D}yXan7P;$c$+2_=*Ky)#3vi9ZaL@?+S3E7^!%<7zNBOieei$L-gWAs z0q%fHG~6Y6T7;0-@PlDNa9g)aU2QoT4krYp+S*prv5=O z=lE;v6e>MsWg~JnB_ngDD3C9>{-T2`st}-2B6cvTSmZ@5T2UODwL*|!5MHw?&FQA|i9z#KCY1rNh851^|&by2oVPmId@A`Q_kxWIWi?Tu8$3NRkdas> zN84Y6x;bC@`rH0Iy*avcWsmFi!-5&4&o9?!%N54~n0eOKfCOWjVfh;Rk~V&8bc@Ra z0V(Fx1KlVaY6_KX>$1lHAL^e8KYZ2pj!J{auYrelv}ig%MZcb!TRnHnT);Q(X$${z zs2x>pt`P7l`WMx(9>N=o=L-4{|384NvTQYk!b^KbFQTJ4fb`A%mXQ7Wm{ETzh2Is(x zQ}N5HilS|cP0YO6e^D!V4p(-sJI}+P&V;mXRm5w2#W}&Zu;JqF4;{e5CJvpiM!~Nq zS|n7(UyanT951 zjsx+OV=d85C%3_#nw-X8x}%ohC{ZA{^}F&rpo^LuWgL(qD~!83&FV4@TB-$asN#|7 zVwtQLASqEGP2HdEz%Xo(n9{+c!Gor=mZ+o_Q6e|x?oXa1ZSHn9#}5I(oRgZGZ^|;g z4Q1M?+ZOTl2j1_sH(+)nJh`kO=(V@=`nLExaEGV+x3w;AnU7Gzqv^ONe-QXdjiTdf zH_3>6=O5-Pe$Z_A-fj)}Z#|XI_Y%iUTC}fM9<}||wnu^@q`85k6{TOFPQOn^^Ug6a zA?MChBSOfzP@9OS%D3^0c^-Po6tKOY8>RbPF)sV1NW_)pj;-#1}#Fa>wvg;PuI@*naVHbgFRm#30o6m*M5H4MFOxgjmbw@>#m$dFJW!xAdcZyQteg zHP<%OpysSmp6E12>qkqIyS1l^)B3D$rN^;lGyE#bn_NY*=octA5;LuS1`0I^6Pp&8 zEe$CHmII(G@3P79KNI?1x@##*PvEubfvg1&Kigu4xp#%1659Iwl7R_rWRAgZs~kKu z3wcs(Q9KDk(8`f1A|(1XaXhv-{#;tVNwJb?zDe@jh{&iW6ad-%FY1QQN+c4=W&E6&W52agaUkLf z)L}l>e!NqEY$5!B475W|NC3e+wUP7y3twFb!F<1ogC?cOU6ts-BoMDYY%NpcS2KkdW2`6!IF4G?1XNW69q`lLYbu6CoX0AQ6>DG<34PYEV2%q%zlJ zdodIftTHEzR3b0v$PCv6^2zKVHju0dUr9Ac;f8JS4m% z=F2uWlT9R8bC`t3^kYOs5Y&Z?P=5q~&;Vh=?@+2xaur0-0wxSJeWLxk6^84ybFkyX z$bkmvAlgClQa}j-5m9o4+_BQbFMAnL+V|^YC_XT$$n`isf#y37QcVEh4?#rYCo z6zD|4aeez0B;Eng;&(uaX3$1bSjvGyQz)*q2Vlf^)g?!bM7pw}RL22^QA{{pp@5_3 zh`#pJKxB~Uc%)FU8DSz@V0o!xL-1@HGc0z;nv`W<43m7>Bh7vy?FyOzrYLu{rU3Wq zz~8fFTBo}-uD9!l>k_UvwXU}Jw;OW~y(vb<5p&zopAye+@27(?usB675u~5#>AzXj zoUrx`?d>NgQrhFYy)G{O)A9?IXaIo|{?m$2jpMXt0`f9{9NKGwk0(W(Glq=HDaE$- z;}atMf2uVLbd~nKeD-@5_5vj)7Fk#Ll>EanClt=C_J`+Rk#EfzQzOi&fAk)Fvx_G) z?O&S|aqmuH0kea+an=W7ug8!%JCW(zafSSa&+HF>X?b*kMu>n4BVhNO z*qq~+N|W1v^2sdwUUkc$a3hH0F-c3=q`#`v*&$ zlSSj*)}?nibP*qeq6!^thld;5St&w97+P7SE4s;5&l=e~?Gy;MN`Sy3*DZ0Hjlk@m zYX_6+Ugv^ogn(4|G>>XC3%!TvYf@MU~u2eZ*)uTTHg zeMfhm&RNa#@^VOAiPXCJo?r0O+GxVH0m1MDC3r_X^0n%=kLm)H0b z6>9KYttUYvQ@$c_{YwPLyEBRxwg-2IeMhU9{7OInh~mXPYKWJ&xSxUL)!r8|O*u*_t^W zt~rx;!EeYi1a&a-bbu_vV7Ax*Mvn}j z_Rn#h5L6olg>6lIfHsvT@%d}UC>ynuN3cC_tIF*kmF21?z)=z1@Adw+y?aK_35Mrp$;a-~joD*Aq%EFY-_Ft(>y}m| z@DNZ6mM3e7&>P~!UT#Dhu_`!PQY;}20z2pb_S@{NY5kT+H2>9)KcxRLypOc5llC+= zOCKvMEBX&=+;o^P7`{N8R~-X5LGmE)&*zjT@*$%yYZPi>88k@zMX4R1&q?NNMS;an zA~1W z%ovF%8?L4_&sG-D!0n0cH30RZFKO<0w)XUzfRi?NUP|>1^shTi# zBYIlbNNLS<;%jvZnzD69q_P;@by3g2b~zXvR84LYTrYTu7UM{phLqi|<&f z8uSY&x;gcJvBE$%O9)9j{& zaun%^rhpVV7-W*9KqzoZgbv4z4Jf@6u;Ab(RAV#Pzhtk}SY=Ca8SWE<(n?d@Id@G+ z{BlgJW8yikq+*bIrv3lWkc^*U=qLlOp84Qyr(GOv;mKZHJm!i#aL#}R^8@e#M}^5( z=jH3D>F=o5(D*b_@N~)R$l9Ph`VytE=)h9NH~>Q{eTn5N4gUpZ4ydsaG4CKBWyw6v z{zB;+BKi3~YVcGhgLpt48P8jOU*Z{jIZ&z?;n93J;=!9L-mmxfyEfi0*^b;T!yPNm z)W~YmtvY2k zpx!R-6mA?pOWu8{^8Rg(d%LnB)x4|px4|{X=1-X)nnpXxGoP4KqMfgZlf(w0_ST~B z8YAMY=ZGE;7ujsy(GlO~TVjz`^@BTWQiaI_Dh1|WIC3g|eOx50$V0+wV z)rNP+Su6wXnTkAJ($?l>>0|+fT3VzNKw-l#V`14FULx4)(y}~Lt+~iv%2jk=^O*R) zGQC&7B+Z8)traQb1)j(iKg3{Sv!=H-bj|}w-&|CqeGOt@PMB*9owL30<>Pq{Xm)L1 zYaOfBAb_)vbxb4nw9Z$_DOVXU)#Xq=IFMhmy3D6kk{vP9pYAX_1tKcruob@mU=y$8 zJr0d;8&;QRbLwRS6lo1g=Al)hEs=eS&~q{vy=A)u#Ip@?#xOyNTCq+T-T|R?enr>X zJq~u}uzi3es&7@)+wvkF+JJ5(sb#ii2$#k2cRy-(GVRg+&3*9o7{OpOY@c_==GuO) z=SWzV9;;oWJ#96We|frdx$ANRz;rt^AxROfq0rcIY|P0^C^r`TP@&#DbX!|}eS=`I zO?SM>Bx^_JdcXEr32a-iUB|ERxSTXF***6cKQp@HxHSYG=x+mP9Yo(Vom~)Z^U3}5 zb<13Ns_>&!>AeEq!Zn!9AsR?vR>h!EP3`g_JDvy(SD_PofCPl0p7G;i7Z?HjNUregWps~I&JuR zIZoMY_i|pMEzSG`d%zCFRRz=&Px>r-_ZFkTVr(&xG_C1z4x+AYu9s; zeW&ImOr337)vNl4;KMHLU$cI>WXg6`FH^Ir-;6GJakF*F;mKdU7NIDw)SGOec73m$ zTbWfkGj^#Lw%__Jw+1minF;lo)zV*bB8XRcs>t!2llJL`Nid7R6BfNNGFYInQk1Dx z+goXj+=uisN-~#k$_i6epu~YI5jNtP@3X zJRF@LNMo!3JSxdno!p^3F}a2IqAGRzOAypBTnKL_G`hL$k(zc6(Q(Ec9-&mc6ty_o z#C;$rK&gv!C{UXm5e7|CMz#hY*AoAfcmp76@BBhb%>1tVE@f$!#;pH=2!#g}9gNrLYeS*L-^9^Mv)dfL#dp zC}ac%SF{?i0knP8OpXsVrlW|5<$O!!X~c3Gr71;oY6`8i)Siz_rLK#$AmxOp5?|Z} z0D%Kdq*Ah!tz>!OV_dinnB-9gih>$#E?J+0cN#0 zgj*`?36^^YaZRIXBNi`JL`+1yOx&iaV+{Ki!&E*!*IeQXDhG}?1_XuRoQS4{lTCpj z8`t89$Ly)NARTugv_NfvhB(rx#J|}IU_eV0vr9(>X^aUmQX#6a0x<_qRP_t6B1RL6 zw~u@h=Fz7`pNL;<-k>QImNhO-9$2C{&o;-lQrPJ-vN*lE8hltx%;`3%RnMASw(ZcT zbC6(KAmuW1*v;+g5CXlQ)pwi$6c|YlCWk@8|1Q+=$jd~7^x{evAROyK!R{vkXch7R z;96|H1^Z!PZc9%YVXQbcq_MO(9LS?|FmDAqORov^W(!=-V8E@)zSL{Ue@P-<WU7Ztu#Q$KwhXT+qNFP;=tzADEfFTRQRFeL(}C$Nn%&kBn^?hFrA#K*K+=< zWjkXUDIRuX%|$r5?198FDeH44c9L& znQN(lQH(z3zHU0`etBBdM*MfIHOwmNA{9p?eGt=E*sJRKzdl4THzbtX1`EqsHQ%Xo z{zcl^T%P!)AsTqGa^5!U`!eW9qhdd}px)U(_i~pPJ-*rIW^D|R{~=kx9JHA_uOBdoqeuHBP}&y-sNrGU>j725 zFuRs;?GAm)HkwHzet8l8o!s=pUP6<@)dsnzEsk+Sz9_1cEU&+j;q-XOTP4-boiDXp z`KB;+H5#;46`VAV(OzN#RJb-5yGM@(23FP3{1Yg1cNo+6vH8>e3%cJ_Hrovv=+3NZ~3t~jilX=OR=+X>u)o$x7=T6 z&5}sh@xkd<+Tkw%-f;pWXHkSdy#$|G;??*H91&)={Kgk~qaWP0&t;CAKHCmV@$c(i z1Um&&=YmO_&sPl3wPc<6>)XQ5rKh>Czf8+i^{sb*9>w+qobI{+mU9=ds);I(K5`Le zk8Ov)qmqP_Uo9;iP!;!6HuhXtw3bi2FUwP}RNjJmd=VcUfln2?T?&w`sHL?E`66V}9o30+r2mL>nuN9L&;+%%tHUjMk zR9+GCKQYi58-HCE+r#gfogBHXdgS=lJ_waR57L-NP*9V8X=#%#6ybnb(v*=PY5r4t zY^wYxIrBTEJ(*V+W@^oqoj9%}i^bO_M)n7Ff z9JZqS;hMMTf;@6r)x@&HbxiX6ymbe;YivwPjq5pvbIgXQ^H2ALSayQfn3Sp^Bc_UK z2>&ogy&v+4t4!oTZRTG(9`QXA^C{BmX-x5Q-k_S8XchVPb$p& z`XJ5I3DgNJ?wd8~sW1)}vt>&_g6}z~giHw{7WR#iS%g^vBsM%P35an_%!x7(cT!|^ zd3GpU9ZHp0YY4YRdtAy(#}hK0!3RjylqJ$;0Widp`;ZsXk$XQAPIkwbHHW-N9lT&1g?>2nUL3$mMZ-iu$hoq zo&;=&rcvT`ZDP=w;b+k)M&cttZp1DrNNjN%j;eEb4;Zuq2OuXX5xD?0_&L7Baa%2P z*&GNYWYR;3VjLF+b#-ap?#G9cjnDj-of(0dr5&4R+xvG*X6_!IEP0Rbnr-;m<$oHy zvoCsZZ$p07&$#viF098V=~=Y)Gi@2;eF88!zdcF0p>q6HX^InPk8b@#$A$t?t)%ud z!<&aiWoA!#X78a#0;hnJJSUN{N#d@QCX0cAf+v1|D2ZB>eOEH2Mz{~r>eo=sKft)e zNS%0NHcqQt1iEPGST5n>7F@{^?KnhK1AXDi8)Q zLLy^@)CCu!e`RfPq$k0_?6a!=Woma#bd6*Xr%FZmGcq?B%CD5$oeBMyw4d#4c$g?I z&F>OvUnG+!#m&scMXpDLGyj=fy6iswF6&cNQEc_6-Zx*{Hl@d)Rl-`f(R79YSjVl^ zi}V6579b8NX9b`>k~eT#fy8gn9vrrJk_+#=?UY-!U5R)kLeqM<<;i%4`RvY{B%|3% zxMe@;^{&(Xnw8}^Uk}_HvOkxw)QJ$KaO;-|w)@yvx=vl)R|fJFlx1M1&+5$%#QCHv znB;vsdy_IXap|Ov`AM%~W7djj{PS!4BOYb)K&3-}lna2%;@^IJvh0@D0pBzzxHO6C zIIYW(UfgmH--NC=dHhi(q?6yimKL&!g|qKTU}7+n&6X~vT)=yR@9I4cYLa8x^7TtA zT(JAivVD^cU8R5*n++HnBz3tZKG0{lx3@y1F5;)F z?96oYUw5{a742+FJMeDn3v0~chW?%IUC%Utg2eYLB5Qw7+mJUX<;0a*wL3NXs5mTH z`M<9ZyPo>By4XydwYn5i_74~%!4_@LSjjTtHlM@`+q|Ld01(PE}wi=dooHvVkqPgk!9tCRHy zm<;Q4JAPk&!iTD?Ki^!SCqfu|H)OAJ?mDt}Hq-^N&V-<6RtWXNCyB)GWw1F>GSQQR z(QPcGs!nN(2bsl=(vNm6BB5Cbm$O1Cp=Bqd)xgSYPcRjzCi9U=_E41r?oDyj$h0i! z^tBS}JT0W0<(v^&ql=5<5t#oPs#s0TTS~<~aE|SQIhz3yl^V$#F4#mFk&`Jh$M+rt z8f#7_=Py;c$x+KQtWSNj1pX z5P0B6QBh0m#nTN#1z8aSpdhDQ<3mWX%tH#=`bA;TIKj->B2ZLai(*KmnGc1K$zY-L ziMh?&$@t@K+QA7CvbDu?@$odxq!D#DrQ$%>r9!{@(OE=i5b_h^h^3jo;=z#_^tw*c zH;+Ij@STO>&^ECNYOSQiibRca$Y=2JxM(Pg`?BLuxIBQRMO3B$(J`jPRugF1KIr6* zHz}_Xz%$(i0s(-NihCmL6aHu5{?{Gx=suAD5)eh=!MPBvNwuWHZ2P_HvdJ6?<{Tpe zmxAKF_xRq*CG)xCz`@RuOu(su;zox8-6L|*%8A=zfrPvEC=Ng#gGLVzB5YzGh%t~S zg9}xZXYck3K?(uH7Bu8%m?9J9NM~fwJorZvmKTVM;kGW`eD`4(sAMFW5#lds`0zus zJG~Z|fX3)ujXd?M1C5tbudY(S(Jk9tq=;M!iQ0HOF9 zsrY$39)uC$+{VWwHM?dLYVkOX%W&$YC+kJ55*K+r5^_m^_qjP2TQmn&C>G z?eYHR@(J+e`_wf%c}HMv;^1yHJKTBDr7$}yIqQSGgO1r;&)Hdbdf2^C{E}>M^?3B; zlK2tDV*fHqu)NVoay;5`NmiZo(B%i3{>&GPXX>u`*ws~qP;U61;goqXf1WurGB0mL zGxIT75D4%>DSklRN#h9X+4Pqr|LxxGj-p}nQ3DX~mIc)Q3AJ(-T!Ym~`RYc}7e~+R zu8gn71gmv<{mD+XLoY3g3&C$xH!B?`z)V4^Z84mt2A^CtI<}ah;BFHr9^^4!=8@~( z2x2coqcaFs%M|J@skkzFDqWtR+!Z<=UHwdMm)0j(92_6a{dR3jqw8*_K57@xIOUhT zZv`aJRpv~(2kB4*5GL)&e_j^-KEAV}yXZW{PO3H7zU=i_41CjidD#j|0MhOWa(zxp zCX;WDU-Jbhs5bR8N(Y_>Ht`KGa#S(+^YW7lV$=`$UpaRk1H(0=4jg$~AIIk;Fxncp zwq~yX`|Jep8X5!-pM&1!eRqzAzGb(y9KZ__FF)SVPIH4-k$ zh={)ts5utDV`V9#DsPv}_5pWX$c- zgJ~oO+0Y&67fpE;%`Xc!r}H1?=O$;Rb9za1|9+wGBYv={){yl2v6%yF`BQXUpD%AF zq<#StP0q4U62wm?3H?9{jlY0-QTfqUStutO_ zk-@0E0hTaq!Uop-V-F=Xc+$%&e&K?}VUKH&jv=Tth2q#P^zR#A!SQO}QkWgQo z1d>=}MDw}Fa^B%4)y6DPY}V|5NKl#)luTh_R1hQsL}ea9nDBSr6x(10vG%@knN?#7=+J|^Zk3`0Tp2$SpNLph8kuCvi zceo#r%!pLbMBq@3Y(i7uX)Ge)bA@(r{G16eA47IW2TTAzw1Hu;Seg7c5t?i?5k#a; zap>Xgrn9&@yt2Nb5KmHMsNRSL5HMC1t&n&iAW#X&B)y9>1R4O?zC>p{C{VqQkYur1 z{1{$?kQ8DCtP*ik8ygW~$iW_hQ23_M8k~bOWMnPdkagHRblS(ev(H@Q z8^*S$-#ly@FAHE|%TV85YBV_2$hns7Ja~Uf&jFHEdrNTnQ2$k1N@FgvVVH14ytBCuGI` zv)lg9)QSJF*Lv(1d2^)OnY~ffpHh9*s@Yc<_oIX3CuU8r*sbruNWA(UvX@Qs%G@V= z2QT{%tF4Kd-`F^|wFhGTw`TL$>zqzxSq?ApM+&fQ4a6?P$WN$u-u}HD~za9{KVk^+j zaTGwFJ^g*}xszyuo`X2UuEM!pLM*+Wj(}&8ouGVYwfm>j_IcXH#MH_sLYAUcx8@a< z;xm!U$7cy0Rpb&?H-CoeN`ae#1xJ_Q*c>~#0_m*$%%hBrO&}*5jmEfIaC1C$&hFLB z%k$E*-0f?WGlFFX`q3>L{4hLyn>2;?aSMRAri(UTTvKq==^AeoKF#;Wzk#ipLeL&5 zL<#vhMx2W_PWbn7x8Nssl|IPEdWB;0U(MuFYxI*+9e!k4(J#p{*AyRavD3zi)w_%#6X4xD4wjSmXzm z*H#kxr75&c!6eH~%1DdiEdzG8EUMEB_2&_d`NgNCFD=G1yyu?wZKAH816Aa2UQ*79 z!}l(uJ7clG%F3#KW%^(q4;JJ`XTi z%RoSnKk%z!$=iY&VcV@q0Ldt@@BlM$59)_f$wAp-T4n&s(QL)&t5&vTUE@&(=3y_} zFhRIh3P7dEvQ2Tpq_Vqen+LRHR095!XreJ_t^_Ap!c;-+dCD~Jt)q5?ABDCiZh~k! zz^{_{5@wr^LlKr3k4NQGNdu#d%I@)MLZk|LI-+PQ8)p}hmFhx_CPKbr=mwc7fDWQW zo+SeI_&NZ61Obm&NqQ%`6Q=3Xl2K0ljj>xWOrRUkat#cg;aHlOL!@_TX@^$_O~DaQ zB-7lIdjuqu_<_ECNbQhyh;8O1)(9S@{ zAmGwMnJ6H2pv=MnY(zN_kbx40MM?HYLyEZtFvb9;I*2?bC=`w{@Ca&8G4T=cyP|k_ zratJ{1e&pjx=>3^({yGKBAl5&WVm9J!4U5u#N=Mt%n3+teD8O{+5Q-1f-``O=taVz ztm9|y->knHi|@xCp!iS!v-cd&V*Shf^=e`Hi;IcMVBg4ga*!Mij=8F<>s)_eJTaW7 z^$y_2lx4V)=~ljZ(z7y2VZ>}7mbYg;t3m2MZvomdFqu=AtYuAR#^*Fp5WUabZ(?>yJM zu#RW7@iERe@0`86r5<0kJk+aM`>$n@eFS9I5abiI_D$i#m@n7mog%YT{j)@F5=_pY zl@+x~SY2s>62y~vTVB##*Bs2(Dgj5jR|?QPqOxGeT3We55S$3RTmCm>n2mYT!Dm^; zKZwD+TRQ5Y|HpCCmz$2UcefqypF9R&2HHuvhA8Q3h|9qLGn89pP~w&-^-vu8qz-Vh zlds!i(eByz(gH432}`7xO#AXyL3GX#z&4G~C#QDVz6?UW2wp7lETtyU4J5P)4zze| zKtJcGCsbt5`p(2l{;dXE?28$XlU8)=B^4?vL9=|(Rk0`#Lcq}=fNNWk;AfwwJNFZF%e&H7W3!Q2kGaT~<;S`xRYgHhF>@%DJF1A*d@a6KkkcS@1N|9S4ikqR8)vSi_1x1P2i0QcX%iUxu8|L62!XHE+|K>5E|fB2s~@>JulO(!2A ze3uSmQxq1BpNwiwoKYU(-LXL;i7O(?mk?}Enijg zG~~W?Lujne0m_`qe$Kup)U93=O16;IIO9OW6=n$(82}XtC)KE`5V^nDr6@dQ23)S+ z34tCO<8)3X5=j_{4mMhAZXt4vsXwX?gv2J1grbTqaWo`F0-9O5qTgLk*IG#eB_|kq z#Hci44{w;;9q5uQMh;<5j|W1I^?rfXI5Q(H0eD%CUj*yO_=XyJ8V{Aclzoj-#KJJh zKRwka7%&i_1e}#BKgu3VCzCz+*B0UiK>)SKClypjnSf&uwmZaow=8J$Y(kCG5d$%;N z)c9B9-rgNB@jGJiIR11Jo-qH={r2W`yPfcY@cW&R{NP}3zQyO{GB}-`g=$aGzJ6++ z2#A|$n8fFN-O4_`P26pA{W(9z6Eshoeea{^G_jAxjf-umjt$4VrI2i&c3UFw`(^QB zi+?pg%1K?nz^Zby5-!5A^kv04Z3lS7=+?a02$%aSobkOLJJR-RWfTS3XE)-X7M*wg zW6}S($<88O=y7cuM`(O_qIv5A?<@5I0thY{s#A7pr(wje#fq>{Gm@MiiVGAW6mVEH z0ZqYcY+rZPWt;vVroJ({vS`^lwsT_JHafO#+qO>Bv325(JKeEu+qUhFJIUAgzHf~8 z{?*!J|Ek(+RqdKJ=ejdyGLp#f<8czLyBY9oZNHG2Ug5JrxK&2X>_^C4oHq4LE#5q$ zruw>9uuXF(VkF*Zmmf6uRrGP_^S-3rLFHQ%KY*&6FQtJZSo02T`Bgr1l37?e1gqhy2rohnStZ~*ZFl+(6KN$J3Vnx*>Jq~a`bA%cbeN6$|=Qi*Da#&?xM zt`#EI`;}3QBlgABdX(04sP{#sPR^`&rj|1%lih=iUfXSHX@vCb_d8XNtuIY4_Y~p$ zj6k0-RrC&pXK{JL#EHD>1~+Eqhh@uODbAxUnZ#9uq=f0kHjZ$%!7duzXskv!K(QqP zI2L(AWgda-$KZo!l(X-$HOI+&3tv1Fx(k+SC-IEcf^X{~Chsw8499FM_LI~{5Fh-# zuSTe|N7_)!V9bB8T4M==_L%ayf@1@ruPZmH1L%YG|K9##k5PKU8lt~Hd{wApj%ndU=0QWl`VJlRA#ZDj8iTU0>922o!ImA>J+x?Jnt@~2tmYV6Ro)CBoavI8=`}T=y&%FwP8Vp#yqDjK!&%f_d+LN zKJi8+?CW+V<>WXC^X8)p+J~N!j_k`GYrN@Uq$&PIgi2&v<&nYiSzt3ZzpdBW;BhMm zGQ4J!`k7PYWgOYP1_q9&&GY&(_=K8gu4~OzaApE)A{F_nWM$L!Q!Rs!<-pj{O5j5n zr6(xxKkOoR4>wCwM+8eyUOOUeDvul;8XGI;|49%3h@k)d70_FA0!RY_pS2e$B>JlZ zqtVnbFrv~9$@Z9D`X+EyU=ok;LSNr=)x#>buCKH1#lp`r3If`j-7hx%D=OrRtLnuN z95n&dcPufxV2#)?j$l%)gUsuQHEYtag}LTA$s%KDbcK22aLChVM5K{?E1tPqwndbc zTBiU#S;eIkj4_L*RA>ZrAR#O5s|c4Gz_#l?Ej-0HDm5D| z7K}4k%U4YK)XkAp;j&^EaE4@0));!U#)Hi&+Xi_WuBLZ_lI*et?lA6?dA{pkT6t)3 zTB`8}FI16g%rp+Hi#w96ApH<23S5MFnGCMCfN2#CT26lz78jmLapb;lg47KTO5|;p z3?nT8cnWh04;iUjU+Pdop&!Z`Y{J355o-&k4o0vqO6J6e2LZtojvoEHJok4?%qA94Q@=keJMS^`B_dYriQ}iW>=1JAb7OD{+ z1N%*l_xAet1$7ndPnA%;pYhTG@$$rnt2?W21sQI|!FlP-BUpTdBS`~_0W5MN%4Y(l zHv`H$oDqMf8gdn6-)B>`;z`|4EHj*e|Jq#Z-V@yfN4QU0ny>Ku z)Q!R&%JiHI#dDXPwTARf=N)mG+aJbLDT#7hzXL-Wd+I#jo?ec(L##MgfJ`kj3?+3G zsmBl7TOTSF=o9hkl~pY5z9)N$2wWe$OAauG%emMSCx%=M;Yg`T+ToqRz=IOtO?w$1 z2bV&Zf3L5t*2hx2*c0bix9HQ1BTea*;g?dt4`$ioRt1~xVC|u918=>;Sz2cF?BGkM zax5Mu*+i|9YpMywCJytJYExe3#Q1#aJe-B0rATEggbi0`w-4w14XXB>l1*F?MUnu@Xy6=mep+|@y!O1rn4%a-y6sFvV{3_@u7j_WrmXKz4dK(wXR77KZ;5{0>_FQuzc-s4WZ_3(Cld$@;z{L8 zkNT_Sqg!CrYOu)tn6GV*9VI4sS!BhHElj%9TMfMMgZoG3nbBURZx6V9mSmWR&lvCfU z5hKWr=W~?3%FVp;ogMi@2H;mt*|x{7ZnLF;<4HgA(=0>yaWxHm<%qx+xF*pQ9$#6K;h2`7CXw5@lBRt4;)*UUXgI0#PLRBW600+jZ9sSM4P zU`M*=b_K`{gMD9|~+K{C#SkdJNDCugu% zgi?yTdvt$SA<5bNHX@V}#ew#i19z@Ab*K=x3@)s4k1>`m69FF_yBN5u!d|!d%K_sv zz`|P1imh`@wV5Nw3^Iu?8)HzMxr~x5e&5}bt>0EZFwP>^9RdrJ5xX)o{=ul(Eaw4> z+xI{$UXZOavp0!c?1W$6Bpr+)EUXv@k~ptTJnGt6GLpuJ#@T}97@L_6p@&4mao9?P(UMz zWi_L~gA_D~P^+UtDrZvN0Iww(GG7RjN$M@5<_KRH!DvSXL?Xl43kFy?<}uZV7KpgJ zd9rZQz|mm$jbos5(y)lq*eKCr>A;1EO=+gsSw`bztJ7i=&gRm>6LZp3w@GJ5l_F5_ z0lF@~tE5%din^zOnTAln{^zx7+Sy#WBaw0qdRR{D_ZdcF1R6rT?1oea3!7;nsJc;? zq`#In(;>hMhhcL{KMMzQF}T`J(~M1Po9Xhg1|H|hq4c&F-VZ@89N|pu17Ycz*s;r8 zRFgDCb1?Mr=PY+- zi+;-=`nQL%Mds2sj-$sY%X665cGjUsUHKGj%A7WGnF zt%FuNft-ECbJur?X;9ayY&71F9*E_b@*#2N#n{RE#I9R7j zRclVI@rQx4GCz@3^V5z6{s|?uJ9*Wmr)%l5yf5*t(Q6Dm%w(^h{Q=dWVR*W8TJ%JlG?E3UxJ-6)EAOwN8T!$R0^ z-ZBv_8WWqX9FI~sB%i0wbE1K(Ii zikusZjnj_mNUl*_;=LX!+8uE|m&%*|Cb=UR!@QdPRh`0qa|2 zP%%n53D0fk-xkgZNc>1jh^q65Ry?S@Y1}7B&XD-B!s5q27kf6C4UPHF{Y!<~K#gat zxsNP|_QWHpufwo^B2xJOoEohgu47;0yAfxso&N6hOfUbR z0@y?~$rfh`eEMzEs8k69EKlNwGO&O43v*v*GX&CF3H{UwbLe)} z5IcOjFlciO=$L-PfgL1{BQ54ccaW1l(MRa9aJi~?9D#5t+tEDrY>;R70PQxpO5hSHSTR^bQ{&iK#gZI2Sc}qq@Nko< zj9{edRRv8-#!XC~R$=$LqK1<#s*ohm z_82Z?e={bn{iIawo}()U*xU7z;*F+|P^Wrg;GLyRu?JI*!K;Le#m*);H^D|!*t2snR|XXDr? z-D45IEy)dFr;U#SaA}ha(+mpu-eW@QR~u*{r`D`R!z>iiWo@Q4&TT}$q;*4TWQJG%-+XF97u_^Se?N+tDDvvb}sqC}?=fP%%(ERaj`{cioej3=f6?V+@|Gx-U~H)7s`Fb}WRZ z5S3}gQz`6g=lyYp^I9S&sKP1GAcDkUEfHw=@UPC8s9z1I-J!oyc=%WZnF;C@JAW<* zSbsqI!_GPO#8s$L8m&lg!Ms-|4l}?(>R(Asbpo56*MG!_LRPJDO@FjgG=Nx|_zzo# zsk?&oj8!UFwrxTmq#k(?9vU*A`D+Ne2qYa{+<&vi!Yuoc#Y_3F2uJf+@FTGX@&P@J z0#%&TUPh!Tk4QWv?AQcr&w9?aHlr||Ja+`Hc3Iv$&d00{RXf1&4 zHf2kGnX=jn$G0%861DFN`hmAD)c_~BRuZrDDk?Xc)E(<3Nj^-SJ>JC^t|Iu~)D$CI zH5%;mJZ|~7dJTbPfm|Ce{LwB!yG*Zg1D?tiH672T#hzbat*1RnH*iCcEbUuZcSRp! zjdb~;-#tN_mS3ShJx>NC3=D**XToPYRzl9$Q_fH1U9&xpQR~jhi9A}9kz`vsg`QdK z=lKr<;m(Z@@5A<9&*QgS@?##tx}S(9U$n%js=9)pA2cM$AmBa*BT(;uaIb&8&`dzx ze{nC#jS^8*CJ5fEp=Hr#XlW4(ybOa?5n#Z{9QI11mo@{H(MSYp;c&-VDS#b+7?Mf)7OQP#59_WO!u} zRyin36CHFyV4n;5n+F3z3dTbfKmv-hVyzxK1HGhIS#Ks|=`z1hMpC4KroHSavmIsk zD6^x`W2NqBZ;dTNF&{6*0U;hfWx-?@Z@|~*E^cp(9Y&dgB!mE$;vbLV830iPH<}m< z>cwSqg;%A`YLytvfW?QTEAp7C#p+93_?7lgcnwk?7=o8XS;)zos^K7sIDuf<7&;^= z19BuDJ`VU@D zNxvQ8;)$lL^B=GcJNiCHr=4qNj)v_DH%tj*;BHQ4x}QyexIf6nv-gH?4i$!H;Et*G z&4-n3Dc;^G56Zf_%@fAeC0L1~BgX!^kxEAn*m@{=H^5x$-<%6KOwCXaElC>@haaty z+g?5gim{*Gf;6RL=0}W9e|)N1-NNi3vHoFg_T1&e*Tb8en24RacGio0+1rhAv)$$6 zThMg?{1lOUMU6m@a7Rl0dqNgbgFB3iQj+}g7jl3uf-gcc-#28B)>uBlYH6Tm+10%Q zxGD53PyO&}+sn{LpJ&XTI)IdR`d8n|spI8?e)k8SX?7RYVnt9&LBNhITtzVONTm#~ zBIR6_Wjzi#kc0U{3%cD~>K`5RBR{W1iEkPy@x4%@B2CDob}dKFZ5((M7cl~ihr@@xLH$R1F5 zL#rS@V_-qDQ?Hl3>MiIM#?&AVru9S=ykRnv;{ZT-B$88<51Pcvv|Lo}UZz4=@&*(t zs?r$RUUb`zGzrWcPo#1MN~^Z~ys`8yW)D5Op0fnkPuy(u1TuBF=DH%F_`hxgWfzJK zF`WFBeH4LREP)BvWJ)Xkxo-k_IWer)UubTBEIpcWf1qY3O^-t^2 z9af~eAF-3=HXi2~uJF|efK9LP|DHRk;j?e3w53u+U?7E59Os zw50>zt9%mq`RD}biSx{HpPfe;$$Q-{eP}{peVMjnwWUiL8SlMvu{!4H8K6bXd4kHg zw-Df{w=Cqj21>bX2>+21ZmSQ!qqN2U1#Hc#~xa_634>I+=yC-Z*=kK93J1n8)#CnoeLJgoma zM9jwyDuhR21pY_%C}^f;)?A=5+6SFQQq@F%#Y_Yi$)*`JjM~OqT{j4?#^V_I@e(L4 zN~>OIp(o3@Mm9@3g5k?7NP>!*cq-*$RWFE{`=Frn#>8HMK&~--pNm;4iUpH4Dypjp znBYwfrG+0?5m2?*+y$qFlsge9aG-80BTlhaW0g$Dm>TNEs!W%7y%E0+0)wHtc32q4UXt zb0n4W>tX1g7stl2O-KFWmcT|zX@s`rZ2CSFw>D2q!9MJ$6lMxYPHD%JNyTMK;-*nc zp~9XAmS9^T90o6zBz$iavsYUY(=&C0v|YxKHA26Il(B)pm`|&Zk&#iyA3(vF7g5#E zz?3z@K$>r)T$vjU>uf``mHK_pT#`k;B0x$u#jX?(0-Y2N!HY)uhW;yxb1($WG(LDJ zl+-l-SONmG&2kVVlDrYRjzQlW`+~ukSr1(T?4uWnH-CYWLM$P-5`n=fWq>XKw+RuD zQKaNE>@5z)EA9}11@ZC8gAp6ls}a2T_Qps0`}n&3K_o3Sp8^JmBY%Xu*Gt!z7hSoPoW-lw>5qq`6SZTZ2;>V8xYyQ}yNp z3tYkEL@?sQ$!yy@?Parw-~1(C%fz*^q`{Bw3U} z$+a>|s}->%O)(`Wl_9=pfMrS0+kvIIRE;`=(Ip@9WXEN;mSkB_DqfhKJYG25m^VLv znthRP_~(3kzkiJSj88mSh+R|eIDHia`af8mtcA=X2)~ieJkS|hdAy2&_zY3Dy3E_- z&fI##y-2zjj#8L$Jlfp8p|buud#33*TfJL%zv|&9bN@NgX8(8G_RoN`_i1Lg$2U1D zCBg-c5h{z#a{U$@p5w9cPOmFD@tUnJ4jQY=x8ZeO_vhbtcwFCtVONWO*Ib`=0a02s z*pIId(l1mAGUmp=IbF4Vd>Ee|)2y7#8xAKNL^o8st*qkt9}4Ba#7}f%@&Mw$8NEpv zyt-R1zWniZ!PuGHHSC)3n%biKJN>*-cheb*FgXK~hVuk{*am+%a+Vvo9a|7RW5E5+ z(nEIVQpf+{mA&k~a#+6+C**jq1B^ejNgrnM%R2k9RiI@~IPcRacd$&_+%~HhSzov( z_y=-Llc7;8evAaYPrL?OP>fV*`f8}{3U5FvVi2w~d+C<{aUmH4{fqMODRMJN0p7C4 z`+lJ@=-ctBli%{!){ee0x8>zV$BgX^J@%8plT+NbHw?+^`%@;eQt(b^G|+hcXwzQS znQ&#;Gq9BSWALY)igMn1lRw>?w^lPcSbST*+_(KFHvStlig_!m;O=Xn{zDWSE5v9e zWKs=8adz+~Mbfw8GNro5?y$@^W$A?UqFBP|oXGOWSKF>{w_*@CXc*mmZ0cXoiZO_E z%#87fIaxnZiRP90qoPqnFM+WfyE}lMW@=Gmc|fd4$z||pH0obx_+)WCRcl*GMTT=s zK8-;LtQz3}P3FJfL>#&dVG{`R|3M?^A4XVZ>o(lW>E!FB{f{5hg<8cMt;CXzv5aaJ zr_t$h3*Y=3zS#djLPx{toZIM>iMc1%Zsr%=uQz^kQ#=-u6GP4S@C6P_j09`wDuonW zafNmN+=v+f0_4-Kk)Ytx;P~*xun;e55z!x#deN>nUEi z*2w;D656%xmOaGl{*Sq@-z$6A(KGg8R}~?xT&ZDywU#5!fA3#IS{E<}S8(5=*=-1D zD1lO1*C@zzd`+nbn%*iKM{WxFEK=)J2$HW$R(rDh4X=QD4@V#Q>c0%PA)%|`B(UeA z6lwrJ1Q|h$(i088MTQ@?XY3LJ(AjJ?c58=A(rwqvcNk!uNj8Vm0v?^{PS(3KR}(^q z(c1i4M&lH`k%@o(sE>(Yc_iYGF5UiNkIo4}*SWW<7xlnowLcta&NlGI;PtHl zOAzI=i+M{L=!D#MOC$Xu3Y8=YOWN{P8Y;T$=ZPh~)&3au*0k1o<=)SP7gGND^9SS) z{;Q17pA}duTOvkx6+n!mb&|S-NKFUQug_J45`EauOZ>^)#WoUH{&IEBa&-ZF1CH0# zy)V}$b@{HqGvy@TMbH<{U*g^cePP$iU?C&goh_X$Adz2wR{PaWX)e=cTXE^KaZ%dk zXVFCDOHntMW0*Rk;>o9u;>XpZ$6lU^HN|%Og84g>6z>Vl^3+aV8K}Gbq4&^9;=0O+ zj1E^&f>M2l(*uHZTh)$!+bVaiw2`X-a5^L=mb`;hcZ;lZ={T)Fq> zbO0G5dQ1{MenQO(_6Dx*7v#N~qz1_K0UeNPU`vn8!TEpEH3*yxnE^;R;kLnjn_tt* zcJ>nTTs&2>U`u>e2;yImuL@%vYc6Zft+Q--eZM4Uvxx$Or^}FO7lK+3o*3$``==Yo zE=`M`f=G_^DYwt~iQgYC){AkB3l@r=prhtOPP_khf&s1=KJW!6y?cjvS}I{zLIJHx zjE5F4X<-}n_>T@(Mhui?>(3lfBaC>okwZUjOOeC0>e=Vp{f=KyL$@cltIh<*P8*sL zZeNYg4rcqch~ZQYISTeJMUFK9@0~(X0#;9(8?w?Ug^ol@KyQkKC_yyD! z#jV5|StOsqKH37Q4fdOCSrX((bPCcDSQqWDB%GhoRz_{p=u<%G(L!3P2!>O24X{Hb zu@oJceMF61OC@rP=whUITu2#Hl7m6IH0?gfpN&9-_M%)>D5B8$KH6M}aupwFeCXMI zUK6`vzzG~a6qh(!Wq+wuy@~5EmSnq$`*3{UO7D4`{xP}<=Nzqp{&3k^S207<^+8fQ3M%6^m~CM^&Dzi(kLZ=C`LxV%`UtG zM-5snZ}4d)LO_TuSu!&(WU!4E^s$-VtC0&VSRl&_iCx5V`Ld}I?6Cl8=%lhlmv>EGWUKOI_e>rU5T!ybze-fACC<>0U+exJLYAyk+9 z>bHuUf(CNCJCqeVUP=@h%QR|L{0%$Cu_4z-1TJyRWdx=N$OtXrhbb2&6JDj zkq-GyVvAm)2enAB(+Ee2suQ?t%#aa=+dz6)AIHpsNh?k}`?lBn4=i}pCuK$XbM3iM z($Z7cHqka{T5C-8VOUTnv&L!jHUbuykUS#l{tjHtrQtQE=G|7d2@Ic-#SPFc5O^4E zx6im`rJ2&wI9zfig5Cbs@Bp#3y6oVpuP)Y;XK#7S^p;+6aXlk}(1{W^WA2;t$9Exm zrHXgH9i@ds$T`$a8UNLx&%TAN*pq-{NaE(Z@zZb&f!)uRfc%J6-NCw#2l3_^$oM=& zHA`UQ#FK?#=%$`-lvaxYneMNf%Jf!;ar^W+=5_i)+N76t3H!2Ks+h@vqy#5S^-)Wa zZI>t9sy|q8^buq>>AMwtF2W)wrkppwzF-UkkQ9j3oAeVZWKTHR&|m+hPtcI~R6-Bi z6t^t;Lo2rKaFHT$smoYG-H-C@jJgnd>nULNO(uM*nt6!)glVfsY3gq);!@&9E0J{B znu&t>3q35*$7sIxS*yrO4pN|o2+tk(tB_XUa_mjy>$kmvgO^9YCHKj=)n7Qd)FpD? zmuY$AZ#n~br`E{yk+4W_JTXG;>Au)o*Epxi8kBsTt*piA)M}7>Ia77Y-?L zWNS9Tam5H2W=@)?^jafbi!)>Qe7au0{yu~|b4#B2;uf+JJ6P5E5em^=w7quZcILdX zQYrO(3nD}kL`E3%3!uB7E^UoM=1J_qlDeXuWg$YO^~Vd`9eq3 z4lE2Hb}DL(v-DF!g_J?{?|Mp0-+BVxiCZa;LnhHQQwTwA89>`Du@ACB-d3uX1&th7 z20WRjonG{5G#5tPtUpD(*Q@mG4^!0*Wh3l1{8V|$e-!r9%A8WNfcCM^{$Z`eRi)v~ zK!X)=hViT3gQDk@HLQwiVBz?SWf+*4a1Fk{)YZo!Q@JZj;jR|2 z193e5k*Z7DGdi@X=UmzLmcFrO|1G~s)k3I>!?0>Z*7M?{pZ?&-P%Pp>bKARXLLNdp zG`6!{3m5P{_8j{1aCv{`KojKZXB9v)j6e8#t@>meQsz_U(XC{0PMizm>X@ElTrygu zd^+7;79=9ZpRl|8@+;vMp7CzoN=geP6tP7Ejwi#7B^@1XTQ?Qf zRHM*u7W$ng+-V&aRL+3%6z6whC1)13#@&DDnZrB6kjnIZ%`=H!h}BUsNx{vt?yI0t zNd2NxLJsPUhL>TwG1%l0@!Y@0Cnm^71e_k3kL`bRHzx>u9F-op^uMqTE>7*_4OuLy zNH(WpND0$<0jM2TR||uz`AAO<{p-EEP_?@Js9LN3fHPPz5p>v@<;x*{jbBrm)bHc? zJ^Jqoe6b*+DDH_)R6nLDtDZ_WyA&-Qq&#toVk%{tEPiFU#3xt^#<*R66LyMxgAy%{ zPAsw*(AQBXMl5+gDL2BxHxE)urU3=FuOS`m81+eyZdv6G1b26{ED4Pl z*mCFt3nNd+1#!Y%qU+*RoX`t)qEx>CHJzuB-Pfib!xiTKGsVi~I&NRrmap`O8 z8TgJk8d!rq#eua;$mgg7bSvlPg`|UK~W&M{UkJ0*};zr8lLPgNu>-G@P*UyqC zM`wJ`dTg3is%}g5^^q0HK#YA9`p2Pvz$5VE$LrV$W2xqd;O1@Z_(p0o9xBKec=wEV z(QLpoEtlxSTZ8+p0{4Aob|`YgT>5G?&!RNmIrXnYI!)P*gbGgAwnv0_iz6fi(RxTw z{?d-cfOAiDK|%-PP29;Y5u_O2M&Vz!jTMQb_CId3J^ucUR_PBnZmP50Mjoho_|-C z&p>WeJOpZox_W&rBzZhHdF%+o&!;|LCBe%Yt=E{$rU}RLTDWy=sYa>?TIL$QSsfletaUISL+*Il0hLwn;P1T8*Q_M zJ($YoR6~pJwI69H$T7Ud5{OdmmVl$fB@h9oHR`8n#816}U}JnLht)F%m-=?s%962m z6}*Wv>?P6ACTq|r=VDx0tv|>6!`h$p-{mvgOlu^SsQ{(7k!sjCzehCw>ZF5vU4@Y80*8n-@Bbs;&TRtDb z!q>a@pHoI`xlQN9Rs`dGk|0MpiL_&My{c$mkJbC?J7Ji;{%Xv=n%ewqmaQ)K=Fv-# z8$Hf&GwiO#j((??_A@%3QI$PaJ==CO92xEy6t+awzdU30%*C8Kt7Y8j+@KjACK$B) zxt|!=_S*f&b^U?QW(EjqE_lnH(cRi(0RcsKek3S8MDA*jKSyGGsb3Ur2axO8%Rw3y zc3b5dj>O&$S4?+$O8e;KEN3@%Yo~H|aGr?-?l|z^yFPpdZ7;;z?KprQrGQ;`$;ZT7 z41?Y0c}>iQEaOU^Y-rTKVc&*7+SQP82u6m%+$TSBB&_$Qy(n#Q>eQt2VRKL$8tyAh zT$}i3#F>a!<};^1SBsXSA)NsDkKCi9|$}W z3(&CdNd@(v1(_}cW&@$0@P8Msc?ka~G8{Z0wle@7FfdtBxnBe=;^qU(-2t;>(&4$- zUqY1}7PBrIc2~uQOp$h|+2-#v3L{kU@WN!Lz{8~gUN|yo9OPg09fuN0jVhdHL_{+)G>4S z40*5T0>T+eCE289;gS!DYaM0Ps2#tBK?luzs+Tnq7)tiOl>GN1V;H5xyqj2#01l3u zzkfLAO&2^T>bDHGK$1(+;id~loA>Csy%Ow-cWhPntu))o8wt!iAH3^17sDfC#w%Sj zp)4A>k=FkS3Klqf>Ko7#l8=?M!7Z3g=Rd~32eu8UYl!CHd>~U(3;>8l5L^XJ3iYN`#$gq+QX_A3*s@NkEbmF2zlvybcy9;i~k%VC$ z$;RJt#_mo@ZIK<7>!%q19ODVoR`-hc2500}i!$=McZRV0(VB+?>=2`65B za9xLWZhez$Vt7FdkCZbRv5J+CP2_6y2*dfUpL53>G?8`Qw5wgX>fXJG5OOXnSRt?t ztZiv^To#B4@B*Ns!bq`LB-T@+N6)j9QzT5-+zrhlnl2w7PBO$=W@WK{oX_+GlSj)hmCvYTwYhI%)kMZ*$fQ};n`s`c zsu|s;6=Nx@v}2XD9G@18_oALEJ8-wm9r8EvS7Kb8YN zNSaUnRS@cQg8Mg7>^Q45{92MZ0kn*rK+!?Yw^630@{XAAs4u)w8=f}t)8^KZ9bP?9 z%c?Y3>vP--pC5ZuRWCFDSynmDdZxIh@>**6E8Ib0EfI}XN8jgRF{XRV6<_b{iwCk& z+g1QDReJJ79x$wW!9?)z=o#j0v_%9Qqc*gkGOu~~cE`D{%O|%(aTPl5bZrvq7J>Eg zE!ulX{Z-1AcWSE_Fo`$0$|EP9UZVAlTTX{d?tRUyvz@{4$}|d>QTxGl`#dxJ$_0v3 znJjCi#(V=?;UcmvqT3Rmej%>H)8P*)?j@MA$)+mm_fPmR!+wP6@kJIZ)XON^GgFUAwjcs>S&6HKO zb-RtAKFp(I$Jyogy!|?F`R|=LCqQ&u$+9S@alW+62H4^a)h~!$LfLSTYdAOnocn(^ zD;FR4|KF^c6HeMgTGR+j~^CDy|9!|ti8VgFnGLyyICnDTb7(yBN zYI-bZL2X-<&%a;Ryl`<~5ZdT^ElH%%XeBAHH0lrvA7bYBPxNm|lGdPHNaQ9`2n$pZ z4AM3d4ETD&Kjv8_xMYAI%GAS0Pjqb)PWh-1aX#wppiDX21 z8vyYQDETvDb=*z4K#X_QL@d2 zB0jgS`8zM_KE1u`<0R{0^^(o*eRhfa5ip^07)!_zXYndpw(6H4%3r1(0t3ge9}bFi z<+gK4DZ7T`0@;+3S4SLO-Q?|?lxZW%;1;iF>nEHmos^%#)h{fnX3OhU7{!#D9jZnh z1yiI`ueYA5i@za#a7DJWvDvl}Ypr8KDlS>$oIuS2z$2FS(}FJe_$Y6&jo$;MnOdS# zxH8eO(VAdw{U=n-JqRbx=>!)zx_>D8yJNwOmY;dUBxG0_i#~}U+J1EF!W3h@w5@A^ z4YN_Iy?o;SDXJ+{kXf_JN<#nAO?D}1+MxM_SQCK$@ju@h4+y*)3IM^z{a^Vc5TpV) z4{+8549TjyO;qY#M#|Zl68Pok|8O5KOP&swSK{j7k3+?eDR)jgg@I1v>(LP_RB2R` zZt(GPzOq5GUG>%au~rj}nS7Mh&!x-gQD`DPQ<-#h9J!GL+#ywzLclH3kWD^gq|eDg z1&-Rl{`o;cmqMO6onH}+Q7n;L%358#19T4Rpf^lG%)?0@OJ|jogZ*4g_*k!O-}*&Z zQQhU&$(BXi_?mGLmQtd^rXrbZ_pRAmo>z|oNS>aI)PRK>Eq~ks{A0C zKc?m-e?a+Lyq8cIqvdFl2=by}c#e$#>ao+m&ld{Sn@>xutycOq<_&K*ewZ|Fk3dy? z+m?-Ova9a;;*Gh%cTZ+*FPl>|^a(=CF^ol{{FF@jeF1C=EXgu=fcTk4i6n+?GQF1M z-^|s5`pw`|)JxI=^61|o-5Ir+SgD?DyZxD9Lw(y-T$|6(%u)ZSpvKN%W5rv`AzI${ zmRcu@SJ&U{75zb5(|s~H3_W4SHbAX-qO-}YN(9lYlD*kHg5QAzi{33tHhiD1B&A9d z<4qJ_#`XyS%QK0vdk;zjFsVL<(5AdkKc9iMmzQFU`(j00?#E(1tLZJ3;md!G%zz z149C46`2)~-)jNWJA2*d9l&Pr*t$5c%q@`kdRDDY>;z>*%?ld|_a*MFB>LS35m6!x z)GJ(T{YL_=fSU)4J93=Dc76T_ci#~fOrZqM>4EPwa}TMSMZe|EqrKi&yM4C0ethTF zMz;XbN#6}Ho?1`LX3}a-B2b?b{nCUTeH>6}tmxhXTQdqsTTK5M0qn&3YAdAFE^kiY zlL`3{=|+TNqC{pb2-?{YFe04b1;=!@7!Er`DCTm2F4 z;Eg--NRmYbzrNY_SI*{ zcR^plDSx^bpwM$(VqHq&78#DLUbw<5Ok!R57)~6q{Bj^VIS{XS^yl@e%6WInbF9QD zZ^vOE?3i8U_?}$zGBo7{;>mqz@CEF0e5f0_YV7T;>af+Bhs^|!J;0|`i)^sAlNHt4 zNg;(LMOaKXC(bmnczG>fI?0x9cK0hc7BlzNEPwbiou;5#*+g=`sl%UBh<5newKs=M z!KJ-Xx}(bO7T8FNpn;DZ!FAa0*5?dyeNFLm{5w=Uqa0=w5pw2u3T0daBvej=u-{pV zeBk@uLgR-3$ZMq$xoAk;v6#BGU;+ucozXCv``m7%$;k@WDXYzlz+i6xseW!}n9H!0 z)}aZ0^+TB92*Qaxe#X%N`IP3E+e&(8%-p5atL2KA8HiEM%_4qEKN6&d5`02xm4xSE zZVUCxDzBGn?9DaK$~g0fhbzAunLTdu=~98@bZ#Mju+l)r=_@RcAOS7y;?kp4WV%{!}f5+laGoDq>5UzDa zzKyM~<6jNN00vDavMV08p`j8?SchO+^Q4a<=EMK!oUUp}ToHPX_G0!! zV~O~Y{^uuD`7(%s)rORKwo7ln_FG>az9AldFc8-w^zzO2GNEz2qQ53W<;;dmdtUQw zAUwO#d3UT`r_nhnZ0lN$5Lw7g1;#^>cIP67ztCF!e#fCh*mMyX<3{H9+xCw_@6|8E zg_I30CbGv`@trVo=2s|O>MHy}tO?r=dgUf%Ymv$@&a@M*OZLa?2zG4NqIkQR!d6h2 z6wv*hr55!9N5T+>tmk+Q@NDlW9Rz06{hOCj)T*2lJUv@AOJQn8=*Ie&=%Wy;$m3<< zPcack+h0UcYx6tubpNL7Sd@w4Gl2|BPBa~d;|EoYbjP^+k4<6ptC;z((C>pH3k&!$aECoYa~}r@&sR#bszvA} z_o!?EnLH2)WVwG-R`{hy)PE1cW0ZrDv;(X^zc``h@a1r}Ge%jxi~&C`b~J1ZO;}~; z!%05dXA_NPRoyn+=;C=_6AGmtoD^q*bIu^(xlVwSeLrW(`0At|Z9ES8dTas<#}MtF z1T+^F853U_Q-Nb0iVzR(W}g!mbt5XXNd zEjwrq9Fhj~x(bdAI`IN90Gsq2oeA2|KdX)V5@kc&#`Y$XBwd0J4BWu|Y|uKcnv{fA zW0+m-pUYr@2Z)c+AJts_DEfj@_wZ2sEv}kZ$A9HT!#BQ?AE{BhW zaen9s0yvH2@YsR{n;9(e>bErrPH0JsZ~`b%4ceb^swp2}lvPlvch!iN({%Un&K8|g zeej7$#Nd-`u=H$eKy;~sNpeH*f77u%DWhxSa3!_CxI_G(jpX_As_3=$3{vAV^$GrP-D$y*XJ z&P&0d>ez?AvBBD~2Cl*C^ov!#6A^=CnnbZDDzteRR_J<{<#c0i2C~5hwDxc5@_2T zwIm1a9Jw)o7}^3@w?}uLa}dXEwiCW^v*BMxS z8?Oiw1+Pn+u$LrC z8)sr(Cjs1zAYUta+HYT}ssU6RG*SV1~ zvoJzB4vW;*+18YV=gqXRveed{Lwl|Q2$62Dfsx4bh9-9HDnL-Ta{TT8QFRW$odj(f zk8Rt|Zt{<@v2AT^ZER0$I~yAt+qR8OHnui4Zoj*$y1J^auI`?ishaMon(DWo_xG?q zp6xFjJWs4~0j}mCbf?*1V*+AyhRit1*`Gn-Sod~KA5%VV-VN5+``sWWpTD^-w0}xSs(I6Z0)A8cNlqKzHWMFl|yXZ;-!!m&Tuy{dJX8 zVXcu0izdB5{HA*ocp1z)Nh*(-WArQ>upVgtPZO~A!V?#m0*hZI^82b@%}c#Md23yT zT(?hqSA@%gv|x2%Q|had%T-EbG8oJ%{(oaleY{%5Ev5cfvR?5ygPA6M2O#s`V-G3y zHOaok=bFi+^wpzoi`g6cUnbrSm`gv2U70Oz6_Y%b(W#32PzK!1HVb5L$*beyva5<>Tx6lN0Q?XZTlx?2Kz57=ut9A+K3D>RU-B2-iJvZ+cXM_uVJ77>t{kaJ^j3bCt3 z>r!UEj~u(n1fk?%&qyCZS$Pyv8V4#?t`)(=LXJ}Q^X~6YkxL)J=?XhrjtwBkQ9{MM z85WkoS_gP>w+!xth3ybqr+_s{!IAfhyge@VqQki3D8fPG-#7povbFcguG4;{4Malp zG(SWtFSCaVu46q***CzmhR6wVtJEktlnKuWxkKG?(rUjAqOe3dtsXVOe|1Ev!5PUL z|6$<>k3QZw$kN%+8Xk*uAnA%TBB8UDIC3?;tGnDMg~axg;tqmudNq663Cs$u0x8$q z!g2JIj@(^lfV3a@ZZqqIXQR5P@`q<1kZcb47uYb)ilu`ozJ#M{jps79+{W9~q3h$V zya)oyF-T})GivR2Uk2>B| zKy0^-C*Y#B|9Zprw`(FXL1UcL0g05CDwtrpt7i2}m72}J>uy>S1wxtzT|*Q*rL+HD zH9|v#$3^)(sJ^k8^{<=P#8q9P18ValPJ+zgpDqzT{}w4qSst7Vv7QPA2^y zm`G%U1ZTZxR#V^VAHrB;-)0Z{E*C!NP99MFFBOxkOME?x?YmJ>DPd zylyc%v3h%Pq#Z9_c=)H+rpFflsDucLzN>*btH4K3K7;Kf6ZhjtX z?hMc;B{0+N>oB{l33s#1XX)JF31rm^YbSj~%+YZl5A_!lbN!o61rrIxOm|XoR)FmN_Y3dgUWvX zfe67LV4694r5-l1Nyujd~$1Ei)nU4Ky*1+OB})T+1%n+3MS88j4WM}ES%7L z9X)~%_O@@K=YC%U{7PbU=iHN~-&ZNiB~~m(TJId%a!Z`S1KPk1v>O+gM~UwUK=IN3 znWKHR>4?&S^{S(w=%eH-s~Zrx^gL=E3l*+dLYwmmJH9Grham#vZfc~}}LU=tOex$53r+F}` zztL%Eue3j?Pc)b35cEU|CCo_{g;q3FxQDZz41*DyC_>NVE`sQcwI~8TmsnUxB7nS= z0Q3enla94?_jYsN7h2|L3nRGrh%6IgF>9FzRX`j5Y4C0=@KLuK1Pdb|7F*Ej44tyITpODJ=}RW2*|?zd}x^N#$)6ls@Fl($amq zm$C|gX~VD6#zDzo{_(XPEbSt|8|MqGl*`b%KsyH`U8vbX?V|1hY@W$D>H^%t8~f^A ztpoJig$0v#dMH{723=qlpQ3nj0IGT)#yyw8P8Nsqtqc>AW*7?*hWVyl+h9a5qxLv` zKO8$yCOLyYw9}qCXTJ7Jll6dXayvqG`W62S8tu(P7>^VZcdngI3Kq~ zxB?QFM9IT2sa42LnqXj^1x~-Pr=!PJ{5SNyFuKS)hZ&~8-yUr3ED`t%jT~VkFj|Yp zunxr_qbu-=QQ<%@rKh@f2d|^_5^A{%Y7}rlQGV=DN_Xel2RVdpv1jy7w{|-p@fQXK zNi(!1D3=BK#hqV@-G!P^j)$SPr_Mb2TM6#Z(2X*_J$s#8>yKmPc*Z#_d5a;Y72^3O zbm?`q^fohqbtaD&j>u;Q!zzN`;OukLJeI;WzV&ZQr>`z9Krs=jyw z4*IK7GLvIO)bo;i&G)Pw9V2J<&nDOUF!_vqjxqGfynhoxkC*%S#ljEl=2{zR_1RRW zv^$duwYs3f{ktdvlr*^p9n2XXp3%LOeK7yYPb44S6n#_ku%vLLUZFrc32(fOkAR)? ze){4-X4oaZR^HfXOmKdzsiQ!AJakcD%!%v9c#VJu1zf$FM@Ek9mmnfZSKGP6`CgLU zr{*t9ZCwsg6;0zJ9xhRKXkjqfNL03|f$trjudb?4ocUryMLR#n3IPeF8!ig@*VV?*Uyp-M@vb~okQCDHikd}t_tF2d9D=LJm4>j;}eoQCQ7de)6 z+TDN}KJxE|nW7RRBv0l6+^7L??BI67`!7L0t8ur<>Q@+}4B=WNic>q40| z{DgKf8ti*iZ)W{2WbDu>Jnsu)%_6_EsWt*c`VQ7x9|Z*8Di3%0lQ{!YHaXW18cq;H z+7EZXBlp^`fxkP3!c%GSl=j-3uD-$cSo1t9IZLKZEs>c>rX^4S#zsDN5*9ytM8UY5 zdfC{!%+J>=jA6606EvEe_n@-zzvwX|^uc3&6rbExU|)VMnwJwLQo0Y^>s&!Mxg#eY zQZi)BXUXCExIX?qFYp-gcLtq>hIf?NdIeLsv&*m`8DdzP+u^xq)_GK7pD3qvMWBO? zT9JEr7%%Vmr(4T;{1w550nUF|^eJl(ueI4l+ibmc&6xmN&6-;{V98N~e za=hUJEBT@6oQO|bh0ngLD%Iq8vGJv*KW%j!GYzvGN`71!>jeat4AUp(;pej&3%TpK z6He3Qcqgp4R=CDMDxW7vRnn5GU+<>XiEm*SVpvW~9|IYpK60nlXa z?4gxl#1{0>S3|0wsBCWX<7wA-;Fu5~*0j0;6s)ur1Mq18&r2ABv44QMWoxsutLyoK z2I>-m)&;{8&%G$O z?lvRlP9}{DZ+a`i+XqD)=&pfVgAUD<9Ok(!*bMz8zb0Z~#eVN?e@J-S&vvGn-d0tu z*+3bJBrpU}fEZCF*o>jIrRozWEF)NyB5I|cJA2Nzed6UKDOk0A?%RF;s}8`KxR?F( zCOH`Cq`$2`7u<44tbnG?zjjUL)lYx=PBnbpfDqKg=YzeQ;F`RXu#kLEOZ@h6npIwd zJjuFdzuE1JcrKoiIp`%TD3u^pkYH#X{9*1;VE+bu0nZ8WOMdyDmp#grAFd)u`!G5) zzj}=`F*odbyh+SH+G27U3Om7-&F|jaG9`4`YjQzse`Oro$9l!@@T+x7S#-0l>SsWC z%5(g`T;!!*1WUUCL@kL;B=xx&8@MQb?hB$rq{}Q*7>G{pG>RxO1jn1Z(cFn#19s_+0zrORPmQsZ~RBB+&RT zRUyTaWwY+xO$v1%FC^ickbe|J(d(J;4uc1P5a0;s%D!2Xgsu44+7Uixb-eWAfoc!5n_^Tpq<5!Zz(=+N2(MlOLCWqI^R~|;|%tg=J7Ga z@r}1J)zAdAGDf|-b8e-d@1!&^@OXG)?^djM+3f^zM%M>^uAX5bGn4$Hv7pKI_>2Ld z?W+(UZN^tFmYPgdjW2(bkB=xm?9xWp%bd+U)FJt@_eRcibmG~pD3TL=I+(l!O*MliErnRol(;~0Jz$~eWf0^B z{p9ni+gq3g&$RW6BqGsx!Gg^@Y&U@DC^5#Q{n!QB^?7@Cx7#;e8M{*2+@S1YMz zeGR7+G8p$2VI-Jm(?&lb_V435Uk%7-6>_ErZ4}RzuxA`AHkb(-Q)%^eG<*SYzbvky zg;dJ5dH@3UGyCs#5j&@795F8A*Lc$m(kc%fYJXR>Xs@hutknvcb@?+V>EKjIeOSW& z1=$O(>1cbh+|GW#&wqbtmNa=YF`~lxQU(#ekaB+3h{p=^i)z*+=hC9A07zA&LuTMfigKXGen$A7&=L#<`*Z;{TF~%fcji1Z z8*#*f#J41;un70k&6S}1<>me0MnW}0NyZu^MGJHH0qWM2xt%+hV-ZNOwgaKCzskXb zgwgSpNebM$R6DpD`0089$!etzk7E@JXyXfXv8e~;o(ep}iex{(OsL{$#HD5j#@^uX z_DTPez);K*L6ceGjllx6RrtusE(oR|N36F4Mk!1j!4;}%WUO-KGJ!}ac1mtCaflx;UE*_ zBC7%25;*1fW#r4KVRgl=iLG)G4662`$yn@&+S8$(n1eqR*&i9e?;qh0F0>CjD>*{t zU>-Aw-LVl8m-C^29Uj%vm~VSfg?b`0wdP=Bke()(pHxF;68iuS;=92gHij~_yAsk1zqQ_a)E(L0M5!-+ik5SeIDWswM~ z3Jge?lMr{qDYi$UF3%{d`904&W0znH1@&d{<64MBbU$Lfh86rakWmfz4U zQ`znAGo4L6NRz@Z+Hk~NtG3>PKiZp;4um)vl7$AZYi$jPp&LijfKVcA`DS9mt^Q~y zza!LIYu-8+@o{4jV0o|>N?kDI{DaX72#D=<5EUe>mi{0!ULT>FXjZ(@4Oe)h1N~~A zp%!CS>{vvQv?^;(q|(;mA2MV|rw*x>sctM(Ykx4(ZLIX>hn@wLr52qdLqj5&DO}qP zyjnY}JVSx|hdy=snP7A66#W{6H3K6C_D;U+yDrz~gN`4$SYo#*qN+=iuz^<*D$C}M zJ{}swUuzTd2rEI{MLS@!*tEZ$KL|An3;&4Ijn9bi@5IE4oD;tvc?+3%gTy7lN_J10 zcF0LR8rG!KVNW$3xI@NvAPkDrL#P>Pht=QrJ>G#AqT^>#GjT(GI1VKO^B;XqfMJ9O zWNqV)@a_rq?6h#yH>xEftIyiA)sB^}tjNxi6uNa1=20+ISm}rFZ>LjQF8R(?NfvHEmahJ3pLX5i^o3Z2{E*R>bLho|9#$um7t6#&bQ(c=2?Z>WOg1$81`2{7(^(gu(sVHQp_lYL zT&L4`<|*Iuv*GhnRa(pLeo}*G{K2olpb0>O_WLd&+X_**aO*SUMpeq4qkM-v4EQ~@ z^*ua;uRuVV&+CM1Q31P-X|S{a4B9#t{r`Ug3G z(@S}dy^$ZlV(sPVNhlr7{Hj1LLvH4aTB#vepDgmH)@=$5c-pv1g!kx0d#N#$rdkJb zo@xF%9KE7nXWji4`GPhzocFgKrvow;-@|_Y=gaM2V*jKC1a|qJhOi8WJzE= zRI=}V^$hu5O%_3qjFM1wZMgK8h%(3w$kgJL3{PkbwY8mTK?iFMCe{Y1TrVQ*Y2VsdK8^g@v?J7fyKA?2p)laruue27O1Brq16 zxAEhh8)h5i{F6G7CGWS8KMX6T{~frafD?i4^(BYi5(0<81$wm|Pm`lwcL&;jOw^&Z zzgnrj@}?7qc2NudUDdD@!d>fcj&B$Vv&NyTcjaBH58UQD18?DHQo^d%E@h~I?!(C2 z=NZJ6<}D)^WchIrRDpj2hF0PSaO#rw23q$YD`m;Kf)vi(7Y!jgGJ=!(*d_Ca`6J^FvE!AsOzvy5*=-bh0-0q#hAKXw`9QiWwb_ z3wT9@ivkPo%6_$Nox9@|M85g1y*hbqtPwBw)U$VnF*%FqBz~xvIsr*wzaN}UEa6rk zgV(YpEJFMOFO+2Ar+{4&KpIq8`j_mDgVMoRhz0($S>&1iNefPahf#FK31W$6yCU2T z3_4&s{}@eO5NV+8^KA+sJSPF)t;JYAYipaO?nIQkT&Q?8Zurvg4XA{8czHwSd^Hax7@xX7b$!-X^SJ@dn-iEta%RxNnbT^Dy zDXa(@NRjE>n~VUX^xuhOpmKE)1;F#vg+IuV%@$Umd`z$yJR7*TbHGwDQnzr(%dNe7 z4h4`@mFI;NHVg=dr=2lLme6O?@z#iN%Go2hdZJ#H%3_;pCMDmm?q7~Ng(MgSk(LhD zFZ$ScU$@;&B+phA3wV$v)@^PKRJ!mH{*Tt2_Id{n4*_CJ`;Ux2t=txT0y>P0y9_JM z(+<1`fGj#ca-96a#xIPbOUVI=25oT@(Glv*;(&N;uWdz&EErYKo(Dtg_f1`BkF2P; zF03A|py`Xle(~xL=pc`Tc6&2$)n#$o9|ptu+{-ZZe(wTP+0F|LkFLSm!gniQ9eSOg z9NH0RANZUdcOz~vv)3Zn>=#N*>>oFXT_7-xfW45~r`D8zti#$JWD{j)MGF!}oV*hu zWF_ya(=I>M1q%igBe6(#I2FMaWA#Umbj&}~i_nk@a$!YWgcRfNawicp-(x3+LQo6wPZJBtv{np`JQ%j7i_RK?oMQeR01kIn)l|U^|8FWhcqVPE7f=LGwKEMr-@h3jz>nHaGDLUb=eC3<)zG!+ z9iCL3~` zge>&oF?~}M)9^Q9Zdn1;VvL$JHXje?-4s7bJLKo#bFDkXlf7{_AWVy&K+CN#026Zr zZYq+q*tFR?($d~)>^tN4A1+W1CWoNj@rZ9d4z#jvpe~}dku~;xISbYS>HXBydbT0| z*g%vLf@u-sftiZ(&~XYYgLfvhEC#{2N?+>9KaOJSld8(bmU;hZbCa0V7WWDE1qo$` zu{x34*P*bL(F1xdc2Sr$NX?^q0MeDM#gl7*_tnR2Q`$<=A-A+fT`Al}u}5AZ-Z_lM z+i0AW*TiY$0=zCixrRtUG9fh>ceK2+W?T%95nKpu3iKvyZJZ>+Z(fq%=rN2*e0G{? zFOmV3UR1m_e!j6Qs9BaQuFtJC&Ci zZUFJ6wU?X~7QX#*xVf?e1vBy$XSd*8sGMT%Bz;&F)&U_48AIuMM&6YZX`y%2j>wQfRw_F)uG^emj!mY|mIWv@9u$C*9H>4WO(&)vB*$BK|p`J-Jo0agMI)UmJ} zAWVm=FfA8MMK{PD))6^pvXMT*NS?&d39~I(7lJ;Ri&Z5WrHDZIG>f*SuF<(;^Or2& z-Psz3RQF;#Vp6~du&!Chzu!{c@Mwo6(o|w{id3J*J z+u?`6P*2lPGp+v+&qu11byCfLr1L9ExDeuO=h8)mQ$gCP3epT1Rg!Op)Qe@`vBmt$ zDz(yYcw&zDON8APA)4!kQs@%@i+CO=WCK%$73BhYy4r;uUqBWtu2(Gqx`6AO=hKIsd17DczOxQWG*OOgrXC+rGqT z-)YBF2H(BtwxJQYMz)uml7)2nF?6Be@SIds7&0*-5SBJBFjls+IyNIdVFop>yv&+a zLAToKg!IwIn~>4Vc_x)&xf_2wI{>=W_D6-Ot!FNH2+f$;SAq)r*-j?CPKQH~Oqth^ z5{cdCbNH^8Dg-U5ZbX?=;lP`A1?8m((;uR}OkH=f8nM1(rgv!AE>$>aKSV)E6K+nS zlAt;daPBUk(LfHSA1FXt_i0qR>v#;gRA#7DwKr!}tCb==yCfqyxN85RYPX^N)}WkK z#aq!NLSkQTWb;N?;oPLVx2=CinqkFg*3`kTZt<_qDJ>;7V`cj3l{Oai-}ko- z0P`3uFGZEP6ubj&CwR)J*4~_<8B>}%Qu#cl=Qu4ax#D`7A;0)h>;X3xHiZHnn4Uir z*KGXA4k2}J+TfM!Ls^C=!G8Rh6v|)@b#Upe3&Z2H{&EqMy0wn|npi=uB374@%AM80 zDlSl0GiD?g%Ehs6R&=BR)ziAi3hY(g4 zHsUtKXCP4Az18sXIL@8Mk_9_cd58YsUB&RKC#~}yQ8&r%5K>|k+}|y4_TYA20Gsp4 z$0|z_9HipBiz|It?mH}}C0iCVGsVpW#|q3l)9`FAt8{7k&Xp0g?aY&a>6h z2xT4!4h|%pf>Y?);{>PSvwiT>T218PP=oJhN0>Y|WwT5p^+IeEvdF(saR)oKHCpB-e(Z;Z8cpouP80%CYgL?T83OMdsd--`+ zpf9KF>{9?IkrcJNIIuF^ynMP+(jiDWO|&GU-OLHx4lNeBiO7aM9pZez#B+srX?%z0 z!JPHHq$MqKYS;X}c&N)=72^>D6Wgj=5~0Ezdz4#>gOCU^=9sEZiCwj|&8XRE+ae(+ zib87V_CDUS*|9A|>&CUAa055OD_7ovWj?~~D5`u1F{h~00qkCr#)N*GOyMp4l9~t} zuzU$fbVNFitSQ=IaGC>X;h$(km>JR$$-xgRJTb~SOFlfP+sO+DHJ#g%)ELqnPzZ04 z^+-0ohIM`Hr@P%LA`yfW_923H)|{dsgDQlZ9jo;lmmJzgxSPMNjPQfDYec_96}pWRY4{I>OVlzInwQafDVHZz24>l~XmOxJRL2X`o3_4Fc# zjpFO;jcxuc(q0EBCLk4m`Ap;V*;6^YrXWE4ex?1KBU3}^b4I3$UNOWFaKA-&(&DVQ zC1(`2`!x(9FD#&`RrJ~h#y;t6P>ceDw%a`8q0;N$=5N=c8<7Bxvta>qj8O@JA_)s( zOtI*T8%s3)XNEe?A^KNmB=Q^^7v*B`TExRE@t!y9m0JZ^avlFl-`~f6znpW_skWuN zWwe!eZc!m28$%5Xy5rnV{d8EflJzhsoGzH%{h5~u=FDW(^?3(?4mKcpake$0?9Lcv zTY5h1iJnqHo^u9!oS$d7A%195rlbi}jl-jprwd$1yX}&V@ur}uPXAbek*GtIGfwQMEd!XT@p~rwvKm}8AhqP?RfL97|0%k!%}2Xk&VT|4S9tX6D+3ol&etZuhCadS^|9k_#}Xu*AW?Qgpk2HIa*-@vv*0NdY;LuhR?M z`^hg21Wuez6~aD0KG;LP;32D_d`A@JBim1W?I3Vcf9ubVT!*?`E}aFX#qu76uA@;3 zz}0b-I+0;JMM8W(c?6xvJcA`eSr7Z6uCloc2<2ULpfU4&3z7bnuIg{Slxr?m^uX0S zZvl^xmY%MPCNnhx=7WCv#14cPf52!VxYN&ifBk?t$YV-|0h?MUSGt z^4BxT2Rcf^cCg}*lFAxxG{qHj85#U28*extSxR%Cumy5GriVjsk$VS z@J!o}G6+o?x!5@M#Xu~f!m87CTW>hQk%EU7^MFsM{>L2+SbA&%L(hdVu|DwcDHI*rKLKr+g1MOS9> z@~mw*70D;Af5#|2C+uYA4EGGgkFxc4S99+bw4;&Gjl2Z_fPXHuf4o=_MB6f*gEUSo zKSI-J@n+=S-Fcd7=c}795le)4U+wTNx;VX8k^jWVuHzhgKhdLQ2s5N7k`*#zT7LuR z{hjm^39f}BMJu`gdac8~=F*%h{d*LsZRiP&!B`w?bz<~i;ww@x&kri@O}k<11f$cn zurRiZw4YdBKw5^1YRK4hy4r%)jzB{&r&hjR=4aCVbqVup5{WK{?Uq-+U&>AE%@k5p zN0*bV-BVLng|9c^-}1jP?Y^j@a*B$}k~5m19uU9p86fIst>m8Z5F;f9t<^;4c-5+20C-hAtkRnjtjqB!ra-IghA9H{9YDY|XHUZK8Y0 z!)Y=Aobvqi2;YPu+ftYQs$Dz-vj8cymvQ}!K)FjV3|aJw{~ePecN1H&S|WbJamS0V zjX;=5GL1Q!OzL_59&TQ>Z6=&ds_RZ0>g2h3;Pm8yM>uF(c$CZqjWe7zoHyJ}VV|4_ zb<9(0TGWXo@ismyY+u(cxN7|z)l7U8_W_m|AcH7?=z|G(wLw4Jl{T@ds9{2CU%$OO zzN($bC2_sY%uxiq9~wSC4_l@V-%oN&PA;sQUYpAdbr<>l*`2zWpnM7Ndn0=w=i}c3 zZ$H4O^o2cdMeAxP=P<7e2%}7QwLgRGttqJMTRdRA9tCaFX8$6HK45z}XFfmy#O;9} zdCaJPs6p0JviEV-oN=3*{as*j#~0;C&@Xz{I*si@`C<13fj>K(uB-R-qu$Nmt}=Qnzm|ZHM?P$ zEK^s6AMNWt#a6QW!k!VpV#1^jSX|X&s5JQ*$yECjl_9*oyEH)J#2hi^nZmo8^ubt*(9X)^%=bo9NU_nzAWT@ zyW)wH{M#=)Jysqe^K)94Bap;jM-(KT&XeN^NAZf?FcrGFA(b!lmx#en52aP4)9eNq zi(jTtj}utSZn_x)OuDrJY8P4pbPs!nj{a6k#kOJhm4pRkiN0~pgU`PSviGVw{DPOB zBJbnF>Vkw!dlk8qE7$q}r|E;L4I%3*eiQPScdCu!vp~tF%)Y{LO;}XIKgxtG0}}3w z|0(`;=!Q0TdK1STsdIK;MGf&GCeXA(ds(4U$!n1UT;VDU69660IZA3ZjG=F2@a0it zOt}dmUj@J|LGH_F^x#JmOSs z+4^HR(&`S9Vl#P%WTkw(@`KZowRh5Pv!9{Cir*AAVn_%MBDM2~H(7PGyBGcvs(t-d z1`zES+_5l7F2F{5?lXzsQyeCgDyRJQ%^*V?nidkJ^Lt~fh80oecv(R{GF-jYePIRl zKr+i>KL4+>K1W}>2`1T~~i=RHDOxou^#Kg#lmfM_9 ztpM_L5YsXrK-soCAdSbH4Ml>O0|UBynANXYj%Gp?|6_!y)7)~9e=NJQ#aVs*VEAmX zq;Bxuj^R*Q-NUn7{P#BnKl4^P9~PoHTo6AugWphyhhL{iW{|zx@x}KbGDD1jnh*nP#x!6x0WV_0Frg$W^4j0hp48P z6w~~$fHokWFxR1Q#&T8d2Wqiby8n=%Ue?+F`ONR+Pu5$zyKD-rYAv!GD5%SkK-`UvK zv%gChfEQ-{Dp5{z?z#W6KJ$)H=Brd8Jk%(d`}lAiqUDC|w0I4zvwuS=BXj1V)*<|G zocDu|cSU#AB;Y}`4#UOsNIOn`=`J>oOu)?G5@UYK33+}BCgV>p%4%&$o6CS(TXfO- zmmd3#@%P#|Y)fZov+|2H$eJ@8mrKh!fz@vSL%0j5{>_m4YCXEGc#~4ESTp&l^fHkVsP2!JdpEcB3Oe@S#9!8i_{< zSYS%H1gxp7i7jVxwN|`W_R&&>l{xeY9iE>^G%{Ci@U5?GqKYIVTFNNuM}T&Z2@~<7)V}|`hfe%B3yXi*}>y$5URMdZGOMuxJZ<} z4yVS|tCRVN`MRD3&zxG2E@2|#b?`gj7xlwq{agB3b;y+F{j8rcE`{tLtatRr(H^2R zdCy}EBnbZc<3Z+iZmnBb!9)p8m_aivp=y`F46tub_;_hYEcZXEky-NOX>mR?;wK+t znx3XP(r^y>hhKm&I+bMDBcr}e+ehf_OuNR1QkZqq!DtI)SgWNI0&wgvGjBIQgSyeJ zxfsY@9oReEn$nEhi2MgwbYgqTZ@AuWi&J;si*CNc5FmItjTckxRp6DGD!Gx}Qtu$C zdXpEK4+h_i^ZsC=<~OuorQ;V*B0Ih;xhw1UW?VP(g+Jy2$Hi;I*!a<}BU7*hcNHtI zsmB$h6T_2($-8#UIRtMQJT?rFKTZ#FOj4OgUaQT(1d{E*chZV+lPr-Yk%Y3~u)GPh zz_!b)?>`7(3bCl<$oIy6=X|ue6ObIlP{q4qM12`PPv}T|3ZMlN9#U!p`PuuiVn@&%u1riJB^b7INIvF??^O2!gNbC(fov>n5JwjsBB>uruk`zu76%9x8`cPUJ4s!cx6-6&9&KXTG9g4S} z@i#6QCh|ZdWyBj1m_D$|B&M{?LysQ#_{F*Rc%m#NSuW9ml$5z(iDZ;}k=8aeoyX}0 z0#AU)lQ2Q27lu2S{6zvwr9GWAQx!}oA1V{J&NlkWDroWP&s_9Lv@^^gAKSlfx!smP7(7)poPiCeki^%&3z0d_t8C^IBd$psKVy^mHnJ6BHvE%-waEY+;=yU%rqIr7_aYc-Jix!^j|)(*>A8D6rcx$5xP z8``tnuI^^HwsAVCsg-il(2)`lLO?xyp;rCSD~%sBi})Bt;t zu>G_}jNeo$275$tsT*OVn4?!-Yl_>hO7glXK2bLbH^}J0&1Y0{I+DMd_102y9|AG| zH^c(V**btjK0FBz9nl%(8vue5S)y$X97!WGDHW#ox4iw#WmABj2Qz{c(gpSk@(u}c zVbrZ!N{_8@p1Y}>;6A615?CINvV4Upo+WihN&%x40-x)6#X|EodcD1B8|^fa&@_2a zFLtBuYj4X3%;hr`LirZ-p&_V0Fa>4JH-;}#VCM;lZVVMmL zvHW&41($`-sv1d@kzuxJHbvlj4u$FS3B26@I7%SqDj*xBbKW2k&YA2B9kVikTdg2>2Rd5j>IOVcq&eG)UIFI}^|+>n0AlpVLjuzI3w z_vA}fc-c=giwm7>2SOsKUX9@rdtj@?sVy&R4uX`<3?85cR~eV&nJrR-IGL*apFasAIZOrfQ}jKYawWQ*4Gy9}v$G_VvIlBn!T zPXu|Mn`UV)nG@!T=>1!x{2IhZs9Iw8wU2}iiX-3qBsTLFMuMS$2Jr+5iNO0%d{Q7b z&yt38_8<>^pjFPVzVCP%SeWj<@b}+d#&!AAtf%=ex}8uV(B=+s}7j-9EX0Q}hByM(?4J@XYxQtzvt{+Mk4YTAa%cW*`>>0j4B##?;uZ$$2VpUhB6hEMPH)dEbPYM4UYQ zDY|(%1kKM(a`_8adZZ z^o?B?GBO((%4O}l#h#kLqR6D((h`X&9+gd}F!EH={@Phbg2piUI-mR?-8r|QyJ&WR zqssEvcJ>6>m)VfOLI4!2q`=zS(pI1H8@_nm$iEQTtePnL17?_&^zWa$ciYF)1KC;g zhRX5z^&MYtI{5CyW&QAWH%PaOhj4X_$5i|(o|&Y%U7t9FK_S6Y96#1NXv3c@0wERt zCE#Vlnmf1{x^d`*v|P@IpSUrJuDSmwviMKSKJ^|P8l3BYbQY)O;B$b5jl#eEK!ZUI z(AwJB{d5rsZsgMcpWT2pP1MxTOwarnM$RWFU#w_szc1#uT#<1wA@a)ESXfk#!K^Ta z;&QhIzi>e>fy?7eT|4O(+4EQ>f=s(^EGx(P8%iT@SpA2z1cl4k%(_>*3) zd=9PAGjS}xml~`^>H*r$Xt;p*h&iPz8I7PF+YSA8HnODov zONx*M+`1r1iLhqY-!qsCt|AmUb)VHZJsM+(7iyGpLCCU%mlctpdjc?!cqxlUIbPC_ zuq%NyN1h|OL9r9rf5u7zrpE~6dk;J4=Uv>xpfqPqTW2EAUd)sJts(%Z$a9f`AeSgXWaTPaZ5 zDCc?6aN+?^u+Bom`N*YVljBkauh-dnbE0lT1>yX);Yki#wEG4_d=%83VPi=||Harj z#^x4<+q$-G+qP}nw(YNOcWt}fwQY0Pw%c9XzWX3I_ncohSr}O>Gg-;}F|*$JyklJG z86tuKm@t?6mw?)HLae=N1gr1u35-K*lWrfe#)TLvwQ#)F-*Ab#j)nB$p1EDu>hV~j zLLY5=<3|ay8vALU$qRp-4s6_vjp=|r%SSY%-;GzReu+Fk%)S^AO}IH$jUhk_4Wg+9 zC`0q1O`qHCBBtfgMw3!!WB_Mdd^xZb>CjOEpureIi#>MxN8VIYo<-4$*D(+GTasMU zi#~jhL$<83wUzG#L%U9O=wN_iU`+)Y=OQRl=#_u6in_CRHO1HWCTj`MfH%=@^%3AQ&(p!nfx7e23uYGZ|JZkrBkgzt zWI~k+Fi2G0*Ye?&k@_G*5Z>8jdB1tI0KKZBU~~R{K3TZpC2`E8B2K}6u1pqYP#lq6MO+)V(il{}@u(_?}#adv-}7a9DT>r4S|k8GI1+6HI-uXD6YV&NfKZ#!%`L0Y-3*?)y+&g1U%7 zX|{7fm-NCcMtZ*>H&}w3`(FzBQ|$-*uyboUxG~%@S#>`I!aJhKHsF|7<7O`bi19|X z{_7?Tp;1=aB=Vx%UvKRn2eHC%bc+H#wx|WpFmloh5d$o}v1V@V#7c~=di|BcE8ba? zjTy61UOsWo$Sw~@nHvAoCi@jlHh@sd`ykXp^|H%0w_&`QSHxX-Co zf;oS)gr2D~tr!AlAI)?HBPSyp?v%ps8NCRq>?31lJ1vWrHR@C>Mg7%tIvaBBA>Q*Ro$CaCba`LIrE{j~H}7QwDV0E#!(A&bo7zVbVCpZ;{Nly4 zxr5@hz^>-M^xgIgZ`jAPze^M%9j%gq-yoVx{YI@5cgpz$otyJg8AzqtC%K7($sgBT zYcpsGCp&E=X0NP7V}ed&>8$niM(UI%@2e>BueUAyP=_y=lJP$| z6NkuTdZFFim>o|BL4t+NfIIDdekw-HWtNvRU)d@H;5U=?=I#R-ZEjxg=>^=3o^@Rh zs^v6WQI&mMv>a~d{^Z7c%M7P0i}2n3XHd~XL51*a^Xr*ad{U?oCd|i^@crbPP>2j$0bEsi&gAw>wN;k!@4*WnFC)qJ?qR&k;16CfTi=j>Ty_Bg1>a)s-| z2toYQ7UWR^Wna~A00!8Qy(Fj;gaU|5r6|59Ob{C-6{qyvagMBJhOqX-;lJkASI>?y z_lu(J?z`{!y)$2Ymgrv})Nw&ia+tpY;wce3Wyf1o){0 zpBZ;%aTVC! zYmVkO-|9Sv057V$uIjia{2&=I%R$24pF90f$u*Jr-ei)_Z`*%#%OmxedFTC%IcSb# z-w0>+b|>}qs)65R^@Ja2a#DqBjRsLSI?j!#J8kQrV)*(me4M||w_p!k-8;)Cp761} zs$wues~wKOK7t#tX(-!{wGdn0_qc8*Oc7frgmH7{fYvK48RH0gk+<5W1s)d=JAobE zm+;41?nprT0+#=D@msw-BR%iC=N67j#IpC!-Ea9sT}lwOMunwWj0fIl~aMr$mR znZTDA8DV7pl~hEm^fQ>k3j5FE1>eY4KkJ@|g|6MQ{}>O2i3KRN-O z68AJuAZv2cQpWIJhas)`>w=I4!+I(^CrJH5_M=q$Zrqn_2v`~^n)gO&jfl6@*{z<6 z-28~aHo~j6gp)ymy-Bk|XsPty4A4(2QDsOGfMliiK{7SMaRy=@Qlvg83gQI{2F~W( za2EMZnI#Ir4SA|1?pt6LNe#Z{OuH<7)s9#LY))F9+E+`nBZs6+yyo@;34;a|^}R%#38 z0NtyGBwo$HLNXZSZ{!T1yeRw%r6w!_*DPK*Z+GgehOByG$`S99W>7^&{s8K!Quy!F zvrR2-4dlhm*D@>fjF;b6@pU_yRaN7B3mn7w%+utt_m)kpg+FrNSUsIK+;~sHLM-KY zL@ofnJBO3v3fd&NDuD|VRU;9t2=RPNfck*m7R<)Zi|3bVy%&Ee72{2odh_|Q5r4V+ zwpy#MU`&RhqNVRo{>bLoMU^*7)mBFq?vcCk4o9siQ+9OF2jN=?b{ddNJA+fTX)}PT z_%aj1VMA4@47y2|G7An?#3APjq;V|R9@=B1H+G2Ohz^vn%=W+4)IQ1p6k@t$t7zGQa|MrPsy;QPI8u zo5Peai{1|0qt-7We)>pI;wA7peV-8nEgd-$6fIqH5O@v{s^tVpJN(%eoj)U>m-F=@ z7wE=^{7Y1rjkQ8nW3#EQ@6HVVP>?*QVu`ZNc$s5fg6WKI%Q0!z@`vlt*)s=v4b5_a z#&0Of3=x$wq)+Y)m>btCB~I;jwK6AUi_;Z2i^_ROcq2}|I}h;KC@HR0nyQGQ0!k^G z(kndxc>@Bl-0>Y_wO7p`YF%9y&}Dz?m1y}bocNPND?l5q-ZEodZ(yEnr})BYRcYrs zeo-*blyi3Fs*ZdD-q&Q43UM-AcGW(?{X{-wVz^o z{3*JAybYO>&bbZN6Zu9Zf@=9;a@FJ&f4=Oai$N!Wt_)v+kKW0P54f2D!N9g(Q+-pa z0;H}pQRjiJ_YALks$i4eh|fjyh9_}^piM29bVSKRQOgun7f7W8D@-k7FK-G>@P9`C z7Jz{Q8es^+@Drf|66@xE0Au-S3-3t3!P22WO!sKYK_UN|ZRo1ZdL=A{q!c${TwIbB z2qE9(3A4Eq$;X0lVq0AzbQ1hM&}e__uWWbpk;wv1(d86E3;*^2kBo zvh2b){yF865mqXnvCZ_t@B8xZMe@T4&IWk_Fi3iwjVJp4y0%<0mIZxWXugU6+~x8r zi?zL9oxFL3IZEeyUyG86dyD0t=Sj%27rb&B09z$$G(mA;`&}`FQIdlTEP?0XmeAO2 zD&kgg`t?DW#~>r9Sp?R(C{%cq@gn3P6(Z9T{qw{!6E1zoJE|c#uGI&AI0@-tmjM9; zxW$N3^x$)n8&`IU)W-B1evJfUsAXo{$P*Ma#G%hPe0P{c90mq0k(?ZReDd1~lvg>q z=J@9C_7#Tl0jd~6Cx_t_qR~qi7v+Rvgi^n>o$A$?e)ficZJ>5w(*Dc5%>&xuTxj&J zdJ`+8yRA_*-Hx+-+3Ps|Fh8?yOpk2uwEM+A{ePgz&rCX^%^(?D9j^#$Y6$ zY*B9qUsE(2C(Y)?=NrsgZ$mO%V~;=eQ5bO`e^2HcjPt*5K$ddgH1u@^yGk$n8dfst+7uXz-;uRu){K)yF?;aiw7)4r z)n!1qo$7G9)A>M;IdBkKJB!|SCty1tjF3#(7$V&PF-<7V+Yr~c06`!gU~Cs5p?UVEmv1nsO#R&H!TucB3G z{F5K2R>i^~apegybg+SaYj{BsVu~s^V>NsfT%$aMAm=^ z>~bQr;safCuS^B{d9GMHWwZIwRJ9V|Sp#{%Wk^z)k^5_4v~QLGN(x3_3mXONkaB7( zyiR;#xqGH%9*ZGXV{}tbcG;HXKJX1aGdKr0i^K@w8AA>FE6v_@)z%KFscdai)&)8% z&d}l$I87aM4JE>J7_0gVzQLXa_TUM?Qs^H8SP6V>UUG3+#_=0YMhlky2bkty%U zVZ<|*pHRdr+)}7A@@JbVO!qEg>z%$qNrIOLty-K)l{2+vNvPc>ou#0i*u9C!=_{K~ zR9>5B6!tIzNpT+BM@U)9`lu$rk_1#-(T(U&UDVS;2FKrkR3N&I0l`*{z$B%7Eq5!_ zVjll5CgQHWDX0&OM#0c`^usLyVUKez1^2j;%eJDBYd$9X<>z~Ub3F+opNOo!!qT2aA3@whm3?u%tx7CBA%;7AI=!{KyA^D<3cMLwMm|7eihgNWw(2ZZx{KM#xm7LzX>$$zMteZon z)E-wn)nYu&FToh-X_XcDt>q3bc8WCw%cUqsO^yqI(oW=s-CaKBC};egOYo#Y~;)y16-(EPEy zoJoWLP>|Bibdwe=D0gyVdHJPtCZ8$7L>pOZTXNe>sYXx)6tGZSHv*33Zp!kH2oGnq z?EWw2No*A6OZdund0`4ag&-HYB%Vsjx3w*GN)SJbg%3-#s9r;=EQ3O<5~6O~r3S|p zoUt6VC@wTTb)3pmC!CaQAe#D{umUdZ0j9jFqH(w~}yC4T&JZ+g$)ScI?NG z65WO+W_0+jE}e*pCgO6`cUX%_pS<8Iu`u7H**v3nIc}YzY1vm_?Zgl_(sy~~#!r^d z`0o!;+AWJaAKU}0CT~p5;qg6Bwcwk;|%q2j9fiwUS!=DENe>5PA{- zxsa#37u-SNZA7cjyc^C?NU=%%moEta*a6{!C2kw9-&k0K@3;0cb&8lP!Z;p4w>+8# zQvb@+ldJMgRlE85q5(my+_MvFUGPUB;qh=Wu*4qXuq(?jfsX5Q$(}1RnF^!ZUfB|& zPJ(B&sS}P0&1NEaeIkL)R_;92R4DKW*c_G*+@ZDFfY{1jD zN`87RsixJBhSThJrNHlnwM*8bF8H% z{0q~NUxx0`!8PcVkSC;EmEn?3ERJp<=d%H8(AT4709c&U!>PMCvSaEB^6uL%aa|HPl7O%J+##mqbFZOnWZ48!a-n$S=f|_fEaTs=~4?8ZpDh? zW`QWA0mnt6Nohowe-zlyr%Zw|qD|rt$et{fIwQ|1QFhYel5bl*aso+fo&$gu!v000 zsh%0K1;WWU9A-*M23mI5vXKi>rb4Qpq&?Axru}QHf}t4xqAwlwCjc_gct{Aeroh)U zg7^(Hns6jj{H?*{edgFyh4!c$lv=MKsKF;I4sZ`-U{?if>e1VfB5%~hs>1-aD7l3( z`9rNR*Bix({}%d?@8k#4nbd9pF1BKSw0tf4B@+&`rmE_m68hIhL459LLGX{2%qqJE z+;j4>l`%b2K>?Rhy%j~OlDbw!R7GWd>U$+j)f(EDb_lqM_*@{&^1+ZzP=PB}u0w2j z9YDP^4zxJFa|^n)PW~*Tnept@#;G3m9N&#pcy)tpTUFm3K7;CUc@bYMG&f1@gbAO{ zS%tYiH%n1LQ8AqJ=Znd8sHv*z?cU7G|KXzX=lkJ!xlbXS@MQJIV$~5;PlyXQfFJ-n zzz6puK6!un(&TJMB$gjVHzUuJ0_&L1=KfCQ2oo$Hu z`s@;LJRzyL+eH|_HIQExLJX172rLT1bS7oQl{Blx3pzw+@UpAi-#_K2k&cywsr-Rd zCy-0>k+L|jTH!Uwz{*B8ZTf=`D|dgp(iz)R-XL`=*6CQJ82chTlwa(9y+g7D4H)%0 z4)6QNqap~Di+Bigb$5FId|zJ2fnjd&;q}i1ti1`0>4F$e)urK|!^%bIMph{r5J52U z9lm37&<;`70-m4{X!U;mDW_b}cA}6f-U^Z93*&m&cZm z^`;za87-pK>8@tKS$sXczYjl?FEEJYJGYn73eBr8Cm(E~fFaV~Fv_onVtBF^}SEyFXSC}T|$t08UK0h^LtnwCM5pF+IY$G92-SEB)2QXs zkrbMB#(Pp$FdWUbsf86zfp1ow!e(X7^Y90xTP{2(IAGXy)qY~dXFW*=hXukbQI}R= z$>U`%Y)sI)zNYM*L$rkOa1!Di9KjV%oUw7OJ=j@6O~P1G!m9J(06Cpls1C8UNz{j2 zt6mPijGE}fTM!wTR=okIER4dWvOH#3D=lu^lf^PtK3@K-`v}W_{ew@ptD1eMyEg&< zY<%gyx!}^9)-M+$ULGzoS4;B^e>l3c4YxjVGY^$yN1v^B1##?zOG2YejO&&&bofXz zOlETsqn`#Q;S%VV0mwX`8bbkVMn5izfbSE(-eDuwT?bZ*8tChhj8@*A>5Se}$SR|# zF5X}YU#F*Sd~h)VqSEWjaVa5}?QO+LOyD3(OUcVJebkC|($SD52}2VBD{fUZ*0(aG_0!gX34L+mHg z;sCRy_?Y(weq-MxIRzH(i6gS)loU#GMjS!wT-F>4 zS@w~3qG%U-)vgUQBRuI1P5ac|GBQ;`X)0E{ z$=D*Tu{9j5u$tv(>*GR3HE1}^AhlI-KM^TG$Krk_3*CpX@UI8wta7RP>-d4-{XyB- z@qTlySWI*~n*d5C10l?};+1sIfs^0;x;5N+pkvgg@*nKit z3N_d+qU?tYBM1xc@`TP)+?(K35W~Rkf3r)1#a`q^>5$PxEJ8`%>6q&u&LRCC3IB5P z0}Ydc?dfHr0W+>-<7pRx8!J!faay8|&NQmH1oIQgr9HkRKW*S~>32Cb3vzjaOXnyO zmeASP2V9Gr>g+?)-c3m_#vwyllA|5p3ccT>-Fov&fD;{^Kus&`t?9@@szqvGCdft+ zKoWUFmOZMYHzFoT>sP6X31mPWIE3!2AhNB^jVp`rdU?oB!?xBH?i<|BycEA-TqN(U zHo7RyN2ZUyD-OmbbvM0|EmoTA@678EyGTPO0U!xMi(o~PME!9xwnu)afIP<#V6+%i z&NmiF82T$5|8#e!{Gkb34_pOLfq(rtmt~gI293aY;*h2m2y&#P@FMDg&}nT0Ecf!ODi#;xdRR{D1~(33gW97KanrYgGX)n+yc%7rQ`8 z2lzZ3i~s(6esA*aV7~p6sn0m)%G@nzID;{1%yS`uHLo%a;r)Q^W*qWq@Q`<3ji0A; z(?j*MiYB^l{-TZ!t+gH9KAyr>S^H<)mMwI9=aK1!%Sz`-opT*0_Mdgq%;hhMFV8HN z(ZPqaZGO>YCjFicH?-{-j}X3+bN;bE27t#b6JmZSUbZY6EPN_9`bAt)Y3ue*NwIh> z#BLQINAWs%+$^;Q6BUBk()1VE?T1jaD$*d|A!>yUSw{&ItGy+yFm7GSpeJzo2j_`hC6QLH26j3eYAvDO&7j2|UT5GR|KsWuDb@?_H# zR^-{Z?dcgT0nql&ZIIJpSw!D`D7@}I-Xe}KePjlIx7}w*qM zo$2bjc`X8D8+tAxQ=E8HCLMMP7#FZOG8D}49q_Q)m7OmD+aV=|a%bi2**E7`n4A%* zMR(mAT{j8Xb!nMe$v@}et$tB#qpdwWPB(3x=u;-uw-KPnB#KdA zI~M}6>*?w_kwh{jA*E@YHDKPA%$=n1YJOgsH}EZpnw6!YC#3SjiB+e7J7z=vxz z0_FNpjLJg5RZwxp>Swz9)&XVixx0ev?8ooEt=2Xl378JW`WBF>#45UMZ^TVR$O@+2 zfoZpfqlrD6UJE<$p5>02IvnPy;G7^#<5x0J4c(jOsl0SgAr_kE4(-zyH|7Rx&(`Ud z>N@sLvRFI?lfEzJkrDBvXrq3CiKzu(w{0d_WP{8voHM7?&0}H`zW|a4{D3-2T9qbh=^@?+`@C_&rY;K3h*dEP{T>D>s6A$!+e?d zc(v;S=x4;cB_I6fsGQJ>oGww$m)COOE&?YmbA7}P=_Om>zE7|g${UamRpRn(-} zv{!15@jMOqU6H7ezyToFDiH@3K9kcWjl(heR?Z$9n}W1TZU?yoS&BaRK>ftK%v;IE@I>+uRmSLNFb8Jg<(e z62cRC1d|qLasrg-eT{a)@%H$Tk)m-COUfKI(9_EGV$3McGOmjKN!Na%;y=NuV*o7F zS;z2G%4c-GEiDM8liE?Ao4s(Pg{UTmrWZ_nu^EJ5NKq*Jkw=-KiLeSm(L|SapSj(J z>qH|I3C-a`g*)}d z6}mvlE7|?OM;P=^Vv+T{F2OK&sXwoe3!C`@wvKUmwJoph4vqRP8J!5yS{s6KLUL&K z%Tc^Z+2@eDn$yW|)&eK#lupbB*IDM3!D;-26G=Ux+`M=KisGKu63(2a%qHsG_Z( z7a9!K4f*AVxn$M8f%x0PI_)hx(vlD!BUn(77D9@?^SK|yjQ*p5reqr6>@^h#pY-sh z`#XjKx`I&DD!H2$#sI{aoK&PGK#)$3UTz!=2k=?qi5z$tpM2utM6et7;WD5=0LM^= zbmQ!_t!5OcaIXvYF;1JeJqFg+Z?A4Hps;|uM5_Mjuhk3n^trA9F4qy7>urVdGs{8l zvr^hU*b9$I8#EF8fK0$2;RNvN{c`?etmE7-G1$z!z}IRkIBm|K^KS;i=pavg8LVOk z6it)u0^u=FivUg5e?d!u*B*kX$a~VEc8*3RCP&+v-hwmj!RMQk%?O`_)Nsi8;MnAs zhQgZri@G8M2V)vvdZnP)0tywm@J!?L;O}9z({1K~=>gVGB=X-BHLV}jwL^!%JKgt4 zpd*c=#@^Y+B5mV$P?Bk2pqa`?cdnbqP9)|CYKe*j5}HJEB~nY0I!)heTxy9Tiqgd? z5jH|NSgThXvhqjwk>_$*{e#8|w_x&n<ACffToFlF5;QKLiU$4ksghnowO! z^4Mh(^8jHgQ_mvS1qv&cBo5(2TPfUE4mE+BeF!x0@^&=TC=$C^@P#0=QltnjR}5(9 z5IE9i!dJ&+e0qB4KIL$$tO<>J4-&XwSVS`y@NVGk{@Z9w{YNEj>%+qQ;rwK%A!U*U z)${-&3ja=gMqAXy3{(dD*8r^JBg>Q}~G8QDI=knfhd9%Le zWIZfNpyp)DOA1nD<-c9VM`PNA%cakOJM9tBODU=4SlcFCvR&5RO{*IH*PfWV^{0uU z%97Khugf{2LA99QlFlM!I{!Y{PK-lj~p-3LE5A3$D30WRZ z0%;!?UPQ`8U_|ho59-sq8=H{GY|FZ)aGw4}@#7v9@$0MegDxEl4-#KxhMVY@6wK8G zFET*ZMu=iQl^`MkU7z7?UkfIgl&X01xvkKpcX2?Q+Mz;tFn*y#f>+d25y;?~^>8YkE*S<6*CFL{nk=s)x|A zg&EHH_>D@E>BoVMUI{9p2Dri9Kh^@duA&Y0`5o;VSUSlv9_h-i3N{$;e zXgqqlciX~U^SyPE!-B~bKkRNFIU1$cEmy9Zzqe7CdX#ZBj;1t2$y`^HZ$?^T%PCw~ zuR}SJ3xoIqzA7fXi-F!as7J-$!8Pj~_AY|mQa}c&9EvV4%k{H95`fJUpcQxt+R$`N zcu42LB8z1cIKFmdtNyiDRHT@kBZC&M1jXVZk0-&`$U_fyI44BXg6iN7WAap;f#nHr z>w8s#IPUOc0rwV$aX@ngcVu<}-GnQu06w)eX4mA>%^2o<4Z7o)^KmH`tud*pfSjM< zlsu#qxxRm+f#4n{}UGt7P@Ucv@RrAiISPph!U;b9-SU z&$R=S-GT0QpKO1iAoa`kAT7sr+SD~6+GO3^*jfmOzERuE&kF-t<#*$3<(wf2E(N4K za*w{Z6aBcTfM`)2ckY&Cy4et zT=b?cl6`21-uo}KEJM{y_a6kga$vm$ycK-yq7;TKCqVK( zQw@E<2I-DGj+mN`=#U3 zyNlqjkhby}>HSlIsd{_Seng4neWNu&uz39+q?kpMTclP<>+FcrJ`RM=^?v-hl>k{% zHXpib4nPm6=YpyK;X*|B!&1q^(%zyu4Dk0eUA}zd;<`gq+nI1uca^%-bvN}5^LmG| zVcJNjssqz^%#PL>Mi(1%M#rPmmSrt~qa5-f6nUHS^fm$vvlU$=fgysv-~_$5!3l^# zCjQFRgXuBriUX#R0~(oxz$kFK!gTQCJGA@y6krCqf=ZK<#+K_47aOiO+@IBH1H?)X z1N@R%rLg$wVY4-8VQ-bu1*LOh`Rw#7O0&~21-W$Avk&BGAV98|2TJC0h-J%f0Dq_4 z)ploWBI5xk1hVDRZpKu9#O|N62YpvIw z8PGx);j($%gvyQwY%rxdUn1x^+r2mo&FIYJYo~8$t=(n2UR6(CB+v(NF<90uyt$O`W#2ATeO=EqZaIBq zejm*Cuy`SdrWj?ZAlskM4ya)NSY(}mW;Ct6*#4d}0uDm{^&yeccNK_R-#5%%`6|m& z&zLBeW+<0b%HGF5IXd@^xL3`%m_9&;i3a?yQvNTMJw5gicp5-VT3rAMy}SF({d(o$ z#7RVik04d>&jH|<6nOIS-jy$&T;bO&5GlslUh-87Tsu)D4fIR&-tyiJ@bd<{rkD_S zOu5-#dFfyf0z38{yGvoHsL+B@A_*|y=fXeh!6f1BsgIx5!EK~L%xg9n!TL4&Np}DI zb8v0={Itl;Et3G2jOt4+s0b1%Lr#Ox?x-kOCKxPs;jDcQT)=6y5g;Q@wqVv%Ff1Lw z6w&Q;i|ZlTsLIu`%~3;)s|(Z%j&4yI+}H2|2P2)7O#q$g!#@)!maqa+f3yBf#WS@D7t$$vOYGXY#LpcokH7u7Q96W#zGF6(=evkE4$c)Xi+*>;CZ zxCV3 zVncR4T8|}^|4`?WjMhc*NF)p2ui6D5}TXfG9V1Xt@!x$UL~Z7)Pzqdf2-ZU<7@q0x`bjaw!!x!TZk<6Ewi+8<<87+yh_|V>DgPn5qk5>^naQ%C zgg{IZ41a7il@{1A{5hszwU9UOmJm4j-Q-f)^EW`_P&;x_=qmqI%$--_C03L&Sy&~n zPc&mPmuwSai!?r=&5aCu&hU=1G|V%@*4G-YfJeG|V%@ouP3~-}ni=;Nc_1LOvALZ@6&q>e#br3+NgNc|1Pd(Wlah!55*fzzC6id*vM%s!lQzqXm01J>$)iycq_42c6T$XhTA_+oljvwwj(zcQ} zy)T<`GV5S%3kehFg$w5rYga&cjzjUIdbJuh4>{VTa9&4s&l9VcA%W-a&ZnIrct_im ztd-lW+nL?N&(9c71re#<#O76Ttj5-s&27>1Y9M> z5GsF|I7~5f&>+s7DrP7_a~Mls^c8SGFTz51xjo<}t|V5%hs-Mi>cK#+pIOs1!8|UM zrZ~cmWo%m=GEWt}sxWN>-b8&HX4aD5beJ!YQc2rjWLgzM6g1bk4#fR^7LwYXkV5{Z zM?S)wQ(xXw^TOZsi*NH_>x1*b0fuIuH*y(xE8WdBc@LlxC+cRQH^cV3y3R2N&%Lev0^RayLR zS`h&gTm@vZwcjPQ2#k~^bit(JwYyXH<9L&LB_b#{>vrBpzf`M2p_==pKxQa+Wcwz+1rl<3|=7uo0C(S2pKUBWSi0UXoU%8n<2Ww+oLwD&F?Q(fI z3t|+rMYGPT-ao3*+IxUryFd3@v|Jk~<&C>543c^^_LEMj>C&3{3u@Cd1aj2lsxtJ8 z6|fsW7aNi0DkJu2k65@!I}=G>zL>6>vB_dujz+j4uyXVXo@Ne4`&vz05Iq~a$3AwV zMygdX#zYnTUlX5q=q%A>&vjE#erLE3)%RML6gXcnR^x}|erlw^j~?2baG-QDP}@fY z`%?Gi*|cDIuSs?a*-&S&&x|#(IqLsOp8>P}M_MR#IshCT?%x8INCZlgj`J537EqiE z$q_wrK#l}A&Vhz21vKCiNES|D=4}G&>=C*QRyx#}qr%`I@|{RA+!NG1(r$&93O%%Yu|LjulJaeYvhM?iG; z2$V8xACcIIYKk>~O`%ryE{N*n=ZceIekt=mI`xEUO-*J5uiv3Vwdu)72_R(+)-;OD z4n7p3l4P`P#ZcZDR2EuN2t)a&B{U1SrN5|UJjJHm0@T&$$wqcb&$ry4q=s~fIUf^o zjZD=rdCm*A1WyM!F0dyXTe2BN2j4X`Y{fmUyfAij#DU%orvpiX(n*Tc4SzVo{FFl< z*kJC$Ei6y;CNpc_(O<0=1ONn|nYT(GqxW|WC){IZ{$Gq2#?MN_j9%te!-0OeV+qr! z7);;5c|5g+4^=u1BA4-k#IYC56p3FjFsGcm50V{Ch5RbGm2|OF@cceSg`#;#ZSqOy z;x0Nx9s`ldEq&zT?^DG;@Z|7{z{pJ#$?xY zw}sF5zN56Y%uoHgMT#^yWY&^Wt z!3ei{ds*9HGvFUT1Spm?_QpsPyz1MIIG((n$Zp&18`#tQxX37$_+ayUUPu4d1(ug@ z7;sdy%G&oKWpavJLuqr49+gVhmAi##B9OICmr#|dzDK|*z-q$GKpiC*CMKNf?5U#8`x>?AY3i7(*M z>fDfEb|T$!(y;F>>qp@2?D_dATaaP0YTMyu@*@9*vrCHk+A%;cV6D&Z<7WHmYC*SV z+#$c#oTpvoa(spIvP0}|H1Fe&ZD-wg$L_94r+!NJ4vELF4x&zVA5;&5L59nXd+b{K zs!<|a_GYdp3_0vxnlWOH)b<25COLYFB2dWG7^ zNDqW8^fr#D`$&+>Pzl)J*tmG%roS@3k#TJ_QZkUmxd71(<(I@s!wZZC=4f<$J|t!| zYWFMJW0 zJ7Ki4H#g$0Adir6hVv1+B4MVKTs&k5YHx@G-ubJ3zko))5(hbr-!^xDf@-PcN`L8j9nGBtT z$aQ+a>!<-~XSvYH*_Gy^;JV@N47*P-f=Z^uNj+t*lP{0KU4LNg$$nG>?nI>_xxv#R z`ZM+W{=N=PAFuwj^WVe2p7sX7Q}>S+Klkeh1_1Q5GD89A$+j*-hoOg$xcA4A_^zsB zSR;w;mvH(cJVk(C6TtVuh4aTEqVLQ6WvB`>{{{fP7#7M;O`7d&Nr4Y z^yP}#J@EMe6u0LqymT)Oxr7-Ou`eh2%8fC>PAZKSn{H%POE( zC0AKR%mYy#c@GGO77spdDPj4R4N-h#u)W>n&*|yhT_C)?d{7-R3z0d1O$<>~-b3Mg zf&C*A1_@^_vIvbe9EOdZuK~9q<|PF?ucM?+i;{GZ=Ch#)r3T3ClDM9F?pnO+&A6#Q zL1DpiUB;8?$?d2aCNN^est!b?)R~iESMN^~-6OwY5K$5;(%+6}EGXG*#rN$N%bGFC~T0w#AbH53yE zM`MhoY!y}2YZfLpF?ze)kVakW@`^x_@)5c4Lp?l>I51!1R^dQdjEew{?h_GYtRXgw zVc;!0pJAlg5c|8|BN!$kyB*3XbnFU383SR6#YhO=JPs`nXYX(0RcbBj-aO9N_`DYq z`(-79L?pX^k(|L}m9a7Px*R6GHJi10R$f=I*|RRR}7MdP%t-2M$L% z?R5o7#LUP%n*A;A`Z&kde(oc_N2b)KigIoQ$c=E7r!k!$vS|q|UV~PecmKCA+fTd# zC#kGQQnt*mQmJjau?aEeXmQ3o2H4#=<6k9H&D58Dl!q_??(P&>M+!1W)HRA@tv8y| z>2_5m2pz)oI3Ijik@Hz#xZOSIb?fZF#3T}K4Zp?Bi8tmY4YGVUh@ogsSE;m)BUGF` zWB7mWtP)y|t>MijRJITufzG%3+J_i@uOb8TVBC!bD_KjTy*#R-zvz6d>8Sd(7rD}= zR8iE>Hw%mb%L&(TtlA*Q#d1yO-lX>qU7$loTjvr+SfLZBVIN6YW~awXbF}?J9(O{d z<}Oz(9PtG`&J_ztt_n^U0lZ&N!~1js9#Bpy}43_3+F~IG!4mc-Ow31 zUT7|m5{Z5Gw3A2D<0+^az={g~RpyPM{==Skk(^I}+xtxkfgG@-rX*Eu)^qhFG6k!Y zy1&VGVGvEp1>Pbdy#*_s=vl&qE2vpXn@3auU|H&(Xr0MXDD4f8WV$9P%M zHJcNK@6CQ9s_g@UF~>7>wghFw@KhJm93R1SM?lc;p>ZDP0|ziIvy~FUGH6M=@m4Zn z%2H*3AE2ys!5%OFt}gAibTQ-1>zIR{BW|WYb#LsSg=5;ESs$F=9DRTNFB3oL5XPIG2-8b`ApV^W4A6jMCnM}gR^(y5at1ccPFMk& zkMhgUu>U&r^qi*G*)3Od^j$rs&jDG>>{YfN-_blj;<-OXGXUk2zVc2B_vsOK%vC)- zSLgpJ>}uEbnmR08r)S2LPY%l;oR{9X&i(M*1>$%JC3EA8|NkD>#`3I6(&H$SZGSI-A)&!4vit=8Zxv_*jQyWK=N&s94PYc&-%+m(IsE2{)@%JSc=Bxz z(+Et;q@8{aMB*~KHJlMo(kd20g=kXf{pO>0>sY%Zutxu=Iu3b^uWBgMGD6hFLaL)8 z6m3f_q`lr)IJk%JUi%(^b+1OtxA z&KroI+!x_gal#jAb01{NNt%=)-I2f}1|oUOoi>8_ zShob;gQ(H?=Tg=W}kk|;;%rBPL9*^;C7bw{6lW88|`j$nSn>$-6 zA7*>gm{K~m^-&C3e+)JukdtVD8(9n$?r#RnEh!HOWpHE&s614%h@odWT16@f6S-I? z95hntkl2iMp$y=KnbD5P$)wyhiQ6(91Hf)|xHR_%*?k87YELvdP4>|TjwXu*%ZPu9 zqu8Xqu|Kr}3l(e>z4yYeZJ}`M&7n+^`%{mv!;s(Cqs8}Y*RXErx+^<-^P_6JN>Ok- z{-iIU{cU#n`eU;zzwTy-j1KUy@T?=rxP^l;zi;u3*16^y2F zTY+FrrKp(De`CdfO0I+q$Y9cbHdFn8%O__@S(2Mj2smVQms*$DRNpr0`5d9ZS;oNI z3an&AV&4se{;mbR(#OPVhsA7UwYmgxNM;t& zyYq>QWfPZvJ902Z_MHfwkMpK)M3<{mRyDMes}D39+YJxjpcRP?li25|JekuQw4Z8U zVXhte6O-twwDNi6kW3nqCSBYkDcRnD4BzZ|xtKf(#!Gb&Wp7o^f8kt$1gJ5+ss4|F zj$pnN$$@C-&Kw8*k$A=-&~fTsgKLo#?-EQ)21r`+SR84XbWALFo-{}P4Uo& zP{5Kpel%0$ex=WA370m2doGriyn2pRN>7|$)w*&xN8SyT+mWLvDDkAxHfFu;$gs_x z7%UXAtXUKP@tL+!!*MxT+$l{`YV;)80r%ylqvySIOc5*_7N|HjgvXWAr0~we8cgGb zT2s14bdnl33K1Qlt3*XIk%VZx-lh#HU8Um?^JOtI%Xy=rZoL5H*k9uQM!2kCel3pT zpjYlG#E5Ji;u=b`1s$QgM3p9ITHJm9DK5;x{vlEDw)K!1$}DHN4NBhDS5QMq6I5!B zBE`4bGX>IzT5gwk8M0jPMKo#6Xr;)&c(OVMd42^lW*GUBPYHgkGdWK zZ*wpy?GV7B5@+R^X0rR25(V!uF}wArm7Ftc=Cu;hq$dN4?$H%b)U>y%B(rpcS7!_7 z-D!dNBJ$YM;MoEYrn4Fdie0K*o1q_c!*Gc~5ku}vn7HboRK4|dFtCQ6m-zC5No{8w zevwZgQ+)IWxUoz{DGcEk;7Lw&j+%KuOlFNu#*QhnQ>l>uZHIXaTLqR$dA34|`PV|2 zf@k}$DvAd%>b~v&{eRf{#^AuBZp+y2*mlPq+qP|69p6|T+jcs(JGPUKZFlTs^1hi@ zucl^d|Jk+c*111!om=PZwf0)R7>DowMGgXdAD_J*@e4dAsX~bQFRwnIEXvTd`wkO+ ztoytiq_!CNDT#ci*W&xo7XsUqM-6A9z7d}-WUT0a`T!~n);HH<9o_>ol@#i)ZVFfy z`aT~NQvN}ty?=AytfOrQcDu@w*51;uX^3*t;7aQ63R#=kfLBBsH~wfpZ^OI`{mqST zz%5z`zT=BN9K3OMwsqP6rNXy;&;jTfT=@OrXzgzM9MKV;`oO=8ZOOgdG>Dyc{ao3q z20s3M{cyJW{>82DfHegl(zhEP8+3OBp^)29zCMN}`UZbE9fWJ{4bA4~Hz=7GPKjqm zcLfZI6^f7n)8gsT+<0O7o%*hp%eGIp6PMf_XXn*2kL3#`%84s!33k%WG%F>hng5;S zUOo8?AMx;SjjDL(tlloQks)w;-H-)h3l$z<%XjDy5$?i%!yktAgq9nVoyBTEk4Y*xe2Sk<2<2A}%=y*x-gcNH!IkSwH5*b_<+>pyr z@MY7wuJ&CF$J*OGWxR@dR}+3XnBxA8XyD5WDEGRFwk_;yQ$eLaa@tU2u9R8L1t&Y; z4k@W>!z(&Yn@t@0ZG=^ZH%s3vqz+sLf^-nWpYL@G95=H}f|@f=Vlw?Q+aBki6CgjM zFE^PL!tPAALSmzTlHvL#e$#%0xTgV&#D*bNeIISx5QY9AL+C|4r}EbW_Gm%9`a$Mm4pMLCEwu@{_fGYN1LS>?Ka7h>;KkTxXu)JEa+b0B(Oy2m8$|g>2L{U zSHN)*H0g9!#A(60$6T=W(+GNMF~9Zi!2K|2qpt;dN8Qk1Lt03I=A^%-(r@sFIAR%c za{J9tKf`&b*<57_5wC_rb(^<)1?_BP&wp99szF)>Epkwa8E+#SK0_6=h_2#=e zw0JFpUJ_a~7kApn$?HFORK-itWYq`M)P!e*8!U4Z}cB4Io6P11_{=V%OMFx?eSpslieEOC>2_BJbk!guE?{^TNoX zS4x(o&8+A~J61kkki?`@Og$Uwvqb{*Z6isK2GbqPsn0h&mc4miotV8pLY)|el_W(R z>aMAe!j(@)B}q!sS~R_h-UW_SpS+&i>F@2+`6s|>lRtOVYZ4UFuGMrY0MCbssqUrn z7#TYv>^}E@u<&m#%*eq+4u(*#$=Ri8H~w)TGMYk%xmZ``J@n?lG>l{z->wuHj09=I zrZvaw6OOk{8gOJZKzgvTROwEL1)+q~$9c~`@sVa!s`nZTLmh^Sn7)F8R^$J5=Dk9G zAchbVRy08&3j}#pw6YTdP(=nJz4(c)Oo*8t45lOgEuF10wbNJ0VY-C8hv{sXT)#y} zahC>n`8yL+{+6vlL=45l%{S=%m_q@vbF|2flZ=OHURv7~UOT9J{^r+akkVeS@;r1S zflf!(vj1;f%~B0lUOO2f+O|jM)RiVpET2l z+q6F^OWe$f>+p|P;0Gy#MLN9e7TNW^o#e?QRc)g55-2*}?a8aPg8Ohm&fMC1H9?8J z1uXieFM_x{e<2^r5v1QUIepsL)$&#bjnX@)|0UsS-io`$>*``LrRC4st}Gqg2J z6&wkpPM}2Ms7({%g$M<084uSJ>zEoxMJB6hI6i>k&=g%1HD6%vk7cg><}AomRIWkh zgCi6uv1N)M16W7AUQgi=I1ZWc$0XS@)2whR>!qVB2R_D`c(6%^o=zmf60!bGEt$w) zj~QzH78jf4t-fUl*e>N%+qwOqP(g*HPdhKI7>y_Xhz*XH%+vT4jK4jNN%JUGE-}Iq zQUFd!z`N5)zg!*#j;llt6O<7u$hTP)d*XJwx0Rr$3?zSp+vyJt7%dA{DUL?vRn&Hg4}&5y=HLjU#`w^zOgVGVWd)6KB^Xv|6*A_|B2Hl*8UA0{pJ?50VAE zg(yvUl|d{f1B}%|G@Q8!Zir*yw{foLs;>;=M%2*vM<5Vq1@+%O*;5xI{wU1Kr~e3# zYoK!s2Rc*E{S^I>m|}t@Y3AttJj?kB=+_4gYKjzsixNujPmFTr!}8-=(H_HQRmDjf zAhOjs$Y$Xs!67+DEZ!sym&V^t3s_t*7>+%ukuvA5Dce}Z@~f|?+Ix}ed@41Pz27By z*J9@5Sfu_iIydZWD%nJyO*C#HLt_hR^l9oo0@!eQXCT$*+}kf5B3L^DcZ`HN5UrPu z_^9p(O8uG8mg3Ar(A#XIuDZIB@uOCjw(|Tm@?h`9f?+spYXw`jLADB~O`v4VZDnix zh*4B{A5tmih6PH?guyf*90B}|NGgjbw!IdrA|OL^2I-f}5IU$->ArSk-!=&{c+;AO z0qCH&zl{q{8B^KAePb0QzA(ONZlyL4w)m(Lt%(Z7{_9Y6V#E6?m(~amjZa2LRkd?l z78i3T9A>Qs%3BZHB`JQq@CJx-n$U7jZZoDv^rw*#<(j+aidQ)05>Wa>`APjZFj7;D zfVfeixTp6W5}RwqPwvXGW^&$NCixsGK-rW!f!MGpQ;5l~v%*`KKRg;;=-&B`x?M6A zDVEVqPq^;9C5SY76Mp75b(}xM=zh{n&_VT9avv;9L5EKZ#CGX(qUA$4XOEbG;SBg# zd$IqhnTj2?kKlJ~heLechFWB~Zj}ui)t$3|6j3?YFOuR)I(rkl3Y>V}=S1s2pgni%F;HECs8%Wc_XY-Nw0 zL6;X@5mqAScEC^HvygT8z3^~Jk0qU}pwG2PI)kmZrfN68#Eq)IyisqD&|Ojj$|M|8 zi7CLKf#aP<_DRv-CsLTfuvpdE9*xSTn?xP#e7~T*Ea$c_?QW5@UiI8+pzY=P<@Avb zDqJa+gfyXy^N#&_F-&1$t?!AEkb*R(v&LQhQfd$e8Qf#4^HJloy&$IcBb6!d7aAc< z1B;k3O{_B62)d77Wk__UrWI)r077r1Ga12AG8V$geXs(f5v^ zYN}d;F2ucf)3TOBv^;9jq3Svi^nZ;y2;?)fxUiY5ure13aw!XLUfxH4&wubQoK#C@ zG&|QEd^Z;2j7C@``Ax+F7gz91tZceN(LwWJ|7Np#j_MpJ&|+7|Y|WY{PuR9s+42wI zQ5=QfrGtG#4gLia0qF{IC(Udy-8x2vZyY?=x;JySB#<2z*((S|z$tUWg7%F$z>p$d zR})Tkf8jz-2M6;xnIU5$jRZ!11O&$}7mbYdRuOX#)~>4M$+aVacxJ4VnkY)`Y62eH z=tV;N+%ZNU_5fi0WPdT-S592y-ktz@HhGT2ilm)4j>qg?EfLe1rI^HmJ=jtO)2-;+ z)pYFe6?YVExpf;F^_k7GqWTv;{Fv9J>M^4Sbl{8qx9VENZ6v}C@ee2=DYXv8-W_YNT18np%5Usy4DrEuL|o9WO(vWu{+-?@>U z63(1<aK^4`|t4*JafRXDD$EdVe+geAjLCT7ER=j z8c<=@{niY35(mrq(}Z%r@(1`R>?-2}b zt&X&6>_Hw_rkB_u&&8Y)tK(-sXNZh6^)8(Nhz==l_)|?6^PI**R9F(8^nIz-JYD=m zS{g?d-K=EV2xyh!@<1RbE3lUw1JSDQ;?Xj*h}>UxphN7FKbGZ(c%GC!i!aF-XT+BP zG=C`jNM@iQAEaH|6r;En^{`=V!LJqkOW5O8vjfECD>F&fd_S-iloV45C79AcNxo?H zO9l}_(RNOCvf5v+1Vm=$OQ<%eA_XJD9{!0+sk@y4oRiTuKbV1{T8or0=gH^Mm7zCc z*EWe%|X}IB%iNvv#hr*JZ|byR-uUet$#uYZpVWYu8Od~ExcnO`h8>>>z>`-8>V=6 zY}K!V={suc5)lIkTYX`t`0GcK-@!;p`hIJ{M9>UZ@jHtvsJBaz zM}{NpI_;+ot9zfh9!l{OJ6c|{dvZ$CG7>vkl2$aWV5@4ONP-b;B*DpAmvA6E&OtX3 zPOBiOROC)590Q!U+5@_J<+tEFyolJZ@$*l-?lOU*`944|y`eL8F?rNVIQ!u-kqD9` zu{YH9ttk38E?s^;75tyZZK(K;2cI)P z=9GBI)h_^OqS+@T<@ncoh*o|Fmronld*t|nRfgCy2llV9-rQLw?thCpx+xC4l+jn7 zpe?&rOnGGu-XyBT_YNk2mxe8T)0%3B|M4I*pwIqL{|PR2dpVL=jkY5*xH+!>2U22& zKcXvYX6N!<0o8kYES1RfbA%j~WgELhL_C;=CgciNSWqaiIQFLF_`CL>3;ztqbL!nLD#pXl=fUdcBEb2{vR1IuqLuGnM+FMewOx zhUhrO#Y!$M(Cj{7X@NldIe)NH)#bt})cMZ}UkTD;CIpWrf;Hp^r3^L{CCDQ-so&_( z!Y@F8XZfjF0lv%sRC^#UaPX0?U-)0Oi7-r&?(=0|Q{lS&SRyH3qt={d7B}s~$`z(J zwgUbPn}F$;st9KIPKi1G{YM$^@faAZn`48k^oDTs!n($T(Q;z~wNX>vWZfe43={vk zA|Vo!Kf^MJJgvw^^<Z3dcm&bb^(w0mMx3=X&CJ?*1$v}Td=rC?ompR_0HMU;vrv!rDh@8iEK1@J) zi4+uxZG$|$;Zx%8?N9yyNjY+Yf(HxOXthRW+=M*?Gjyy-eMB3GNhGe;^p^oD3co*X2 zyVthzo6aXwnS6F34pd#J{&lha1lMB;%KdL3M@S8V3Wi2?la7D!{-pCn zbb{k)ZsJ66r|upMw`FLbNm4AXN*B;FC>mEXI9B{-khHc&Nm8aF`kgh=Q%!4ykX!r% zRm!EDVt2Eem_}9kaoVfkZ>UU48J4pZdHtz0cM3qrUL2pce6J-nar%PbVV#afWxsfz zPX1S^7AmfOG;0#F${6}mQ8WG!%**LpMAuZhvywLnZnmn&ieL>Ke(bbZ_eU>phX#!`5*7C@4uj61oN0pR zaN?sB<%C`l^g0*rUBc%4;0{$D{)bdbo@UuP2s6coAk(+CU44mD%Ro+D-g+x))`Rg6 zopzol^QH66$A!*N~P$z>@DuuaAvDNqIhXcD+J~`m& z-?jH=?DLhq!$%U`JG1ZoBE|=!|2$U*BzO$d_CliNgCdK?Xfsk&V}jK&A9mGBZanKu zW3nY@=J42RLz@Iha$h+rOkGeXq?|!mNxd1ex&)g@J@gUl4E_3-QmS1ow>wZm*6LWU z^;U!6(O@gYipgEqcpiTkUeXlh??u9-xgN(7V<$%vV4~_*hM}QRrmAc*K&z*?!e_^x%w!KAXYsh+|v1Ivo_|ww^eW{ z-gABQL>GU(Rn!f=h$w5MfGKeFdy>xBmMD5&Q(Hfs0al?jmBX6}0o;i|r*~vmQbn9$ z3vE`Hh!1%GJ@IT0lyI z*hq^fxS$}!8$#L0p$NR|t-kN&eo7xtROQ);C$&C5?Zwsz2*jyqBsuNfaY9P6J(NN> z|8-H~o`TK9Eiv9fk?cyWBaeqTF7_71f2dw4t} z+U$Bhd^lnwsO@Em(jMM6K6G2U<+#cxSHoP5&E{FEY%;RC}K%s z3B#Nw4TBCAW(bfB7{>JC2XR5U(2wy2r%f^I8MhC(Mx3BEkef?QR4`W#{l+!1jSR-6M6Wc)*)5MzsNWY*!c8pDgphsVbt)x|~AxgUj2N*U)P)Ofvb0#}8G?6`> zZKrImJuMM+iA-qIL*p{_N}O+uC2k)QSbxY2=VI7QaUlD;l`?0{Fk5!x3FWEg%UCni0Yy}S zW&MDs@{4t2lq_}=ht^u+61x;ZWgzWG`rf)f!|RHTbhgX6R`w#5CER2yC_+cInd$-l~x>GS9%?x7E4^9p;C)wdTYe|BKIf!r$+-I);?5JQ5OiW?2q_^Y0G^(!1i{x}xPNa&4#6&At{>8*Jn#IOZkXu7 zFLfj%xVZZh3ib!KD-oQ|UZX6B@R%{S==dZcN=#A#*Tb#y6m8|pD zw+7_2{q9l+06B48yS5y6y&URih0v)r(SH7yuMxiX5hEUzU>&Mqp=A$%=3`!ON_Bl{BP~><4m9gJMmfQ1n{4;T^lV)_BNw% zX%g&*EXLk_4Vihmxuqh4W;>=|9#UuXBQ`1C8cDNo2SXraaJsw`F8Nw`D*JLa+#3~a zip%m;IV?lr3lapB&a|Ij4zuxEA>U*du88 zDVNMoa9QA<`#(K3Q1;Y-dqi|FcCOT3$uFg}16`TKwN}*b>6)4Es>vaPiNsXNB3T3F z=e;^w3bfGPHoppp5mnG=5*MN_4054B<4K_tB>B#joM(eb@s4YH?AiQ7|5-Bk74~d( z`L@2E5bPDAgz(=>Am5@M;44W>uppqoFCQDRzZ}1N%Z8Me01R+V84Nu!RH{&$VNH=h z;uoI8Nt;OTYf}ADkwQzG^!zmgOvG;#@R<=y)%WYr5z@Q3O`iGSn=qwjAA#xHTL1J< zz`OO;M*+fFs1u+zd5Qxd_NDT>m?{;VMTx%V$uJY0p?GbbP%K%etJ&M=EU)ysNs1Rkpj#E zJ6$qWUGE-|mC|9R=AKsLs=xjY0o~4QuyY)xZ0@Gbt0fmkvo=jKqjf)X3#v${LnN6|;&tnG9{jZdonxYOlwJuR~Xl=gHon+|l*-pTF*0P#{ z_XJ5|JlfjE3Ya`B$u2NowyH`pSgIh~64`?#8}Rl}4RJohV{8!q?grhH0bf}b^&>7; zJ0*0pwqG!pZeyH<83dFXtcCpaYBtTN(z!mWM8;buA>(nFI+stQ=Me6M-Omf!nr-OI zZc!p|5Oz1;>WAEqjX$JuLXyh_ZM3BI_+t_W?RL|lbAx6=+{r-^h`YNDB({Z5~ zO8waK$Yecu&Mx{#24ZdVhA0drpbVy&6 zmV@?8e_UnmRFWbH0XnCxP04Mnt3Er>iyw*0=N)(D*IH8bLA){&*$c#ux&PtA5DHIU zKZ+KjQr5O}pS9r&i2wJh<8kR9Lo)jI`Q!YKTK*XIA0ke2Ef7Vv1If8-px6`IFnpH@fep#h=|m@=Xks3GjN9#{u~oVKRu-7(PeNLS z^N#n!r2LCmo?$rRe+%H1+VEozsEilJhmHJmr&*JcBJe9B<}jM>0 zTvbjGq(7$}y+z>Vj1JY9tm2MxYs7mx9hoT@`NU9m_lGVgpMq(_8WsY_-tC^4`1Mb+VDKZV^$3G_>a{U zaRMio8qEx*v)8r*bQNP5Shqa~N(*k!m`~ymw4F#?QD=)?4ASbFTUPVMpJcr7?%WH? zBsj~Jo{QNRVRqX-JJt60Ur6CA7APd0#Hf-Aq`^$tq^8@pCYOYA*nLm5p*iJh>J=g> z=EPLz0yz^Kdl3K#33y4$<@LTb_3vS}e>dmU==kP%LICwTUB5Bbw2qb{ygTMXj;cPP zQB<7KXWgUZvA5YyHY9aiuU*)qE`?ROvxv9bOd5U`0}LZpp^Y5R2_@EzIaYcNw1vZF zqeeDG83=6AuR>QwiL2pnyE3T&IrBdYNF%ImH@`@Ll?iR?xQiTU0CwAPjGSGJ|EF?e9m356Ue6| zHPl54Xc0i={dSb`6%uv;iryb1R_13bY#Kf>`A-*>?SJ=)taPdNM95GJJpM^<6C;w$ zA=p@rM;f=|u}rg#j%PBSpJ^!-A!~Re{%$$DF8b|75OKWs1{X1E^~3%UkEOj-vZChV zoxas#u&wGqO<5{_yD?{hDa>5FRDYyPm_FPM z%F9^+*R6n&frKPM=+iocv-0MpMyy_v5vAUAd1Yj+A>W&@c;U!lX=LlsUL$8s=O-k= z!#k)S&>dB56R(`7IHu79UF+z^=TV1ri`&ty8dEL89T23Ei|}1n4;l57!E@c;+Ay4# zI0A5^O*{Ogx?E2H9i8)c9tvUIA%z+5y|a&iK_#fgzbw*fniU08!ITT2@P^xw%WrBx z>872WvSVgPSR0j{oJcKaSpMMdJk}M+v{#?6@O|p60m){*+Q4p4Sb0@7g`YSp-As!O znS)!|eYLb=v@dZ|tq?PBQdLjotcN_9*9NExeJmaVTcP5nj{;^ZzG z3WojzZGLY^b$rce_s$lmuSQ>%@o9$0zDV(MKN}U}jCNQ9dPZH!gJ|1W3O2W~2MUxI zYrh+1TQtb6cVVGDPu4eL9i%3Cx-o@$!+?w zgwNXzBN;%UJYqUF!VgrzvvAx2^cijzQKdUr;NoGy}LT>k_K zVvP5!L^e37nKOh;MLgIJ8Wa;y+yNuP)!hcAD{<$2KlgbRgo-;l{KbD~fdGPxu|gSZ zz*g%!wW)r;gr8C&&Rb>Wc5H3zYNIe5853=j8*ymH2j&301=D;G=!f%Lh67QGa9SiO zb{#$=Y}%p;&E=DjkDlC5G|dXLr;4fF%84q#b8vdNbyt0-N1;NB)D=!`eU;duoI=AQ zy;=wcezCtLhQ{=GQMx{ZZL^EMEcogU?9(c}MWYMM8sl*rvup8Lp<01^ADq58XJ2PS zpeY(dUzaiugAunDPL2htK9F9@!V;&FT%kj$H5wB+Z|b0I0-ZWRFCcfwAK{Z~88U?w zpeyHI7Vp&3kG5h>vatgE1rRntKWH#Jpzl!X zaU#V_^(LCQzz-eD7@&@GL;owsZ)mRY~^2K$UQWJJ+@MQ3W#6Xzk6d%NUqXK;RT?ZXwUNC9^4-;c*7B>{L5s zEqr(`(gGLvm#2a^w^`Rl0a1#4tTb+_4X>&PJ&j70X;-~SD&X<~+9`y1lsg7XKrff} zRYQm1NNCk@4ol*$2A7?OfynjYjA5ajnkJf_{}F^vS*qrL%oHgmS=Bf z9&E2XXI6u|f?KUZ`Ro=uLHY(eV<0+^;zFo5(WVrIW))vWC6TM7m{2~yl=*NwUKF9w zhDNG!9FaUg+U)~rtdLzgr6`$eD)A0QI^Hx2;Hsv?$lTLbz6eoPIJHg^pDV+sqOhVv zbO{HkLjI6XjOnEUnH_iv_F%C~Rwj2zSC+$M&b1uH%@aBuZHF$7w{;~|EJLG969HAW z@^AAPPMWI&L;ekC?oxVTh=(j&5t3p(HG4o9*b;e!E1|lGj+*sNCUO<}uAgZ(I;D&c z=xr9&m*`t91No+rt-vO=2=%$jw#c+QXvnM3nO5(<)2>~_ed?2fL>I~RMVXm*uPQaq z)?AhRe!K%G!XXbKrF_=6(q6)TyubSWo@Mr@f?jEAZ=C(Sfa0PE7xcv6vpeL8dGB+tfR+L0vu)W&eErTW9@huI^BdUf1b!GeNMsxgSmy`d=bOi1v0E0S8NI~>zF8~EMN z(>)IJJGUGTmz!Jo`hHKB?{9CZL|boXhyMmQ)`;x4x@kuc5AJsq!UTxAeJF1GCwI=) zuC_`wG>ybLDO++-1Eo$!;O0G&fZyy)m$!H4THKwoVFH`JE~!Wc#amsk|2BAd-}W{# zf3MUxZk0~+cl7qa|G`PXE3oNRy2qy=goie)*GEFs%^92;nyp=zIA@6oJxb@o%-YQB zxnP+(UcqsbVB2=e!EuXq65sDdFsNr%UZ{ufHOf)0kvEC9wP1>7HedUL08Cf?{f1xf zwOrbJ4SzF)I(KhNP=z6+_ESs3Mnv%$HYOSB%L$E}lJAjIXV`jrw%O?jTTRS@&8guS z<5?jtJVQ^QLeSJUor+VA6h}w_Z#|d0nivd_G(c@{69i`Y(HXPpx&qaPco!C&Rp!ko z9otdys5(@fr!!juuyVTf$HG%Q9nyH74dZNCz5^>Np)3}8P0OZuB10+*!&ID4T*jGh zF+w3;q;Zy_q#8MhhTz}dPsuThdY)k9%*giEw)51ed1<)%gbXre1^}wwa;$x37Nl5w zc}IL5ixxXargvEncqBu%jZpJH9M0kZD3qLa>^kBonkxV4>LU@u zr*HRC;QFa{-~~@X8vg4xr7(d=mVy~v!m5WaF?F>1l6mvH>32^)&-OKr0O;z@;9AF( z!DgS^$-mvoqmzG=7t>esX9o2Q529(U`>wocHzm)`%&VM`cxcz(fW$%ledZDx2L5y<3e+Acd!$> zwpJj$5#Q$Dy~$J*nKBv8jJ3J-l*4Ye$Kp1|Nnfi=85e_$*SYo7|CBuGCrzvfWo|Vy zhUa)w4(kB6*y69+URnB4orF+Io=h#p6Phus8>}6yFRV<%@7{W-aa?+v+TXq1=8r!* zYF2zFFJL%Pvll#gYMe!C6M;mf$tPu8&w|4*WudT7Gb*{wJla!20R4`dHxnjae& za$}R8JtgxWCVet^yjfVHf!XkY3IXJEl|8WgfP1-&Jp!bsAlfbkG^t!g!Q2Hbf;iSH zVFN2KWQKWL0VLKNLJ`yegWoB*{LMI_A=V54I(tn0{jMc|H(iUEO4LI8v&4K>{Kb>V%1&w_>?ZjEONHd7Bl*L)G`-bbX4As>O zE2l~LI>UyEauGb#Ypu_{5;TM=G6v?6FBHW4SkBkUb(ncfhAh$@!H#TiEfjTsc7&JN zaUg8MOCxU50gXtO#f)BcFni&*Bzl4+a%1vR2A?^^s&fN5gr95>3&|x)-|Mk)HCE>?mKJItM51B zH>~KMWUDgW96aoT_3PL@zMrVJ!>h{Z|C(`Smk4gsvxKt#{VKEeEgIu|qw{+=B;u8n zWTgcg<}!jURz~=5i&bn!>u9|g?s!fw_e9nRJe@9^uq5fpTfhwJjLSL?`!d}jv-NgW zPWM>{(k8`s6E@is%!+S2pC8#lyr;RamY`NaFh`^=%r=NXrB&4oO%>T`@0HvK1se_o1Q~xp%jM?y@O}a-Dia)vPmm zzLuJHZ`N;916Q224jv#=DubK_aNieT5v7F)>fxgc8Mntd;N^lU+wFy2NaZbB0*N0( zi93+1NxP#tB{*q=XNiJuRR<#0wX)SxzFW#yTc2xU?~zS&EO=RDHchI1J;v?u z#0PN{5zX2YR>KNPyX9`v$!@+Dv}ScY?%-;_|#?+`gKHoQI{6=HrA;CP-Fc$;}N7Wfnf zJ^1ty#ec`X*W0`mKZHG{cyd9`NX;Md;u>>4!rCobqVfN5KsJLq~c ztS6q8Z5nX{3v)d@bVL^ufWVHkEqeXA=i|sF+$Hcj5$+au$9yVRs7u--yGx#dtQ;{EqCe3( z10_1*1j~Bo!CxWpN=ud;KiiI#*1~*6p+tFM;kBYbgQ<_LaO?0XSK>S7t&sRund6S9#5?}ypX^t3@t*5_ylGFA}RK^$i;>$fdzDYnMFOp@Jmu`Lcglh-Wl<|1L# zD3t2lMVOlVRU?NeQM(PUS)P@^cUMl7Zfg|7Iz=;6S6`MS`eoD+m}cTIp>1P%AsfAg zQ6(AbsIjL*fAXry$72{D8>A%6w$0p=_u;zY;$jhiy0cJdw_xg0z`wxo;+>I9sNc*^@NBkK zt6uE^`ctqk@9N0Ef9NkqbNV(zXEcGj2d|W@BrVV-j|AH_$6Pu70$Kjp*xOOpFSz-~ z-`vPcR%a|-c&Z2@J!CqkxnK;XFZ1HCI;Lkt)b&V;2%giuD(^~ zop831eN0{Jb43&n8q&(1^O8E=#PTf|-Q7z7?w021hT^XBUKp&O9YcV)U}e93A-zzn zFqVR=07jj}nisySNE>7|*g#GrF43sXc))->obTIao z5{ou*OAjr&R}9wciwRLwMga>@Ka^QT_t-ExL>IbPl7zBe`*-P0B0c zlC-)_sOiUx^w~o~^uZIyMJY%PKm{!})xdAQDWeZ(De6D{LyyQcAb(bA<4J$B?i1IQ z@L9D>f_JlH93U89A_N4f)y;+b)tdn>u*AJ*m6D5!rWg6LZ}s`%>^>p14H&EH81@D3 zYHNmrnC1|QKGy1&cE72&l@0Le^6dyv^JX9mj7`MA`=On7(adBcx_xqMeC)6n8_Fj- z#XP*7VWz%^8EW`#(Z@>vSYF`w^t1ZQak`p$NE9UHHibY2mBsPUE1ztqHTwbtKYI|0 zr;OSK>KAFfpS+Vsw5nm6hz}vNVrB%!)msIA?Bm4lG-{(QOx(THZH7vt_s91=J$@@I z@E=jb+se+2TypqnbMB)Tfg)|OuNN29_0;ojI#Y#M8Ih{qC_39-TRbs^0*O7&elE+S zb(89ZuC~khihffcr&*(!E!YPPYU5=u$zg3KzOsCfUQ_i;lanioucG7^yH~ZI%6vOw zn+a$#Y8zScpe>crCwnNZA1FF}qlyYNcf0lVh^1ev1U>#BjZ?R1Qi2M4{D&sSQ|6^YWsL1_}{h&YZDkdhr7lEt&lG6H~dB)sZ;YkEXJ zbLzhd&V%~(F4aZ%>YZz2YGH`rP~gE@-a>-OKRI&3nyc7hGv?UQyWi{ZEi{JsF|kzO zG)Ja1Y`tP1XOVKHI3#hWzt_hRmvI9Zg5~30V5qHW#Ph|Mr}_it2ra6|k+N`TtCLFk<5K^Nl|NXrrW?{ zns7S!PnE0i1`VB$AI2-pYv*XApbkXvJ%M~rZXR3}>GH;Ud}H;-6cLAsLI*4%to*0k zaN`L$I>oZS(S*rWoDi*~r3OwJUU&pz@f_cMxKRe1=I_zOywHG-Mzxi4S6@`0>%#J; z_C)FJqLZQPGFb{ZTwmE_Y+0&UKUJ+Jv1q*F(=ZS<`@HkFB3>M@vkWePSMH4fq!ud1 z;~15of{eRHly<-^4caqkDJ9;?o=2&@CWkBN7j!m9bem29!_lnLq`<` zqCY#9EQWH443hlb7}hJMAn}exZmc^e-8rcN+%$GV&1_DTFeK_82F!d2OmclugrEk7 zgT!R|#Ry4q7JN~(_Izs7hNr;M=Uw^=I{bZxNHtd>5llPjhhJMlqsbj-g_F0Q)$X-d zk)z^6a+0>;cvn^>QuCF{5kk17Yj*p+-_xD6qbxgPwo93(LRDcs5sTGhf}gvTyWa-S zonEi&m9P8YGj9jV<`&__=d&^?)qkUy%(+n1NK7m&|3i*rORcj5`y$8TKtKWRQ6D zO3|b(%au%Cl2DC0|U5xs&vZBx}xA(!lmUnaP%jFt>4 z0qtGJqgffQwcP(e#3X%2e3%CEOS z9w)Tkp65q|?yd6TnVNg;9Z0Y@K3~&O`mC3Z;MVc+i!S+)xL4@wC zD#&GxKS@vY|MO0(02Me}(aO`NW^Ffk|7&*E)!AQTan-xu^0HFZlGKo`f*q9!_j*4M zJ6e=L_Uz6Ny5Ef=6JM}K`RA~+g0N~%05K}5!JODu|VA=~t}4AU7RR%Z5Vaw+^V$1l_ZRpFgJ4PO zIlnKdNQjFQhF|bRgj7kCdFq~U@ez`@oo=f|%N;30-^x*Tv`jI-GPu~7V|?j-9`(0BQo-mb+>eV@$v7*fOcAa)m$X8y=zOHD-`4Fye=X5 zOvVz=R>|Jatxpb;_8vyVya)TM7O%_IiCM?Zi`6phH`5q}t1Eqh zjsWv{;QC~b>g4I|a4GEWM#O~A_kMnI=jjLM);fRZy|G=)8M~+V&{WS%Kv5(Qg%bi+=!>%TUq!*{0A27lC}+fd z+>sw~HpEN+DWrq_e*!%H{|POy|4)Ex{XfwL=?uS*Ir2SD2Ow?{v=3MZ}3z;-w`K57t|v7;^X(+$fg z7}q=&U+8a!Zu+t^7nI(iAFQA9&C4o~dbJ3}IeHpAsPno;wF2Zfeyh7O_4$!Su%Cbp zbrbrvyl`88v$_ptp@LKa0GU~><=fj+7m#1Ct}{5)S?h0)%|$q`dp4ui(Qf}6_!Fv> z;TpV$%YNS8JJ8wS^fkn@5nPP>H`7pPLTk~jn0ht!IXcRA&}6JO?niCEZ&l?RUz#}O{j@B`E$59e<%Y?Pr42M-R=4FZ?HZ>r`bjyv4q4WwL+k3*;;ty{u$NkTT((z@6#i=B(7OD7 zHek_G1MkEuhmY_06$zI9^6N!BbW{v&C1G%EZUbck_KY^W8MIKRqO_J7@~a)WHMwFM;S9G_;(i&X>SK`*DI-@Z_lVM(;hfk)pRJ4N-4}l*(z~hPAhS6 zwAD1rEKK*yQFO#ZTS>rY)8&B;8%r8x7MWI~Ee6&p-ljPPL1-~`;qq15P+0&L2KWYJ z8;t}B#z|8n0`(b2y)J&DC_V0#V7M9*wDJ=zlgFPL2pV27=E*jkoN98MLg%fa3jY9= z(K8MM1fdP)4h?lAzq7|pF)~$sTum!acQ~)jh4yVjJ6s-qA?ev{kHrIfbtC-{Goy0y z3eQIz0}-&s)z?WknfdT|8g3dwuX8xsVQN$=v);qWI)`UuoP*?A{Ont3s&TizjX~>v z!WJl*G2j2`5j0+pYuk#@kka3>`$ARJ!ihEw3-Bn-r1^9si_IMxBV+P$|FWfT)kW7y zghqznCZSYilgWN`G1dSh|HMoYs@Sds2LvjJFP1ix0Yz9uQbxR+f^!EKyUSC!6Y^>A zs6R=V>{0J>Tk3P+Qre)r{HN{C?eHnV7N~s~!F! z!eqIby1iV=VZ&iYZIY1Z+<*2W{9=yWVcE<|d+mQ)1Kegk6XF1c%nmqpL@C)9_&G=m zd?Ub;RG`}YJ`|LIhua?CJK;Ahzwc|aX*@iIs*SIm8tkc?d^j!j<~M$WLhT!Viq5zq zs4_16&2n{RmeHeinJaeGkKy#BDv9^KH+c+tu~l=GU9@a5uG^5)9~!pn=3H4N?q0&$ zlB1{iOxL>L!^6ILZdO;M|HCL(VaX}^hwKwQ{R_P3Oqn}XITQ^2o9X(W8MIW2Lu5MO zp{}mu`Y49qQ_ZX{1#w0;9S>R_l0pYfJCZ)Ta|hCxiHMA86oUdS`Qb#*RXW^I)G(*{ zcmP%u2&M$WjL)&(5k6q1+S2p!DGDhSOUTE}rzAeoioK&VLuDGJ*bS2|BF(H}V(NV2 zJrxqewd++*{UlTUu~utdYg*{)p7#S7iDO9Ru5)m;v8lwnAXB`F6Nnoys-m+0%jNw z{?6K5Rp(;+9zS!2_`7<3H`K#edyGgHS*(rc`aEIIPPZFYn3>y&zf+$K9zhBWX0apc zdmN0|ef*h=#TQk-x)&CQ?vWGezmNT= z!i7EiEoByhAU-?~I|bpl^4Tr$Tt}UiiKX$*7*?v4sv0u8mBB zJ5sX4w7PU*^wj@6=Jaj((WUJXzM-8+))^#Qh6VT49lAXjq+*NzULFdVCnas-CHe0F z;@>{Pkq%ULvgrdsUK|y#?hjZIw4?wb!w-@7HYqVu!m*@}a-<-CamD5uO!DDicUBcZ(b9oYkBU6cvrL3266cgu; zgv5y}q6vsis9lgt5JU+v;n`yLFs9BErB@xLbz|g4)O)^bx<~2j%Ph z*|IFLRXsknfUr4mLE4ZSCWZP`N7s~Iw#k?Az*)BW5d#2T=(5*FIn<(u&S$^0{1Kdw+r>_+Jyn?zF#Lgd1;9OR)7navHiXs$L0fiQ5WS3?n7uh zr%HO{Rsd(5y>ME@t?^%a77HJGS7@bzi^Z^D#10_bDi`X?d`Dy(*kjBtE9ciLw)}qQ zwd#*wwR}wV6_8MkTXpxtUt0b_^jGuaOwC)iE!SKQQ~dm6kL|p*wn7|#&=$Mgx8cJ^ z&-&ikel>mxdkoOD7kwSw!_5e9N+4Q zVpxDW2`k7@z{{z^u_?xd=;z}75rLT>@Deux-_%tBqzgES7Vh6MjMM=KcIRaq z06(g&*6xnXXT$8rN3_xwh-uE~a>TWOyZfq{qBt=^8-~6}NkoA)6R2reB>r50I<4CZ zFNK;Qj9UI5cP_j!3UQa3Hgz37Cy$eoEneW01u`oPn(vpxN5#XPL+1@5*0mXoUSrZT zFE=48=Ni4VV?QV;eOoqAfCxG9e42Ks=r5G(VK)0iE^%|6!59WU6|`@i=A$z1FP5gJ z)S;I+DI56WHTsDx6c+eZMt2)rPh9-cU1?wCyDF~8{L*wiPi`Iz2dq27PzqnYWOm>Z zLZ$46l)LBpi0_p*9X+Y*7bY^90%EYadl_0!6cfB6+h-05GC+!!$LxXS?dm4Wb4<}) zcvLaF1#|wGL>xsZ5(6<3rcRPEVy4Py=vu7@$>?EcVqP(aWt}&3dKWv(;Zf$OJ2O?R z(s>|94hX`_=yVZeydRXi9HHbvcLlswZWn%Miu$OQi5JZ4!zhwA8sDYILtpZ1Qnc~C zxU(s*cmk&hXn7R=vqVzz`K`Qk!eHm7l;4c=3RN$X zM8Zi4fZ2Sj$@gs?3(+)K0Xo!Ep3EvG?ccQ-KdErW@g!ztBK(%GV)ZFx^RsVy%*I}!KPG!cE)ZlC%sRqr5E z?6n+T%mgnLHVmOnB?Y(_e=Ll;pISnXFbqkVFzrK2sp20c@myG4XAIjBsYeS3iuceB zk&`veHizV@4RvVV{{)U(x9ETFC62mbn*3pbI(c?A{w-c~&Ve)eB&7o`Ufy>;L9e(W zm27bQ3*6$z%et4rV)IeY)SYg1Mp~p`Q~58xT~LD ztlOFh`E*LFM89`uawiuXT+Wt5aICQy{`Rx|gQ5s%9S8`sb`7$Z)gozo_EAH2<9FtBQvs z5h??N0A$tjXdR51*v3VpJd#D(<%yo*7hj{re+d7ZyXod)ZfyUb%F)CImV=c$)%gMf z<9~Bbr*w23_c<~BzI_h5=6OfAinP6g_x1XAL^^Jiy@HeIa1teG?&f1;W77xQPs&Ah zaw+ya%`77R(giX(16O)p()j$4+|N&&aY!Ct&mlL&q6tN;o@r2#0NVL*YfS#hK&4$E zm0Ix8O;|Z=)X2FzYq4w?Q7Wa3km+zzt6~)J-TUurpBZI!^qUd%H{VWcCwF2@E%*js z$4RT>XCzH7D(evJulTWCq@Jyhv)#)H0?=V6VSKXx$T5=4iXCSQDaqlJ`e$2u`E;4aV@- z0PFIFJslN4Wyt2FJF1vwzn!|Gd0myP@^$rhHHBhgL00jLst4h}9fKn@#0E2MW14Qe zS1;Zh6O^}z^5X)ppnPY+ip$Mcl%X{sSQ+>Gu?}zaTMQAs==BCEIoV+T!f(_A5uKV_ zlU4BK%fNAwTnOnY_nw}wV{`m(+d=Au+nHPVy8}=%epzMxt7ak`PCR65HYYCM7smQ$ zc;gZ&f~?sEi@flWu^@?2PDf{_SAuFk3pP_2Rv_uz_zTNNb0A^Swn!#f!I(Xe+&A%A zO5LzPA9#pI7h4k}R76M89;4LL~k-A=Ps7RgfQX3`wA+~laO6qMd;!UlV z`N$|*2F89!zZy*d5b)>nhR_kuIJy@J^xuUnd?G^;P%Ru3|0YjUhvm~E{t ze#|lM;x#n@oqNC3qA+t6zzhQX03{}YYfT3vQ%3bqoT<8s$cWa0~ouoi4pm$upe zATc{lmluh%pF(cB^PrHkuX5@C6(Rg}lAn0b2{XYAZfOl~5uPB}I`#^DgdIQxv+Z7{ z%q18=e=qG;xUQN|&%wV-T-3o9;);Dpf{H!h#5PC*t`t-&XcMVR$7hqa5DT(J6>v&f ztAa>vS~Ng-7uR!-`HTP9B7fjPxfqdJ_Ql}uv6@$t&yrc7++cK?t%?F?KZFO*{yMDRCmPEk!&5GW_Ol4bGICAE%X z{V0&r%TQ>dWO0bZKbUXqDtfppxi={vPf?pz1=Xq{FzEkfkMXB5>Y^F})1PqzP9_H3 zSOGLt?7&u7h9PCdhqWP@bM9_z_PDmN3+i8y3lh#264e;jrkOSn`>74W#>BSh>05nr zwc|UepzlyrfoRqUbR_oS+9Lw}_MDUUfe;)*(SG#2|D#Dnx|&&vuxXCS^`_jzS#~_vb?C!6-zi z++SWy`|z{_%8`L7SNdeHE@ZDn6s#)dXAx>hx0+os$KH4${_nJ}tGTe$9HP#?=-uL)L z7xtSEfpIe|d%C|y{rNV_0!ybkR#^1BJf2{Zc+qo|ag_L)2!XHc^@P^R`K% zf%1*1#p5LKhc}(7im7?CZGsZs&&(Q9E`#3Vj;^1dtOk#qrK+^X>r7T$;U#yMF;Gqr zL$oyt-tK)ahm|;2nK#~1G~TNkU;joab@9BIQdpjut{x03H=;mmw7d)fIM53|qsh*` zy={g^6Xd;xHLx=Vq+Cwj(u?Y1)#RG)4Bj{zK*)F?*Y4&6=MQJr@)->+TRDDM%Nnmv zX*8jUGnehWd{q{Y9^IhO89$@LwN03DODk5$unzU?D#wxC0%!hNXeN91hlM3N!`X7) zinu77{KAS=PO ze%vSkr{&;znV!Vf3?oPGJ7BPkZO1f(b1IhG@A?}W!)>t)eY2~-gWB7yKmCI~CAa{8 zWJO-FHlM?z9Ht&Pkfo1babrja+n561EwpJU2O|&s{zYRIUZ_kQerk}(avnXes7*nE zb5Pm23gH?r%EzCzQ9ud?_L$-WUmJQu9XhN9(;p`H?>(2vkjY9pDI!-D zA~;UndD*&$N+p+?mG*UZPR>>4sQCA(ffp#24 zIB$&`Ovp;V0a5AHJ<&#Hoj%RftpH;SPX-2lQJzxNuYp|km``5DA}I^>@5VFlLSmDm zUjrqcEaL(i;le=(noJ!X#`SL;@`2RndJ0* zQbr0#S>UehazBb(pr7H)q~H-?q5s)(vm?7!-6;3X!x=_>+dzut^Y(uHp^V+mYcV+h z;lQ$D>;s2Hm*%w?XcG3I!pi1VJcL}8zC9dzwhKGrosu+jF`-7R?9Hzurb7sf0#zf1 zY7!`AK5fH^`aglV4zhj5H=&s5^R% zF8{02IIU_vLu8)Tct%qxM=#sp{doKD$^GHf)Wv$m!kx!D(+3{>=gA|bZMC*vZuj#Z?3W+`LL+{IX~Q3FV-Fhv*Op#dkSsxn zXamIP<{UaZN3jJ<&d8%(D@JNuI%I@N(pjxAyAmSuOdVo8higlAb>d9Fcq=2gbiC3G zi^Jhr(D4&jppM1~Uz8;8Y%e4PE(4jzT;XgMgRC6qCEdcM+Zwan`es47uz-(Pp+maC zF3NXE6z7Tt8~#b?aNa^WRK#%S5sXxOfHgzhDO3c2krl6y^ItWOyH)_AO<_h=W7iTO zrO^zAbn99NGXWNBCqxYLfa)^n568| zJBTL?=u^PKb>wjzkF=_`wdo->h-HLMy6ZK_VkF910L}N-WrlvX{7yZWHAf6GJbDl=Znl;1{}rSLxJnc@AGBp z3#hCbWth$=X#=SVH2USSgaUFSetl`vsOAOj=20A?N#@69 z;Pu{|bMD;aXM0SS-fH8)1~PfFdbUoKV<={Ja(|v#dUC(_n%Z)*^j2|w-T^c)%~?Fzr|(WH=m0z z>y6-8Gu6eHd1>Br8kkYa+IjKZbKA%f_u*@pS0>!IL5LR)Tb&8Aq+*1OiSBS6BB%_4 zSYY!&&3-+2W(2w#FAC)2cc!_cW?xzL(wYp}TeS(h3t}M%0ZoFTfhtDBlU4T!@(h7lH-Fq= z2^_%BIM%xm2d0Y&%~h(vCAu1@A;iiQMs4t$)*AuMg;j-+qcHy@H5v+MTP?(_23!@E zTXljeUst?aP6CBjF6ZDU!g&Zmj}j> z^Nm(w-AHG#fz8=#Yo@b$F2&{5uzjJS)JGyl%^`s`;9Sc`XG);2h~4+2-+zV^4J{@fK@S{bt1r#AMO(~3+9hq(h(B|eb69e_^Q?K6qbKTNqP0T*w68TYM&dqc0!Cf3OXq61N{gt`pF50Go=fo% z$@oA-8ECLdDs1-l7O}=D#)6Vb;sL_b;U@p+Of~Gall7c`kW3t4iSLJpUe&<|3{)eH zxTuW%Q9N&o4ga>Nx@Ysoo!GgV$_-B^YF8&P_*t_5tWG2hl2l;DgRu9ku6(JI44Url ztyFzX0VCK!?q^8#Xs zlh`;lm(sJ%dsgq9ewq>|DsSTTbp0d-JT8oQDK`JNX9ByCK{ur>Oy;_6y0 z-w7G4TjF*}jZYh^RpELb?3_Miv^m}#kY_rVSz~ zwZ9O5t#@cku6$^$=!HziUQC8Z>9(D95fE9~u7P|6P&ub=ysu>c<>Vg^8d2B#V$PXC z2iiqce=dWdg;DgNz}wckFkbmKYQ231g%6-O+*U+EsoMf=B_74px1K7R;O$Br@A@dN zJK~kfHcy|o*Q#QbsyFNNf$C7J(?Cl8a7=L|69{KUuKJKKd1+)^ai^3W`abQz1_(=- zY1AwZZYg)|f_8cp{giK6O)Zt8d;)a|XdZD|FaCe})YwrYN-8(Wf1YL4d?;wUQ85f7 zB5R(9sVHM2Ys7~%3-;*#zoY+eyZAp3c!yylK+h{}u%>j!PzsE@H4)TX-0u~%<+b9X zu37F?-IMj-E>6taXrR?O(9}v$Q$+SF+)25k$T;jE(F8o9UX)wMQs#T&s&kMV?xr)Gylmd zp6rPyPIQ6!><=DpQk@_qH?%?}x_Q46XxfF5m_zv4`sc+{9S&aL`MA=cPZJ9W3~SG0 z>(q14$p}T{|FGa>V@m~^S@S4Qsm^Qqmd1RCs!#Bky5fRDW`6j6+%0Wa z*L->m8U1wYr$kW{M@<$_8hSk)xN@rxe$1u%9ZsIZuT}maPAlnIv@4j~+4K4rMqRuQ2!!FGjRO`Rnb(> zm3+4+x+#dv&dtf_X?$ZEg1(3KdUJrnJF3zm8ya(?)n;Nz~VY>cgEH_XH7 zBCRi&5^T|O+JsbnPb-mx3LNuR5Ke-wC*}QOU5JEbHoV&ew%=R|{A@0v!>X10^;7;R zI!U^BD6;0GJzqHvNI7fI6qJ_yc}8z}RgA75&KgkAjp~F7mi1A3d{c z$;zVHgc8Xu_-{3N^e+4~uuaPh>S>(};1!N|BKcNeJ$uUurQ>iPUU15-<$ku)PNLt3 zXU(KEGm8XyYmJoAuM`X{!)hl>ij509o6B_kyS?}a#SJ9F`MciI@pb`(6WTV`_HbOtpz9Jv=n9+0 zHqNv$~#c%3#HL`EqqQFRxViN0?{jntkH6|L8! zh4`>|#l&hf{rKC3bm6lW|1$pih@kcpX~(17O@np<#~Ud*D3G|kG`BhyZ|##Mp^8-W zBuXX28T-jTxH+TtIl2$j;`rwa<%e~hk|_!I0s&`S4jj|?USZiIO%=#eTy8hP$70&4(_j%s#50b)Hdn}OI8C@_ zqNV4jGx5#)3ot`(n&+H|)SDjktmkB!k+~!U{%dndk8%$ z5WB&FSMKgSssbmVdWxV`j}JVl&-YNrHw30J<*5Yh2&fGTF;)x`V>aMfKd2aC$Ja+d z92g>tiLrh?=Qqivwak*L<82*Am8@OLOvgv?oaS3>1t3fg=>R}{meF}xLup$OH5^h- zZCX~wu)fp-kRg^Zft8M4D}HAe^79w0DOz$Awa-IJ-P0P&twsS#+rc>a5b{bYmc>l} zv{U68fU5fo8n>-B^sRJ`aTPgjN?2MPcZTm+2ip(WhoXs*Z}p1 zn2WTK*UhYsifkqUAo{YH4A>}k^m1BOQ^MyViukFdxRF7=M_xEhF0ki1-`h*C6flkl zw8z>4|KL@uAe&5bvetNV5|kyZLv1aXc^Na>+L#Up`(^e+bSEBKn@l`}=;3#TtNg0inp< z<*L`YOwTjXW(@|a`|fv92noBCva6ovGJ0wZDU8IiXUsi7jvJPO_()xhs*QN-u1JpIjAuYATh zt(vPRI)*sMx5QkStG5VSu0K&~+*9|7ZY1;S#?V~Em1dC7kHSU6(4$n4Jol+zCGW)Y zw^8dZDF~FMvq4_SsHiBoO1x?C#{>r|m!ViQV*KO;SHbiXUUx*3JJU=Iz8x@zErcR37TQ^-ueM*by_+N4|}S z{`|WSLB({&`_w^2_|LGTV>kct=DJF2`=?=gTdGDG44mr`M{DF`(`F-Kx%2g9S^ra~ z_i=4x&ag1(qZ$BlcXS*o1t=diH78+au=GR~2?Z_QOx-Hxf02~*Suf38T-yCa(5)+I zS=%sh@u0WEak9m%x!-C0Ig<`2yYsa+IcsAcwZFyqm#kC2+seLmDv|v{v1>b=rpMvy zaMFm_4^3BV?|p(&!324vGx^jw3P%g%_%iLB-%$U{Rjg~!93e3#NdT4&#%DoL2{7YlIVxWfDVfSfi>OjmNG6&2HGof`_tu< z&I*~@7sQ^I`YJzv6JT;?z}U5OrnJ!r)6aosRgv%zLFy3Fc+s&#GH&QYsq)RR`d&zw zi^`nd$v9wO=F)h~E-o{#KVnWNTl%bL((>~0Iw(QkK=w_{lqQ+`Q7({0 z{eQaE7S3jcz4bIqK;l+rj~U4#C1YQC|OFX`py2ympt+V#+0Mydy-|0muv zx~Ccv1@xI%F!Dk!{}69OkLkCBWb?0JIg`Qky!oV&Hp-;ov7(mowYH;P$R`MVO$eL( zeFY;i(fKePCLHg)*V3Bj&j#rkgSK3)eYqwF7rZ?&K_c(|A@JKkw z6=_v>B&JZI+Y+T#`3pRyXvE%J$9;Vqr&ckkKB7>p96C!U=X6J27;N&mHwNhBs z@?P!<>b1IHduYFsXw?`l~~ zTq6&$Xq@&tlU|FG8!n8MStD+Q|FREK#!TG+A)j*J`P%*auMh}YwI_$?@q4XTlS2A5 z(DBr0vtlok5-%7Q>^uJQs%L3&yl?|>*Xk6SlIbZBnt~@>WAS%tLxY~#H0hK=p{fu^ zHsx0UU7nh%2SxtkkJLT+c~#BqL@4_0t|E$u;Rf-tC)$7Di0rcIxiYv#ig_7;4tJb5 zF@4MGN#km^ufoQdodORKFOr;ILijR%;a3z+Yfk1s4~17K9!I(83cYLM(kh z!OEGT@0pwvXNQ{Hoi&f4&%TuT9?;_+dQ^yLxE%0mqrfNjT zue+-=x97*BqsQIT>!Z6kq`McUT!&A0_vg#U%hIzB56GMRPNDac>*Il^D=R@g0>9SJ z=lCt>vQ=P}X7M4Qp|4ikA5v-BU2XA=v&%C9(Q$tF+m-rF2{C`&{5U4MntNWjP&leg z2j+Ia9Kiy)@>r%Jjt#6rEkYcg@<|x9VFrFPym=0fP7b+~fxF$SXF&c#(mo3vhfyVP zX4YsJPhz)RMv%FL{vHHvYcDryHSkcKN&o~fApxTsN}Z+;hG=p6-ozK!z1cUyEb7$q zH#)qX#|VRHasEBt?U5l`ROsDXXSt@sq94L#*sL-~T#7I7xpnnIt3Gxb5n&r+!=}%R znv%UOHliWGtHz&0#OzU#!EJ^CR_zF>#H^P#5;(37ID%a1M&XLgiVQ{*8D=J-yQ}Dx z7J$;r2-ZHlqzB@~<_AWjtu8l*P(G`bU!0RNOu9CZvXa+J#%-k8;<86*=q?X>QI#wS zc6=#5zRkU!X}gxQqbclBHoQkP)FqZ8)5YL`1wZF0HzL+PFh>-#{t9jS1)TeNXdH}h zME@8S)J5&u4xFt;zR1Q9YwtkK>uHmh3vli+a4yAHf=-WhnL6A@S$$i9BiwD%J!n@w zaseT3fDhh*?m^si7G=4j!uo*TIgSD;7a`uwWC)H|nWMYaA%kf{k^OoPjG(GyRgFu! zMiNS1#Ne{RiM#GO1&KtcMNUdE!&XmVj`;N1#+V4VI;+Dmg21}9!@-K-JMVcy8Yo}T zU7`>;%IDMYr-^>_5#mnNxTDnp7jvzCHrz>)d<#kvm$Ep?;0j8M_Q_UC8ZBDMRd4Ky}a zF7Wf^<1d|y4K^S4sM0dqByxAnS4CuvgCim3DV>tGRQ?EMP01eg|I6Jpv=NgPM-ur)hC2X(9F(H zCnypv!o^oDV8$2W#|${-2r%PVu3=|HZUjssppaN)mRbwl1|5?}0Crz%HolTXTdY3R z3}Fm6k%Qb;dilGtDq0_61~-P8$Uv?u-5hWC-^KxMqOEi_Nn7auTR4!kg&bfe>Pr8& zsKsJ>wE0hmFwtB3Ql(AmkT6+F4M?cs1u+aAje2G6>5qgqq0G~imiKCaOzZU@0dT^EB7?_Y)k?U)k zvixg|VK8zfl6z5h><9;~m(Wq!ic_a4thG47M-1as%c_z1_Uu=N{nL1Cd)a8GrOg@V ztvCGpgZZ?U;oGgOKt^9=O_edE3{>|$_a~q1V-k@L`$iGszN& z(3z^Q8p(SKExH^Hl$mGpyBMf{j$(Vc0qKu=b!O18rHg~&e88RtkGK~l)2dR@Rcg2y zeN^@3n`=yTzt6V9lrz@2Merh88*oH9Su0GcB4cK~@kg0yG835e0Sm+W}KmQu0%1~rO(pMPB%sCA!{v((}+vj)`0%bNpH`D62 zp1yvCP0x#(NMUOFVXeZ(={5Qy^INh{W1-8!KLnI+LvL znX8?R-!0`2vshRPJoJ(gv_f|VI9qZ|dC{Bu{iBE&N&7U_0$O8sG-7#Qg`yC!`#Ej= z(pPdN+@v1dD_xj+B6?RGZf(S3V#i)RXjw)1@JZche3>eU(uIAA>4|nNLJ0_YH!uG_ za~=9Z=fr*ocusLGU;XV%lk)bDD*m!I9yI2L&gJ};|$M(8gZ)>LV*>Z^C~ z4~9#X3<0UVf50$ORW8uc!Fae*>w>=d#7jE5NtvAJ-}aCl6blmxE^_Hoq!WtlgQ_vb z*LX8tY*Qu%0G1QySk2X3NX3Qzder*V0HYRfc;VHCpp22_h0$@#suEYjaSgVIC^{@{ zR%S9;8QB0xoj(tk+;Pxbn3OMwy&>bMnY-=y`i zV~~deG9nMIbD{btT{f&N%5o+mxyJ!Xbp#S#tNv$|TKI%F4Yvz|h#0)UJB%5_zNUe6 z=txmUQ2Rjof+?cBK#Z&&5~TG?XfUHfS1THOHc~HYzDB%N%V51;DgVS(Fp(tcWmlWN7CtTxmncSoIS%*-<+%P=z4AG-(F zKtB?X3XxjS?;1E#@Z)Mw_+G^D@jjsa2l5uwVqTuuOCWV#KsCFb)7|rweL)#|@N}IH zqQ33aw9Q>1^;DA$?x`+cAWiHl<6K;bL)~f1Q&dTTOLV*W56~fC#lj3>&^kY0vkSUKzFekRm{IYadUQ?cKaKpVLQad4!VT20tAx8<{ zU{mTo$Qz7Z}p6M5#GXb15~_{{?TNau7<%`*4{>k)j}}4u61&+7)fVWS}4Lh zyS&EeeBs$xiwSF>)nkmy+5}H?$o_*fYxYqJ$#zMzIf5Euhk4z4jzo(sfnRE!$;Wv( zdPiJw&qkOq3MEa*?jnSiAOYA$0oO9x@DA0;ZsVZ_;&1QTc~pJR9Bxs~@`h3p2$_Nh zk{dG=*&c-EBIuW|c@E+UX!5jemP@F0VWh%dR$O0u!h- z2@f1OA+g^S$1^+e(2&N<{ND(l2#~_!r+zmLV@uTBe+fSnUL#Dik51ekSl~abofYfN zTtyQQRxqr?=XbAN{GX`?I_djLOI<8U-`WLQBM;%n>sNG#1W`#N`gg|F>^seHk!z_9 z1zi9IJ@*|z#N;)@`v>TG0Vz;zl+}>%Ek6GW6ow2AIkQx*aZsZ^F1$ofWN0fjm-wBc!s9I0lLwskE~-h7tMN5oEx=WQ-}^vQ#%%L&LA~kS(qK;&~#|l zhEEqb%YWpN^(oCp2AG?F_!5&R^4pn(qZo;S5_xPjv96JO)#+~Q2sEqMB}W(XGugQI zNXvTwf0q@u@M@PM@J(<2Z8p4mOXHEWFr1j4fZ+Y>&KpyIuWQ!QpI5ah&?rJr-oG2} zT*<#hffALwcC2jCu4+-&)=M5M$(O0;at2-|(5U*xv|tfVr(E- z>1YFhUy8UepQNZbJo>GJulYG*!FDyMFy|=%2Wl75K(h%=MGkW1=PsH_se zs$*E+3)RBZ@=4+Y^q)iyJxZ#IkIQiTE2!Z+*Ps;xMYr~(yYaZS99QdsBh{UGbm zb`JD*lIPN>@H!N>AEvc*a6bXwfWoSFcFnE9)-p4_=0gK{=S5N+Wk$bo+I_dPa|X6y z78#V2Sj{-}Uull2h6?pRQdAZUwM`&^Il8!Q*}Sl-Tp3sa(q_3=nZg{6l*&StFgnDl ze4oy~^X0o`@i-%4dqyP?d-51n%4rZFn)=SWu(WGAf9n5k=tbFQJG2MFGPIN}N6PJW z>n**?=Ow2Ka0Lzz$K1y)##ZiZbJnm?u{kZcIzD4?)yz~CXdBZ>uF`J(UfUf5Dye$% zPS7)S)I_TIZj)#Bhp&%2sQ7n;<{=Jk;w^Ys#b55R2F zOy)urq>Et|==(4(plaAZNw5crhTvJ}ViUf{2(90VNI5TSdP50`9mI=EyORIWZX7`G zxQu-ScE>d5&;~A7ENO<&u6h0IUO4vQ``9#QU4As27)VL&BgaDn0HtUZf@um$Dh_<10Oy8YxRZ0O1Mb#;C`;v=#AkC@sJbr>xt!+p$_G$=l3@-tz| zFZR=STK%_Scg2~HZ`-Sz;4x*a-`YXco&W~WC4o~y-S1EbIH~ESb9^a+eCn{JD)H4W zkXu2mFA5if`*)fq)phu2u^0O1=fu#H<+efA$IoF9K3-F{pm6B|R5snp8NbhvX;!N* zKgkH`z10|krkw9sPcGa`&4%3RPcO-j(=|HdT5j1^%;yq|1_rltj?b03AeKbxp#)-J zcp%uT)4tWWm|8b(V zAEG9k4TD2hZtYsIw^&7`-PTqAIi=!`r*N)$&3?nReQI;6fEKF_T;(X;wu2_a)}w`X zoPU$I2)dMoaaj5}x$fr~K3BW@UWYBPM-leyyara8DlYi>h_Cf$uu&rU4=@hwn@0aO z5QQP5Y%#D~LC|7ScEHYMc8lXzV34sq5hqr#9KkR>QQV(@O45mGkXlRL=LauP|O0LK>-XZdwtCK1SLkJPy^8O z&eXR4;kfOS@fnb7RbuxF8|99U0gr2~QK1u` zibkPq{|GIlXb_AF*H1LmGqNRtmRh3n8>jGEeWY)m#AdZ?{j+@Z)<6UB6a;*VuIx|n z7hT0!LlEFS5j=N1XdV$uzRbI{#50JXY2-YNN;YSf|NIeLL1W-3lIZ?%J@*mKiZa&{ zPaGNatKwmK@$cNR^V+vb#oHfK)2dD)K8Wk45DC#<$+JvLk3J-#LYkpK>7-5v@Wx}P zyeYW>;t@zvFf^l+CUE>=0mEi}_Q1YwOT5{H1sw7dyCxh(e zOtp2q5!FfW*OSsCvcSRl&Ije``+Ju^DX(*0<2gh1{0Om z?j^Bz`Wl$h8-KYdhv^ZeS2tq-7N^FVuhCZGi2fJ`%U!?r2r74#$X2UUBvKKn_7jk* z2$tTt8#4S+jIs*K<&mCA zqUTMwAVpA_lad7kFeWt6K|Piorl<4Uy+2?NQaTT#4=Szuh0-;-FnrAd-cNBqIAU%= zT{?@S#Pn8PLb&+X7$)OL$(P8M_hUi&YNaJ2&c}-_)A6}Fh}Uo5`@4xDK!hs`Rbt2D zo)g$7oTW&~NcdS-+B(K=XG2C?JlA-?oPGL|N;j(*?tvZ`e*JW51{};6Kp*ITIMAym zGi02{Vv{)WYlKQ**8Z9Uz(}6^q`v1X`77a4>Lh)6A%OJ{z|cm_gUXZCdN`o;^;3=0 zN(2kUTKX3xKy2CAce9KMUcyBj_$``hYzpbs+*eBCnp`I^wMD!iKP`(|wo;f}+Jys3 z+T?M=mh-8F@~-ZXI)rwg2%qbz=_W{VJ=m{@npgQ?KRpM?dZCHrxUzD z=M&6Poq;#fasEp@9-1;gG1B6yuZEPL+9qpSHz< zGXwFI!=Lk6`SZX7g0t8NYJdAVf&LO>jEFb`1NA@Xqc*dJ@RzEYCLhnvTr7ukVNCpNT)HYgzp&`B_o&Er8}zq%2rAnfHfX0wo?qd_-(DgUAgpd+UxB? ziKCFA+a;rs9h}>z|9BNqWJp&t;)cZRjZ5(pKUe?>~*R$s0 z9un1W(QF|2&a0*_dHuX5Hj&kHsIVz@#M~lXJ+mT0fLG8PA`f+2Q`ie)}>6`ri$6hGZ2;MC^0JL3RgRt@_3*janK=%5Lr3 zc2w6gX{X(BViV+YsyBhb#11!)z(M73vEVt%E4r9ROVsXi*~OeLXVtMzoRy|Z$6kS` zGWbls0Ma*1o^57uArRMplcdK+0sNYb7ae~j7&;TL*ei?@-cEr^t)P}j%ON^KyXUp+ z1iP|b#xULJ4S9!qS3|rJ_F{c+ndA<#Bir$fR$yD)#5*Az)=HRl6$U`m2b8b!iBV|( zsX>Si^Gmp5kqmC)(D3+NRR3OU_Ekc{LLs-c10-#X?z{?P!gzyS8i(&d7zF|i&h}}~ zOXo!(74)aDi1s}P4jyp8+)pf;TF=gfOgznDJ1MSQ$XY^637o{+Gd-5EzKV|9eipo9GdphW3h%xRFhZZZkk=fua`1$B4Sqo4Ua2; z0oV&A5d}tI8X-9hdmnxf&-;79b?HDGyHt~dS?VZGD*oIzT@IG0g})GWl0@t0p#7~f zkG36WLXhV=K%Ge8i=8sO9k2gxocg z!rG|&b(^fuN$v%CS?3lQJ%ApqrV!w$0m}wV{i3OK@?9<74d2)Yd+kkVUE^y;C)0cO z8_7UdYqO=d)1`RYOpGLcDfl6E9@v5k+iD*E+A<+#Ct1YGS&$X*x}?H)%eT&$ZN@U^ z1n)K+<1iGB1akZcJ{P`m4j^yoJS{lCVv7d%{cu8iv>fK(B-%P+IMo|M3WJA80aFMd zbc|~5sWgOtldqX3G-7VcmA%C!>T3UB!vogGh4Sh>4iU58bJ;1GFHR}63Idp-1>Xt4A4z9F}E+m{db z@au{>12a+UXv_VBvBz(c^N)4`01|;$bS)3;>=q9iz*$p(j26JfZW~MD`7v|fz|2Jb z*;yXZycp}^Sdpir-W!3S<9Pz539Erk-|4#*K7N*QU;h9$aFeU8PbG5uAk6agAJss$ zgHrF#Xrs_M50n@^VT`AzRBjENqO5w7Z4*1vdu5|@E5l5GIcmcDaE1{bKPmE zG;HSurkielWHe^_l@dp(r%z+4GP7iBK%Jry8UO+x1*8eo|Jvvj}y zC5+&Sm`Z!p>Fh2(s~(^0dPd4#!m(Ok!Dnh))$LuM=U%bc{+uxf1|JE|AAbpS3ZlBS(=bmE&b+m|t${2dLE;|gI#9Tuwc!dG3!yEiL0sDf2A z><0=;CbkU9EX&UcL_`%N{eDiOpeGjD}PmhKM2_Q*`t$m*gv%Q}KW8?i|4nRtGWpbS|E zB>>vG29hO($DvI_K4t;PN+e6)qFPcFTQ;X#vXYrs#U%(bDf_LRSaM#lDRge29g-6h zT!&kfo`DuiOx{#33LLXM+9)Ll&r8{~*mRkv77MXvC>*bokBetooNxv&bg zsJZYLUV)XezHA=tRg~pWgGz+Xof!5Xls_t5!#JB<;z7q%4$+|i8I2Pek>0Nl>Li&= zhA7yjXC4)T^)*Ng!r%^=ZAZtTZh9g&YAj#GriIPt>N6<(adui_!K=eiC|2Ue0@FkT+8S1b-rGIO-%%@{+AES<89&W{>O)PEf47We$w@d zXqf>2m0txgEBYrsRn;fdXo`#e?3@wq?GGnKU<5M%%LgF{@!@^gpw=!!D zAvVMRv|v}h4~Fe6Xuy?oKa6kyRhTeyW6Y#)>kR@RFR=Jl3(hN)8Pm+>NwlP+Sstgs z{m3%r51EQxj(TL*pk?cWfW-{Vwli<2nM3O(7HF+!(z-hqx0$SGTIs0mn@=s7!L5tn zG|m9Ln>+PK;t6!-!xiOT`~Wcgb+jgO&mf9?;9 z3QGhGFVg`}=S9dCL(Btd|_ zuoeks)N&4AkaT>xG?~X>XANLlSUcLihI4AyyDbd%<`QVqE|m~zAni6aDy=icBJ)r3 zE#CE;Y^$<0RVQVmkL%99&vG>>k5PRf$rZ-Et zC!NtYWH<)7^{FKU&EeEv>aRf7h|wU>xR@rGsk))|Qc+2k~69({6PvL@U-`tX@9em z&2h0}4ru$ney>}E_&0&l^Nu>4HIF;{8YU}t?3o7g&5@j&#M!Rswhrx6>*oNk={J(cB{7gmeB?U4Tlj+_W*VqkC#0s1E?p`iljOObHm~F zU!>cvxT|>}$FXbiQ>qpw_~iBduRIP{#WeRisDU*N=>a-{W%P-2Hkso^-R5o~UJ+r# zfpAtAYbGq|z5}ur;)+XFVP@hO1jglQ^`4zp;%;PrHP~T1ayHg{@V1gc)YB*r)&ElT zbvAi6S^*e28!~9H2YdSlLbTU>(3Vbj`~Gyhov$EI1V-R`wc6pe-%7Bnv)Fpjq{kIx z#IACH5gciG;=xY{*Mw!li{}WK2BB0tkebkB#uebQBQ3Kto~w@}jx~sXdNkDWcJkLV z2@ySA**wWv88ogxBup6`_-=)NK#5-X^>arlBt3}fWl4}4+%^zbJN6^{%&Xt!OKr^^_N(UeP{NL^-6 zh!TlsaXea}ViYouC$;vOK~djn*X@m z;REi)ZRph(bPVWtlWMe zPM}Gv+7JZN;Nz$`d`$+d$`iNL**mg_i`*5mRa4Smo#C+gF7T`+VBzAj%VO8{t;!|w zUtsem9A}z}SlM3}Hd$)wnqn|a8XsuiHUMk2O%|!kb2U%Y0-blM-hTvoW?)&(I4;z_ zmJteNzH<-?qxgzIE%lC0@Fmyh&%LxB7AkcFEPtZRF#^M8MX-o<-YhXbS(602W6A&P zANBw1e<0@mAaws1;r2g(TRdHzC;)wR(+}&m^1lf$#wbd>POM-xU&&^Uve^Pnn>CUS zX9(l}9L|KS|KH?ZLJ(T?07Gw5W>DAlWNVEs1Gn9x%&}el_*aHu zKTN*h|DjT5XHK012Bl8jJp_aOPbkVH2u&)XA1oArcr*$>{Pz!(91UXNIB0d3qUOHw zg*cXCY?ra&G8X#vnM;Dj_eS{dEa(c|GEbG3{?<=+T{&V|`|^HS;cpqa{eB^`E9con znSnv0fDY%nT@-qy)N3sH? z@aRH7esBViA0cKf8^;@MGp#6C)IHfYR0X7qTaZ|MDcN z6|mBb<*Q^!)mJB*W!z$&WEj2{35R+*xmHhEIbAs0k)6OY24>_>wefjkk~Agws7gEY zDnpnnwpodud#o03mWim1I><)t>OgMl9qW7mu=r1!(M%_?`9g4tUL_4HT3b-dZs=XvC+#|?3wFLRWvZgfPS>!$9rE6vezFszk6v32Egnlqy)FP9vV@S>b4fjhxO3;-HkAA>PjY zB?>_w>2)*#v7PH04^fNdHrL3YO0sSV*rn{X4#7aM5y%awVg%Duv5FNO{0j$riN;h7 zE+W~0ajzxGLitxja=>psb7LcOq2=4}$NXVWKtPaVCvOjU`?CBgjz0(DI7)W-{9g91 z2RcBW6}x$SJ>SkB-rbo2ZCt+2&nqPl@=+&7E-<76P~~*E%WI4E)&s`&^H;V2?k>3! z0Y1O?GtP>z70_#bm!fZu|qv}fLM;XOOJJ;usb>tG&*)0NVdj?7(21(B2>KT1mxL|DI?=Z zvio7uzacLo1GEDWW7mjS>%Ibr31C(>MaGdf2V0#rVBz{$$B|KbJLQS0@(wM~8`{T6 zmlqIrA`%=gZR5xX1xRvoLvL~8$_Ro7*NDEf6hY;qaY|uppUa!6egOx>M3_r_wL-ub zHT;}_>R8t(iHw$*88iPJJV*#By3XK!!+k^OW#lxX5ZW1a{2`X(BOe>{K`$&8n}<=M zHf9i)hfE*pNHtF3U3hx8G@JQJ2^$9n>B;1bAZbtc{RL5ly@jf@8TJPZtHf_1+&N>djRWMJTG2g-Q?A|;C!;0 z)B-McY2ppE_Ebz(_1*%tQ09;prL8_9|FBAsARG;wlUmm)u?v!AMQ(eEX$u{Q{We-7 z_@ZZSH&(WPn$11<>1x1{EE&J?SgoRFRpC#~T2!0l5j(><(7$q0Rd8`Uj_21&wiUT= z+@>vFuz9mIjR0kI(&%G9ONJ+u6=|`L#R1GlZIB3=5FGi`S zu$(gI+<3H1qko4&WVfzt$v=efW@;KyYJin>V;X<*C+q6Gt!SPf1(>8biOy=>a3bMLJUmYiX}5axo%J$ zKxMCED24Xp)@Q)O<(m^mQ6AtMjILlZs!7{z>d^G6g6kV|s8sP`x@A={qJ}g;+kt}S zaPY*dTL69qW8QR_fv5#GlvzPz-4Ih= zzxdFp^aW&mj@@-o@hJ88)$N{3sz7*;@L6e-o!-UMWJ;qk~`)(Kat{ ze+>~A5g_Uo*0}tr(gqmP*MwT~gbuIIqh@VFg{KPTK~_AQluoFITDe1v^=xe{YR4eG zX8;Uh&b39f-ncv&%O|e=IIQL}ue;_lm+Z73Z^A}+=_ebs)ffy_dx?2M7j0oc1JjKig??o*uk<{WKU(fGezg2>_Hb? z-AHs1j(dF&Kg6cb@|;xy=+bw9{)M7HR{(Oh?&%T!9AU>G22WutG_) z8xU|3hyWisgmGVv7b>w&7}5-!{Cfyr!MV5A+fCH^nQs?tTua#%RRXcdE+}fy&0CaF zRf(g`RkU;8nPc2T)ejb@RqSpWw4?NUm5V$OC+OYY-9L2?f5+FWyT^0NbC(c3%@GBTbZ^1j;S0lTnU`MDN^R z+A;cHS9f>N``7iW0Z%6IFgzJ=oxGZ8M}PRVAg1HK--pWd31Nau3cfDUAT7z$cOnm$ zFTUD6-Ux%SKFI!uqJ}fIE*tcxg@c7NwNLV=H}gp6BJQ9W`MVns@;(JIO}mqfKpDv@ z7X>C1@Jr)i;7D<_-mU7dh7;K<`}2-_Xkm7W@6&j97n!EP)EBDxcPVI z`$lGmz_-Y#mZb31G3Ku0W&OFidN$Z$n$60={gP|T2Fw_qH7BdO(umbr%TJw2r;$R1&pC*m85s5XD;@5YSLn7VZQpE zWRoK0NbZ-@r?%pHRQwB3yr+2nyVGHPc}gD3+i&SF!i@4YA=oj8p#S9$>Tk^h02&6H z!x8TbhY{w8Tw>R!WRKg?AawUgg5&J%z>5clrm_mJdV71+FP<9!-&0ph>pZQV4G zMC{8ouK!|?g2>oRgfwvWW%O>w2A0KLvi)oo%GrS?D)MhLS4C7C!DEG!dz##%kRD=n z!xo;hS+iswTP`6Nhc}$ulsD5e0sZvt9?eD4e7lh~xfD)!MA?)#I{S15h@vCOP2Fs? zHk&%(>oJL_^6dCHx$K5P{nEqX22+Q&<2b9r0Kyyk$y+jU1G?_6=jAtZy8e%EqcF@ljfCUDMD&9kk2x(T~ zrx-*8wv`;3b;>w_ol0*2G`7hE1C?8@5(mnW3U9<;E87~X0%N~LX{7SvS_T^0;AL-# zH}BZlGYS2jvOz~e{b17M+YbMym68;5i#vAVbihcQ*Z=Vo`7UAVO0E|+TlYd%!{E#e z56*AM^SpAWsldj*2m&uhdC!Gc!5|JBT4izD@v`RTO<1&2uPtT)*totCOpPYqgI8e| zQ@)D2Bu^4{bYYuZ7CkqsZ{0EfiTwf<%vRj-vk|#KLV_-Ds49@GMk8R9vdDboW4Y=~ zh7oprEMlRWTDAT9TaHt;hQt-~$eDc?UxQ)8qg(dU14I|>QG+6XWAaCUMO zLLokSc1h6!DaV|!1`+CE1ggA)%P8o7R;f>DbL+fux9qw9{AlXg zB-H@f!GyRAkUZ9vLf{T`z&4dK?a$eo;KE57qZrW9UsS*5??vPb(OY$SjT4=){(O`G7Oae4 z)E7DdFu_DmAkUKF(toXUqPlcDw*2BDZQnZZt`#_&O*V;&?_gf5xj#xX;XNw7PC2G_ z)F)i1BnVFvC|Vl!jjb;mrGr|Ci6pQS#fc3pV}VdoV1sb?MZh5IriOeU`)s~HyJhFDAuPJp82^Do!Bb({?+{{ zXpdb3zD;FQ2NRtIR@Zb_nD7h~;CMy<2Bxs33F8eTk_?O4wimo_9$W42@J~z3T;|Uo zf84Vo;p#T?Mhox2(+Xz^ z^w$GaK4}V-@elJChykcDT--3iHf+LQfN+j)Ou4BP*Cc1zCppe$`&tU~Y4h{4E@Cop zUyPxlY7q6Oe@-IZ7tHm6Fin(i#Hp$uWDP5ozIA6%2I>h_N3D+ zQmf8JXRzWmlCYQY6DY@2Y|__TI?W)9T_Vn=~Bh$s3}t?ePME3T!gh zO{t2ae;69VEEEniEwK(8oV6zgpfbCrVfIBg&JXrTt-A$T)0XZnYe3&%1t~_NPv#|V z1HVM4)*Qg9?ag)-wjS$I5~~P2)m4Z1k?766Y22p3qcUT<$k-u$HC0e-8=OWW#d2ap z<06<YX3_LweFyZCChLQWK9D+_43q0jE}03dc- zxW|5+9Txwy<9@gr)K7LxqF(Tu;nL|O#>4#PDcX(^!g(NUoZVGRNOXw5d;3)$LhIk@ z=%SHT1}B3b;PqbQq^Z*muu}T`a%_=1Xv6^)r1uAI@7Q3)-eUC^=uyY7Tf7GGhBP@5LU5)6;rm9EM=@xmPhB`$-af)O&k+*>M4dj>ZHkeKuI9Yo zH&@-~cc0uvQdmcX<+@edTl%^iHta*&R&X4o&t0uw(o;)5N>V+O z-l{C5kQv8z^9mXdxGr84Mxn2vShrd1D)C&II^qhyWful(G zQZI!KTnHH-2jM->m7`GyRruXJE?ne{ZF@DD+MrNjA_$wYwf?Mk7)N?b;$m?(AB7PO z3JnD50mmW)+n$heLq|QqD{uV`|J-J9{`>EwH}{+~wo4!o0DE#|!9s?Z6D)FBI9IWe z&RHMNkmatXi;%nnrKX3=uTL&aUz5>Mqa~oc7>exQp=gs^n-*_o&;t7C7vCtsb-K5; z*7>{qu>>) zc#mXkxu}E!P~jb34jKr@>)$sSCb~xd_@S-OVTZsxc0*xysRwBO|}7@zBXv2{=dfZf?G#(b2Q3AO+>K*`RONZl$@ z=)f4L(j!)quer4=*P{w26mgqNBrKKI$kj z1U_E-rJ_VAxG;#m!MpQnY;lP#I7S5DbclTdxwhc%U%1^T3H&=j zp!rxIQ2M(~w@F4X&Xgq2W)_SE;V2|Nmv@`uF?Na3*|2@w*+y-)*+dAQ-0;(x5!T%e zQKf*YJ$^&iu1dYUHxJ)q8p%KIs4Z9->&b9|Zw349dZ4L6K97Ey67EVCY*42?vO3&m zC8>mjoH8HdvNPl|UUCg3(}n~s*0>B3i|B! zVB^2u{TAuX{{q#GTupNM8(O%<^81lc>AA3qWTvWzHfy!JzK!0K|;8W12e*_Lf~pKz0>lahsMLAHIerc0>F*X zZu1OCc`x$}NvYN?1R*e>46Om77)Q-!no8K#p_usAwyaS&kf3&ATf(@xz`jFXbzlzB z=zVA&B**)Pr~!P@5_Nml)ff#$D$PdK)`vsd+8zxa`s(rOe|`9o-1h`A0?%yeLZiYm z7z24;kVfN`e5N%sEz+}AM#sruv4OHs%30D)V{f5??uzM(HP3_Nv5*0sd3lInCmSxdTDfm)6W293&6M`ud3FGDcX#So4m& z99ros>tJ34Q|BIz$C5G!TE1VOZMl3r-QB;hk8k%spKq2=dOEw`SElwV-Z=!eyFJ&C zh}J6xau5LgKA-h9h#X<|b^s3zy??vw27VdJ=9eYv6uc1|rSyQ{k#1Ur?Bszcrx=geX|?k2ZlAj$_^;1zlXeTW(l9vM+OzgJYDF}zrQ;kE(p_gE zb|}R^ZxQhDRrqeaNmC)N2SlJ@1x%@32H!C5f~{GuF!r(#{My)c0fV`b5xX1Z^58r* zG3@S{%QPTp^T+^~K!-J7b%}7YR#ew_)=Z@n@GXdTExY?sh=}TGhjZt(4`~jC2^lhj zkZAkyJ$t}6Br_OD*Ai5{`wigjY{_0A+y>;?-j;p9mm}`i!q2DdX{H3X3JNnw znBCL%y*EVXqK`0>!%q`tZx8U((EFVKJJa)iay7MQUEA5^{mf2{9r0?|)bf0@^Wo6( zC5{MqzqpF4>3Ki@I;n@_JMP_9A)7@o?f0MQ@diawNBI)GNuEWoBQ{anD4Z1jGeDK_-^G>i-$kDA-z7m3 zCrS{(i{eT4Px3Hflr-VL2A2Of0sg-)&7%KZPon=#5+(v~AF{|SVv}f0Due&oICwxy z$ecS?8U+1U0c%Q-T8<-!{*Ra%49C?U^GOn&n`Tj;`7W0~qMvnaGIa9;+a$i4UeZh) zI9(^LGatYxkORBo*!Q+OC(T_2BMd|AEpLMsJT=~ZM&*2iO$mw zyFSN_G=Y6&7vwgZtj@F^74sCi89~yaCQ+(5kaC`RF+9LBoB)rigW~B-$WDw8{}};K zEk*Vgm)I8io)4(PCw?3isf$yzxHKtvz)EMEZU89eshRw?af#p9^o5T>N_0rvv#T)Q z41;&CVZIvt1*3tMMQG}b9v4v3o?|m81Z3$&L0U9Yt0o35j$=;1i1P7!rWE9CSS z0H6p_9Z>GLJ8f-Bmbw?Xl9Pc%K8&s&7ua_vRElS2+O+1STpjqZr_%YTaAZ|fk<3_k zGAh+`l5FrYyfUo%OD)Y9I^%CO>J=muKm%JGHVrt{x9!M^_f<%+D*^F5->>D0cbZJw zvBlcQ+K@$3bLC8l(G5wiUK5`F`dvyn0&q7>@?%-sJR(OLx;1?4 z76}vhF#4ZpLuaQ4BZXF^BCbY(Tm`w zZGY9m7mzhO#91ellFvS4{&RmcE5M?dyklBg0;^*+o0sL#y4e+MY*bHA06({OYbXBt zpb$4=R>YWsT|x%FCK`m~IwP+Rtb-FGE0cn<(fMjHlm{j0^wp-i0C#S@IOJFdS*wva zVnSXlg>jubuxLNz*CBNZ4#OOinTmmQaFSx-W$U}MadqUx{+N+^g5C-u!t7okv%`=%*9QMU6s{9^RIHozrD zyDH9R-$I=-zfM+&qCjGG;1~ouPzG^__xzPxScX|P^!%J< zRcBf8PJZZY@MjiaALoMJW?m5vKc-bA?!%-2~^EYiw0qv3DF! zL(XdMx%K?B5$PS^>j88txXOZq{jTA!odo-xcK*xS8ov$Yxnq*yqxYTH;83 z>?~Cg15EdaXG2s|HDm62!rlMWhpCv&nDC%%T+IK4rbPu|;Yhtp z_-Uoz($TiRY)1ZJB&@bvgRslo<;z6oORkg2`SY`m2ogF43a7L-BULrd9sT9(;b*}+ zZ~wQxz11r2=-)t-ND}7!X*SBHzg6>czEM$QSM&7|qgoLz)_tqdvhhbT5}H_D2#pzg ze95-`&G9oQX4cyI*;F@kOZTg_4Oyu5tCj;G^^_pKx2zfWsY%{ZK?vBd zKwIz8cl=f0@VFMcUX}cm2IcdTUBj>Q`5vj@HX_k6@XE>?>Cdii&)a3UKYS@0KxPT( zo`!kb{Ie*f0O%QO$l(xd%{$?xzutJ+{#Vpp+&qJ*b=_|K)>^So(x*jm+7?0MlfRNt z*?J>>FwBL@JD3Fy^QDp3Q*M9@86)5Wn+ehvEr!8F_-?7-3EdES;iS;Otv889Y+!`% zQnQ&J=0W=UwjjRmw~0Z4+srzRu}lm&$UFTdH4f6eh=aqaB?m#PXvpEv?{Zu^2x!%R zM||?gh4{@l^{4~CIA%q}b-+v#*^M(M6=+i*Xi-^N-3)#19;3^D>15t6vk!Il1D;;b(906UenM81va(5wQqZy(*v+ z473dOzH(zay?IPOr0EM3#7h(?;5Hdg+A95~Fa2wzbm|IPf5n6#Dtmq^26sxvb4gIF zyVZLEX9M%b97w#35x-~=e&u`Ulw+YUh18p z_RF%=b$@NQ&9ij;>C5m<8u}hU0@74Ln+}H~f&7jVoKrZyT}Q zZvBc-D5=X$TU@DHaPEIvuC8-cN!C7ZrP&~GiRdCSgH%; z(qa_fa^8!+>~lr3&&0ja11cxXwXtL=x?o?kC;l0FqFm*#PRM?8nQc>^f#%;Ao85^9 zqvrii(#ix2`kq-W1YW~ZJc@iXwyNkwvKeI&Gb%N&bw7oq17t0#3#>~aJRPjRM^IE# zkQooSoe&A15cN-2?WO>r5<*Ru-2TkRxEeR&2NfeeX{O`U+9oByj?dK-as=pUSAww0 zalR67m~y=U?WW*D)1OT`lySm}`0l0MHV%t3WP_$H;x%oCI}+&4JAr=l{k9tk6B#*@ zxihk}JGg8m44(Vyoq|BRCs3ThMs)5sjT(3z@$NDj* zKfV1eWtP)MmjG7k?cCl^=_K|0bNG9gr8w>_z^%g$1@3s2wO=uj2*zi+mW^F5Z3^0a zRpBDOH3SkNB}N&bcI4bc~gu-rm9`eL3s2a)_Ok2anmj3gH=#(4DXwtlLj9?s>mg4q`JH<5p@1yloB`(~;5-!PC?Hq2V)bl^enIpK=~8UaC{#OZp)+NP2Xv1oK%4 zWoS2mS1g2|6$;UZ!@wBqy+-_o(;5@g3~Kw0whV7#Y?b%K*>S3$thm}Z|6c-k7EYrk zd1aZU_8%UvzAn$*S4&W;$F)-X5?Ti-jYUJDLQFVKl2+EHsf)XJP3>FkM>K)0-BB2j zOUWSLzYIp$jQXW*(I@$TXki|r_Q?0U4^Ei@$$c!5B-zSn$jVzbWKJ9zAlX!G(e@HR6+K169kI8I7f{6MqWbPV`{v3`b*kKoOu%t?vh>)sH>>n7|o zx+s_Pj{yL7t{ka|`lIS#%=UGh2$H6xG3~1CH2&q%Pn@$-XPj_d2B$ZNAK%6DGZ3Q7r| z4xhvY$p~YvWDi6RvNI-rm|v8)M#+$sips5YvTMsxSmxo4zPaM$EcA+IcJmK);qF?@ z{_>Z9)sts~TGOH+E&Nq^_y_`Tpg&Xqs9(tJoXLN2BGeFqX(7JF?m<5I#EF{v2B%|o z+KlcWQ6P1z`#VH~k~VT#B-{@%cK(3Q=CTY`dU9UHBeg_TsNH?}!?zwT(_JBOF4Xfp z7tCX2`w#!H3lW3Zl*b0(e6!OoG}O(q10+yOe9W@sS=f@jr#Azh6D{`jXxIvlg|auWAUk>D|sY$CNX&P3*)q^tUhe~(!e8`JG??2s*{M`mtu-ZDPu-a zZjQ(oxdZeiu%MFfrD*YaNyWq=W$B>Jg1m8Ndv_`M7XAo0A$YO#?iUcQc+^yYRt5QcMm58OS&box{*MiQ!1V9FgvUb{Otbf=Hdr%2~586M_XxS zT%7yGPhcJuA>+i>s;%3riOsk$0TrL z?2Obv5TlhNjkxa&pqsW!rIl` zvU|J1AD8q6QRoa1)51aAzHH*&{G)@9C!HY%o}Hc+B~+wxNbc~fH(R0rhy<&$tempTE%n7xhBxr9zG+%GdKc)+wIDeG7h0OofkuOjuE=n`n<}C{WVBR|F%1 zp7DG_bO`XrGIK^61(pdxeL25F0PlA1%OMQ3sW%9&mw^ZnO5OZC)p+@l--{$Z0(2Tv zzcVTWP0dC3_ZI|EnRjgut|Tv7<*pZrCKq}omZXF7(7pC}QV42=W{DZ1Q;6hyctGD& zQYsUHPb)?09c(8{`^>+zX&E|AOkRUL4jK`F)Chwp4}K?^X?A9z;|OD!P^+GaE(u7G z0>aZ4@uD!G6!57-w3XND67kAQJ*XSmnzh#U|FHGVvAqS~zO`+;r|zk3+qTWqp1S?k zwr$(CZQJIl{rbE2CGRHhCObPT>yMS4otep+nGeWFnNvt_eV~6Cu3X$(&>($NJsinh zRNeav{L2reKuuA?($<0ndbRH@dMf6(#1-bHhd5ES*eZj+TYI(z60_Emq z+T+@v(D;u>;x82Z%+?pvc+u)yfsXW_ziLPJ9)HfT?gs&Pn`uO_HLfAE0MJ=cQN@!0 z_H}J-eHSn*su)Ltsa%XmcN~7(nXd3@5>_3GK5o+(&-VyuCl7!2AWxWHHTi3b02_(u zyI#=3AFlzH~f>2NOX6GY)coayX1byyxZsZrT&|4VCpA5HJ-ttc4-eG zIe)}Mo)8luyM zc3TNf5Qw+I>Jv{d2SM(3CGP9}PT+Z_>gwHo%o9+B9b@(d$#`Cb7i)ID#X$J{82S7h z4DaDTcm>T+zTA2(3gA$$i(JVbC)U^7;<^ACv%rbaa2t9OtH8 zmwqYOfj#bJPHS&@5R~Qa%3W*!&eD&@#Qbf6iTd;RXwbHdwAz#~H$NJKXu{tSZ*O97CM*uR6}W) zk22_gH&`m-~$$IGGC?Rf;G0kE35`JUnem6#*J7z>~0^ncf{53D#4vxeual zKEO5)vdV>_eL?qx`xi$0egPNxU@thEAFZ;mOaja-7;S7y{MveRY0!fl1D*s z-Y+pe1uoqbr6O)wmY{D#4$q27nKmWQfgBdYE;*=cM?|F(Us0c4x_pjOY`Ls^9u_QP zNmkFdq-kUX`1j)mXs28r)`axcx{D-kC=p;^&RDoi!6ubo?Uoo<7}jPY`Q|__KsUUP zLQYrJKG@o`Pbv`~zB2=)rJ6x%HUBHsSV4OI9d84*TP20Tv`o35pKiVnlbx{d#n?2uvjCQZk!yiwL+z6W&F~j z@u+tUg}hqw>K$54fA~zyY6vvR2)10|gg^()eps4_0(bpZTdOhfnnt$SMXD;Bx^V-g zyzitBYHPX3*K=j*oNg?RQ@}RqCyK|WUXW~Zc#MyZXUKk2nkjQ)r6Q?zVr4*b;l$d@ zo>7SdAj(|pWbY-<{TF74PQ6KO=2(xORqWKu>U3;`X<*BMt4e5=i>hc{8--r-M7f`1#Kx3GVrD$K_w#ZgY1Q;wcDMEw*NGWm zz?GN6`7xv3+hlNvU(KX}kd8|{Z|DPC6*mRw`L2m%-pO&H{LRNz%VY?k0cEZmY-$T# z8?=WdFlG^d))cnEFNHYb$!mUL-@`A{bJeu{c|G$ z*um@W`o3Mb3RwY1$nWI*c)d*-aILZIZsYuLc)wQms46n+BXPKCbGD(&lQDpdiR%Lp z>paVPJkjFo6%XWG>u;3|Jf9&F{!~N`*xA`Jold`sIlHK_zqJQt;i|VEMUMi8k95TU z!5l4vY$uWr5dVrL#!QVAz2oGME;d_7h_aXh?Pi$mEiz*`_F{>D4^BQ$#(fgXEvs}p za+;GUuH48wON4!5Rvv?JH2}BS3j<6!n^WdmU(2e|>acWF@F7NOm)Tj6*B^WlkHM7i zxU%!Wzn{#z>fr>QZkAU`2dt*TGoDdP3#-=qlCe0%^aAmpBB#UM*IsqDxI0|my24_` zrPooagMj9n1actiIz_0*hD^Y5wqf5~2BuU+6{2hkDuLOIKt<>-xek*MSpjTq!AZ54 z5Zf_uz(ia3(4&&$uz~laEP7RE8Vz&P@|7pDkNeOOH+Z8Ae0>oSXy+Rqzi}s?&;CAM z))f-Y@7;XAP$)T@tn<3M#dOT@e}5cLV3O3?_ZswcUB7;Am4xkb)_dK_{Ec>_*EGIO)pTUEyOo33(lwVmsp63e`Z^ z13Ehpf%tr*w{66_us8HPv#_^x^*d)iV+ZGSXalgdjn_T!xw-BAcA9q9>De+c@;*bj zy)`{^`m(lT2k`iQ+IZKWXVGPSX^qwrfrbSu=yZDrmg-#Bs?J&d4yArIw>_;jvuuTG zhEfp zgBBDnC2mCWfFcc?#rvq+jR6PHz8Lor!hUJoj`;Iq{3k{C;ohKnN!6BzCD;TtW6b>2 zTi4h30QY_a(8Y0o0?Tl*8_6%sYxiwx?^yqw5OXu$De@cs?5Wj*hObK@6cARpK=%>d z3m)%rdTexkZr%K2y~HiEw)>{a$*gg48h&k87M?jodhh>heE1@_Z*pyeZ;EG3#4u(O zQ^GfzsdLoW0?2!!GXp9PNv?_5_D-sBA3WGfZz}u}AiKY7J| zXN{ve=;;z)SIkO$d#&oreWNP{s@d(?MG&?6*oLLvQae;Jlh{i=@o6+w;VfmXs{-bE z)AFVXaAr`&AEYr``j?~EgD<`PYF!|!<)5M+J6UgFdJoC>5TNsV%iI)PzH_N37g?-S z=*g2UUDo{|%i&QR4hrEbQ>L@^ceh&W)wb*P8ww92X+TKLm~OOg!!;r+)EE`O&^B73 z8)S?9Z@)j67^ILHNv+13A|p!G7HJV&pqOqgfI$f|QF+C$p9s831B2>ZcALgf^UbAP z!b7p2#Lj#$q>xfyft4SkIH0AT6APR7y}?>2_urcUTv$+3*Fd2m zK%0#PJxEgDuk_6cgb)5Oe+Yovjkl^ckh8oz`L&wAq%&>JqrA2(b&ekg9-aI49DqZy zr_(Rx57)=-K!emtvf(w}Zll%rI9XuCsX*$GBfs^_eW+t!e_M(sw?+ZiK26=w8gr34 zveS!?gCGqGJ)#eLom6an@m&c6pw`(75GW%1iu^{4o(S@%AKiBY2mQ@Hp3rL}xzisS zk7gk9ndayTliGe{38_M2JT$-i{ZYF5s_~YLxL(V60V7sMkaL=YSZoVe1eOGI*9&sk znv7!GHGZhn3TvU=0xD^OB);1nK- z6J$l1*{mV@S$ZMTS#%y#uy3Kts5aZ^j$MW`6Au_uIAm=7!^T`U1~wFyANbYw&oHqFZBO}a4?97L?mP}_zHb@C!sZP3wF4OKG z2O@!Wh87!vOVz9LQX_W~u*UXt_+%pzoEYv!ie1Wl49!t(ERUN9bPFm2JlK(WZ6pWW zmK)`v#_x(}q2-8nQn1D{rX95?j=}$Lj{^8F=d+rLJ}K)GB+>TZ{epCfug;=`#F-jH zZJa7Ep-h*Eh>-I%rSa!%TJ!555cW_s#{R1en}ORJr3=pR(Pcp(9lpXkV6BqA)4U%6E;87nj3*?U=?(2=?A#fDo^S%pTx-8A=l0@#^rda$`G({xM zGp}u6M++ogw$hy?7G|Z6v7!`rdMGXm_xGI1T3VaW<`lpkL!h>1;{#Z`4Z?{+cmy;Z z0dTikuT#y8uEsRA?SGQ~sSaj(DWfx~jqHYjHfl78$dT#qCAGgu_6Lny9YxC| zNXWF6)yDz>Dr01TAW3LZMvI#Jvr8g(0ep69wI$(MLo+aVA!*Wfd%Q~>SfK8m60!q& zx?ayf4-}*SB^J+Jd6QX?{e!EE6m7XUb^6!=mo;*K?zTO8s`k*LEgRjJ_iUr?F&I`C zRbTF4Hv>EtRGQ35ISnAOVd^{h18gxS$mp*P!AG(*OH%)l6HC(?Kx%$CzQ0e|x3B}Y zkp$qx2Z{O><0CAZx?VpZqnB&HJOhy@8cs8|o1)x=kkF}g)aObvzBdh|Q@=&QPWwZP zWxCShOZ^}lhGKYWpak9H6-FY!G=zipz(t{%QUTcjnFseY1H5mi7JBu1eBgkCI{_39 zEhU5+^5a|mBBPgT6*zlL>G)&EIf=hgqqE1ScP&18dhVU96 zmWznA!r#OQGA*334D}lfxDlxhRE1SYOZsa}ypg}E*nz;2n#(2=7}$m+;mqWAz@0)o z(ow%;F!`w+2X1_qX+^0R+$04H{4Aoxo&k;eWMs)lZ;tuY&LYhMn&)Fa?@uQa3VCo0 z68Np41;$wb##IX{C=w3BhNrJu?XF)Q?fcapsvzs*R~1AQtha2c-X)QxrFtpLwtA?X zv0OI#sJs{XGLnS(5cn#&Qad-ZOtOkn>SsrxK7jd4-{4_@gpgU>(phLv~w zUUn$5#&GUrZgTQkMO5)=peq-kl>qbzsmsE#hAWo^Np8Xky$h(ZGCo_bUy-o8>g~zU zbp9w&fbA{bwlbz%I8vGGrS;CHa$9U;EP|TCj-rw)Oxu)w;SMUaU4U>zo)0jC0TUe} zxzVtno6#e?6(^1>Koj4N?9L1G`Ags(&L~VXN0&?g@pA>{Q0+?JNavhA>jzXTU7=~K zW6&5#Y5T)6hNN^fJGZN3hWI-<%s>UhRXLYBzUKpHU6?R4`{p-n*3IsuLhcYqX@5e} z(%N9Biyr^0*cUOx&weTp%=@fpO<0OiBwc`Kz`|48>T5+-on7guF8eG?@b-JzV|&`) zzz3{ZUgyAqNW*+G?y+IKEd$0i8__eSj3m)A*kC!@PBY1}e_Z1~y60r0YKm4OvIA@D z4D4ymGMM|78C9#1{v_2x=gewkJTUrYMCL}WN1kHta;r)~(t?LDCK%=vn>a7x3ul@h zh;3p@-8z-Y2D_zqu#CRr)mH9@?q~2}m=4g>W>SQLDuHw9LQA0nqyWm7Z0+(FGU^la zt0AnNY1nzt@TBc2*a~qc#>$;sd$ytfY*Iz}x|OTAfeDj$oGvfj(N71boV;n$U@{f`d1rZQGAx{5Npw6cPE)Iyn#?` zkh+)7wf><#C?y*9m;>m5e@`h0)H$^_*E3_LXWVYwC4+y7+D6T(8??6st*FnXLXaBk@!9nZXeDb2y z-cSn$p)gIbT5vFrMP{kr{3|x5GJ2^4MGZ0cO50-P3|MM2F#}v)XO*YW$2Fa0sarml z$jt(P{&J-oW|C&#o>>I<7_byT()Gs9O@=XsmzvJ^BqdaPgvA7?X_i0vd4Zq#M2sz9xc(h(?C2x1V7tPRaeY>o9}ggr+s zg|m?Asj~r1P6LoGcX*iZlqfPUIt4TBop5j^A+$!oF`gg9p!Y+;h>|@1YOy>2Oe8Is z>W$mXdByr?OnJpldE>;H1p`PH94S`}O=3g&VHtC3gN};>r|c)BGXyXg#-~X%A@!W=)Mi4uoN;+~ zD+~^eaeoHxb4oNnl&EG5P89e$DXN2(B?!r_Z0%HMD)X^K$%Xl-qyr`P>2ws9$b~n$ zXdSshiK}DIK@p7Y1wELz2Sfc8%pv>!@+c%PPiaBIJ+h#04JA*EFV~CzO3c$Wjr8Rb z2VC+*5e3+@mq!>yRR@tuBi~+g9;f2H6133#;34o8$#z@NUE1*OT7btMX2PFYvN!aR z@tn}vFiVh9_&{J>q=ei(WD)LyRQ<}c)Qyn;{g*i!C&GZL5c|v1k9b+ZzU9+~PeRc& zN8i6HbYoyk5ibRgho0CNHq%F=&*7RM-hg9aj1I6k8IsQhO6*%S;fQES4ywvvVMWkW zGtEWBy^f?5lCyB4!~ohA1mrwmA@RRbk!$~mA$#9TGEy9Bl^U9 z#^v51kl;QpsT=6`tY`~Xgz0|cwfZ-61`-{_|2~xP$~Tu_s*_X^<{xiQfGEx__W)PF z+6zD~JK$G~J;fAB8Yt4srMSZ2TP$1px=ceMUhVz%qSyUHyuHhDS5Hey5sx%TDFgRx ze&$0dKf8Yc=lH5K82cFSuv63fL?FMEvRL2AB=Dg#6jTPp+||p8bioHM$FlL`wGs^H zBb4tdx?@B4$Lj+*VGar6@%)4e#T=bdzAfyBM(yhO-XS!E?R3%eJLuw$QX2Hk%C-M&irHkZ zuAg4K`%1QaA04{a=qbsZ|7u>JdS=+g8nYtft+vh&_gSAhhtm(gbOU%brDikaY&j$6qwSZSzo({rJ1UMGW%JcegmN;~A zcNqeDmK92`7;-F5msmu|9CxMT_gXF3G?mO&TRqIn+ZOt~I_Ri}s(qfpJ`Ag`kC%^> zw~Uy!^?RpUdD5G`P!P~3B)?sdKloAPkcpS=m8-$~cDn?h4^l!vguoR{N1V@hgnW~z zW)9?a3-13s#*qFAzxoD>^dCq1UwTc(lstS8w3KpKL|VX+mUO}oTef?qW|vN73Fg-w z8GBNI?w#F`s%I##Drcqlt^`&X`njRfzw5)55!$wsbS2w*s=)#g2zLXP@lFjERxUEqg<50@Ue)`Ve zuHT)~AZPK}&cWHf+T{wh?@i4SzXE@y<&|@M{F4EQvBqM-e|-=@`73exmyrnJ*wM8? z#!^SPiZ#2v1}5VF1{I?uk8i3;ikg$ez}&!OLiG-OR?)G`(4^iMwpI1i!EyqN*l^d} zJl!#;l9}BI8b(LF=+^+TzC~9q-2!x^ zgbx7vBdaH_%5@bEE=LYr<`nsPt{x-F@AS=dfbw7)V~3jTqL=zQai`pc=6Rxen0TwrF|Hv$<}ja}OIa<}4;dL6*6nlUOzu*M1-ev$j% z#y&)(0ELOf4?Z)417GIhU|G~Q8G4WJ$vSo*C7AQ6;brUQNP$>)oJDLwur+VvSVsWJ zwt4pfegNFnp`_u9BDOlOiVTBc!evejNS1VRAZfs}+!1g{Vr^iICZ5x9t4#^r--ccZ zWxmxautP!_B)5KRhvWM0-p9#`U{G;Wqm>@-HbE2lNOy$mBxVL?(nM3)V?>$W+ zrt_u@=k&;kE+N_GrlOhi2+*?Y49#2v81oj^6DK34P3~YG1~VfT{0phcUdHZw92Q(rB0OH}}nJ<5s}ddu1Jm z+7S5$Oeomcj3a-V3NcX0U5IX#s~O*Ltj92F#%OEgU%y&|LcijAcjy=TEWF`TQ^ln3 zI${tAoo416U0ltLNizADncm1{nvd%Tm=TT!YQ@Pbj#%^*@VcStzIG!|tUOM)ZOh|+ z$}l$r#MUxwP_agmixZy1at8nkA3>IQRnr7Kq8xhOm(g3Li{ zTLV%)r^moYh1VZY6|ZG+1E$9W+*!Z7B|K;U@88dw9nb$-so9Stu75~~^KNt3C3r0* zT~_N>@Sr00?aV34wI{8l*3yB=*SMWujr1FE7i;Y*eQ+Qa=_h&vLni=p78xf(JACdU z<7E!!ml52<%H_}YQXQfKq-c1(G56MYMZzqY$ert3!obJ7aTuOe7~gbalohsB@BX}U z22(VhKyYP!UjW+{%(-l5!PAcXfOaGBn9 zBciAhjY*G4T_RN47EXY&u)tZ0;JM?a>>?pw<(t)-C>xP>Qp7)nwBD~p4~5h_A)B?a zCCN(OJl@wWT9z*K&lh5!+w*5Fi`GfZg>k7Z+5{ z(!<-pZz%M%>{Qc%!h{XTwYM7Fm8u766W9-R7a=>>qjjR&__H2kzb_MMKTX{FxiHAh zgdlQoMlf0b4xIeH0*#H0o#UObqjg)&yDqt`|BCuN& z0<=a3(%7KD>@YV@hjiH|L3r8caF*z6fCv$6fSCQ*OVC;r3Ru;g1(Qcw#b(mR1DdgO zU**-?r8N^qqw&N$kRtdch`ScZ+Ecjn*_Y9bhwfIRJWUrNd`I52=`NNgrO+Z%L^^9j zpf_1Sj0L!46ux3{J{}`;W>Z1pBK?st5jwT`^_bg`W{`KU@JoE|$t2{mOQ9PWgD<8~ z_Vp&tc{RQji93ern-ffy7?tXd)?dy(I+x1acj6FBaAJe#^m*wzue5s)yZ_uBLIWh_ zTsxbja#AtZw6VzW&GxVRxr3loyy=H@uXB3o9SK00j9Bqcv6$OBL=BLj>Obh zJlxz%Ocz4OA6$YOM&BE&OVEAI8th=&09|49#^yZ?ZojLudg2q$EzCwHVLQ2O!r2$X zm3)BIJr%6_KX-lnCq!R2*K)8t!xI&>W(9Ns(W~~IEQ0s`Bs;yfH9T)+wIQsOUcGqK zq+15^jx@ecxtzSzZnwD`$!d?ddK)<)_LWIyM|V%#Es;DB6AIUn#j&uLZ%$6Z`}s(T zXLx{4(M3dv_YP3kn)c;8!r&cRM6crS_;Xqv z@1_{>MLK>0P45MH@#z|bHZhmIe;Zz$_38bF$6gX{jK6eH^E6cr6|Z&e6e{qnWvjug z{85s^_EHEdoPgkq%~-w{T+p>O)adzhuBeLxU36q!(UV>ooP3S1SNKHMYu?*^9Crap zSrpDW3u^_POU(=}gy5|5#H9i?3NT3`p%3m=f#48m>Ek_%?}PO#K64qLdt-yqY*iAw zf%CPz`vDU)C+G(k-vN?C_I>ITlmj*K;2}ic`7!Y$Ia;9Da+2xu^edCc@h84-G7dun zR(AZRkAI=ig`2-%vDVju|GO_k_+x5l`=8L>$O?v)GsO`Yf+~gn5tu6lCL0wNkf()4 z6%T>|@zMJW7^V02x^Ju(lK(%_#lKb|cR${}RM;!Jtle6M%g%;D8Y=0--b9qh$m`N0 zm836p0;LF}!dvp2G%cxL1UuoDh{TA?A<9>T;Clk{g?OwKsuWHz&@hz_a21qBsZt;G zEFO0K`KzMWFiBa`yt`PQ)?9%Ak`V+jGF&67)Kk_Evuav!2;s0Ra|{p+e-73PFwHV} z8y!m424E_t3G`O2Bl8MwkswT)BpwOS&@JhX&8naZpeZE^Q4Qe|NY>3`^ah77^F$#= zu!8NDjNt~1tr>&;fUOno@>hCKkZPoMBg)d{sZ-fTu;`KA@GyNFm#{zqvWeshZRqGZ z_FbiaB7?PkK!0VwOe3l>p?Fp&{#*`{gK)@3YTO(9~@Jfv#0=I{l->Lpm7wT>LH> zSy*=9FGESPlk7}ZPU}C*hm~WR2@Su@WvA2sE75#tGqx7rKyEHQot#O>sr~1_5(y0y z=JM0onY^5yf1VC6$JTxlCvlnLe+b6h$$o;7xci4Viv9#F3V$n!rrIx2e6~Aw2|q zJw>lbW}mzmU|tLPwa)m>sp6qk(v{kzT9I>?3vJo@i32%=dVFZD{`{Rj?_1UnpLcsc zmeTsCF?EA3zyni^rBwz