summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/spec/spec/address.wast.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/spec/spec/address.wast.js')
-rw-r--r--js/src/jit-test/tests/wasm/spec/spec/address.wast.js1082
1 files changed, 1082 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/spec/spec/address.wast.js b/js/src/jit-test/tests/wasm/spec/spec/address.wast.js
new file mode 100644
index 0000000000..317c5fdc07
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/spec/spec/address.wast.js
@@ -0,0 +1,1082 @@
+/* Copyright 2021 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// ./test/core/address.wast
+
+// ./test/core/address.wast:3
+let $0 = instantiate(`(module
+ (memory 1)
+ (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
+
+ (func (export "8u_good1") (param $$i i32) (result i32)
+ (i32.load8_u offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good2") (param $$i i32) (result i32)
+ (i32.load8_u align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good3") (param $$i i32) (result i32)
+ (i32.load8_u offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8u_good4") (param $$i i32) (result i32)
+ (i32.load8_u offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8u_good5") (param $$i i32) (result i32)
+ (i32.load8_u offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "8s_good1") (param $$i i32) (result i32)
+ (i32.load8_s offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good2") (param $$i i32) (result i32)
+ (i32.load8_s align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good3") (param $$i i32) (result i32)
+ (i32.load8_s offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8s_good4") (param $$i i32) (result i32)
+ (i32.load8_s offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8s_good5") (param $$i i32) (result i32)
+ (i32.load8_s offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "16u_good1") (param $$i i32) (result i32)
+ (i32.load16_u offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good2") (param $$i i32) (result i32)
+ (i32.load16_u align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good3") (param $$i i32) (result i32)
+ (i32.load16_u offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16u_good4") (param $$i i32) (result i32)
+ (i32.load16_u offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16u_good5") (param $$i i32) (result i32)
+ (i32.load16_u offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "16s_good1") (param $$i i32) (result i32)
+ (i32.load16_s offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good2") (param $$i i32) (result i32)
+ (i32.load16_s align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good3") (param $$i i32) (result i32)
+ (i32.load16_s offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16s_good4") (param $$i i32) (result i32)
+ (i32.load16_s offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16s_good5") (param $$i i32) (result i32)
+ (i32.load16_s offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "32_good1") (param $$i i32) (result i32)
+ (i32.load offset=0 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32_good2") (param $$i i32) (result i32)
+ (i32.load align=1 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32_good3") (param $$i i32) (result i32)
+ (i32.load offset=1 align=1 (local.get $$i)) ;; 1701077858 'bcde'
+ )
+ (func (export "32_good4") (param $$i i32) (result i32)
+ (i32.load offset=2 align=2 (local.get $$i)) ;; 1717920867 'cdef'
+ )
+ (func (export "32_good5") (param $$i i32) (result i32)
+ (i32.load offset=25 align=4 (local.get $$i)) ;; 122 'z\\0\\0\\0'
+ )
+
+ (func (export "8u_bad") (param $$i i32)
+ (drop (i32.load8_u offset=4294967295 (local.get $$i)))
+ )
+ (func (export "8s_bad") (param $$i i32)
+ (drop (i32.load8_s offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16u_bad") (param $$i i32)
+ (drop (i32.load16_u offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16s_bad") (param $$i i32)
+ (drop (i32.load16_s offset=4294967295 (local.get $$i)))
+ )
+ (func (export "32_bad") (param $$i i32)
+ (drop (i32.load offset=4294967295 (local.get $$i)))
+ )
+)`);
+
+// ./test/core/address.wast:104
+assert_return(() => invoke($0, `8u_good1`, [0]), [value("i32", 97)]);
+
+// ./test/core/address.wast:105
+assert_return(() => invoke($0, `8u_good2`, [0]), [value("i32", 97)]);
+
+// ./test/core/address.wast:106
+assert_return(() => invoke($0, `8u_good3`, [0]), [value("i32", 98)]);
+
+// ./test/core/address.wast:107
+assert_return(() => invoke($0, `8u_good4`, [0]), [value("i32", 99)]);
+
+// ./test/core/address.wast:108
+assert_return(() => invoke($0, `8u_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/address.wast:110
+assert_return(() => invoke($0, `8s_good1`, [0]), [value("i32", 97)]);
+
+// ./test/core/address.wast:111
+assert_return(() => invoke($0, `8s_good2`, [0]), [value("i32", 97)]);
+
+// ./test/core/address.wast:112
+assert_return(() => invoke($0, `8s_good3`, [0]), [value("i32", 98)]);
+
+// ./test/core/address.wast:113
+assert_return(() => invoke($0, `8s_good4`, [0]), [value("i32", 99)]);
+
+// ./test/core/address.wast:114
+assert_return(() => invoke($0, `8s_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/address.wast:116
+assert_return(() => invoke($0, `16u_good1`, [0]), [value("i32", 25185)]);
+
+// ./test/core/address.wast:117
+assert_return(() => invoke($0, `16u_good2`, [0]), [value("i32", 25185)]);
+
+// ./test/core/address.wast:118
+assert_return(() => invoke($0, `16u_good3`, [0]), [value("i32", 25442)]);
+
+// ./test/core/address.wast:119
+assert_return(() => invoke($0, `16u_good4`, [0]), [value("i32", 25699)]);
+
+// ./test/core/address.wast:120
+assert_return(() => invoke($0, `16u_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/address.wast:122
+assert_return(() => invoke($0, `16s_good1`, [0]), [value("i32", 25185)]);
+
+// ./test/core/address.wast:123
+assert_return(() => invoke($0, `16s_good2`, [0]), [value("i32", 25185)]);
+
+// ./test/core/address.wast:124
+assert_return(() => invoke($0, `16s_good3`, [0]), [value("i32", 25442)]);
+
+// ./test/core/address.wast:125
+assert_return(() => invoke($0, `16s_good4`, [0]), [value("i32", 25699)]);
+
+// ./test/core/address.wast:126
+assert_return(() => invoke($0, `16s_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/address.wast:128
+assert_return(() => invoke($0, `32_good1`, [0]), [value("i32", 1684234849)]);
+
+// ./test/core/address.wast:129
+assert_return(() => invoke($0, `32_good2`, [0]), [value("i32", 1684234849)]);
+
+// ./test/core/address.wast:130
+assert_return(() => invoke($0, `32_good3`, [0]), [value("i32", 1701077858)]);
+
+// ./test/core/address.wast:131
+assert_return(() => invoke($0, `32_good4`, [0]), [value("i32", 1717920867)]);
+
+// ./test/core/address.wast:132
+assert_return(() => invoke($0, `32_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/address.wast:134
+assert_return(() => invoke($0, `8u_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:135
+assert_return(() => invoke($0, `8u_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:136
+assert_return(() => invoke($0, `8u_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:137
+assert_return(() => invoke($0, `8u_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:138
+assert_return(() => invoke($0, `8u_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:140
+assert_return(() => invoke($0, `8s_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:141
+assert_return(() => invoke($0, `8s_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:142
+assert_return(() => invoke($0, `8s_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:143
+assert_return(() => invoke($0, `8s_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:144
+assert_return(() => invoke($0, `8s_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:146
+assert_return(() => invoke($0, `16u_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:147
+assert_return(() => invoke($0, `16u_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:148
+assert_return(() => invoke($0, `16u_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:149
+assert_return(() => invoke($0, `16u_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:150
+assert_return(() => invoke($0, `16u_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:152
+assert_return(() => invoke($0, `16s_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:153
+assert_return(() => invoke($0, `16s_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:154
+assert_return(() => invoke($0, `16s_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:155
+assert_return(() => invoke($0, `16s_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:156
+assert_return(() => invoke($0, `16s_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:158
+assert_return(() => invoke($0, `32_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:159
+assert_return(() => invoke($0, `32_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:160
+assert_return(() => invoke($0, `32_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:161
+assert_return(() => invoke($0, `32_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:162
+assert_return(() => invoke($0, `32_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/address.wast:164
+assert_return(() => invoke($0, `8u_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:165
+assert_return(() => invoke($0, `8u_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:166
+assert_return(() => invoke($0, `8u_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:167
+assert_return(() => invoke($0, `8u_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:168
+assert_return(() => invoke($0, `8u_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:170
+assert_return(() => invoke($0, `8s_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:171
+assert_return(() => invoke($0, `8s_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:172
+assert_return(() => invoke($0, `8s_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:173
+assert_return(() => invoke($0, `8s_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:174
+assert_return(() => invoke($0, `8s_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:176
+assert_return(() => invoke($0, `16u_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:177
+assert_return(() => invoke($0, `16u_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:178
+assert_return(() => invoke($0, `16u_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:179
+assert_return(() => invoke($0, `16u_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:180
+assert_return(() => invoke($0, `16u_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:182
+assert_return(() => invoke($0, `16s_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:183
+assert_return(() => invoke($0, `16s_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:184
+assert_return(() => invoke($0, `16s_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:185
+assert_return(() => invoke($0, `16s_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:186
+assert_return(() => invoke($0, `16s_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:188
+assert_return(() => invoke($0, `32_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:189
+assert_return(() => invoke($0, `32_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:190
+assert_return(() => invoke($0, `32_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:191
+assert_return(() => invoke($0, `32_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/address.wast:192
+assert_trap(() => invoke($0, `32_good5`, [65508]), `out of bounds memory access`);
+
+// ./test/core/address.wast:194
+assert_trap(() => invoke($0, `8u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:195
+assert_trap(() => invoke($0, `8s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:196
+assert_trap(() => invoke($0, `16u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:197
+assert_trap(() => invoke($0, `16s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:198
+assert_trap(() => invoke($0, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:199
+assert_trap(() => invoke($0, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:201
+assert_trap(() => invoke($0, `8u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:202
+assert_trap(() => invoke($0, `8s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:203
+assert_trap(() => invoke($0, `16u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:204
+assert_trap(() => invoke($0, `16s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:205
+assert_trap(() => invoke($0, `32_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:207
+assert_trap(() => invoke($0, `8u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:208
+assert_trap(() => invoke($0, `8s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:209
+assert_trap(() => invoke($0, `16u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:210
+assert_trap(() => invoke($0, `16s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:211
+assert_trap(() => invoke($0, `32_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:213
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i32.load offset=4294967296 (i32.const 0)))) `),
+ `i32 constant`,
+);
+
+// ./test/core/address.wast:223
+let $1 = instantiate(`(module
+ (memory 1)
+ (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
+
+ (func (export "8u_good1") (param $$i i32) (result i64)
+ (i64.load8_u offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good2") (param $$i i32) (result i64)
+ (i64.load8_u align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good3") (param $$i i32) (result i64)
+ (i64.load8_u offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8u_good4") (param $$i i32) (result i64)
+ (i64.load8_u offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8u_good5") (param $$i i32) (result i64)
+ (i64.load8_u offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "8s_good1") (param $$i i32) (result i64)
+ (i64.load8_s offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good2") (param $$i i32) (result i64)
+ (i64.load8_s align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good3") (param $$i i32) (result i64)
+ (i64.load8_s offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8s_good4") (param $$i i32) (result i64)
+ (i64.load8_s offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8s_good5") (param $$i i32) (result i64)
+ (i64.load8_s offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "16u_good1") (param $$i i32) (result i64)
+ (i64.load16_u offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good2") (param $$i i32) (result i64)
+ (i64.load16_u align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good3") (param $$i i32) (result i64)
+ (i64.load16_u offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16u_good4") (param $$i i32) (result i64)
+ (i64.load16_u offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16u_good5") (param $$i i32) (result i64)
+ (i64.load16_u offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "16s_good1") (param $$i i32) (result i64)
+ (i64.load16_s offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good2") (param $$i i32) (result i64)
+ (i64.load16_s align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good3") (param $$i i32) (result i64)
+ (i64.load16_s offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16s_good4") (param $$i i32) (result i64)
+ (i64.load16_s offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16s_good5") (param $$i i32) (result i64)
+ (i64.load16_s offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "32u_good1") (param $$i i32) (result i64)
+ (i64.load32_u offset=0 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32u_good2") (param $$i i32) (result i64)
+ (i64.load32_u align=1 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32u_good3") (param $$i i32) (result i64)
+ (i64.load32_u offset=1 align=1 (local.get $$i)) ;; 1701077858 'bcde'
+ )
+ (func (export "32u_good4") (param $$i i32) (result i64)
+ (i64.load32_u offset=2 align=2 (local.get $$i)) ;; 1717920867 'cdef'
+ )
+ (func (export "32u_good5") (param $$i i32) (result i64)
+ (i64.load32_u offset=25 align=4 (local.get $$i)) ;; 122 'z\\0\\0\\0'
+ )
+
+ (func (export "32s_good1") (param $$i i32) (result i64)
+ (i64.load32_s offset=0 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32s_good2") (param $$i i32) (result i64)
+ (i64.load32_s align=1 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32s_good3") (param $$i i32) (result i64)
+ (i64.load32_s offset=1 align=1 (local.get $$i)) ;; 1701077858 'bcde'
+ )
+ (func (export "32s_good4") (param $$i i32) (result i64)
+ (i64.load32_s offset=2 align=2 (local.get $$i)) ;; 1717920867 'cdef'
+ )
+ (func (export "32s_good5") (param $$i i32) (result i64)
+ (i64.load32_s offset=25 align=4 (local.get $$i)) ;; 122 'z\\0\\0\\0'
+ )
+
+ (func (export "64_good1") (param $$i i32) (result i64)
+ (i64.load offset=0 (local.get $$i)) ;; 0x6867666564636261 'abcdefgh'
+ )
+ (func (export "64_good2") (param $$i i32) (result i64)
+ (i64.load align=1 (local.get $$i)) ;; 0x6867666564636261 'abcdefgh'
+ )
+ (func (export "64_good3") (param $$i i32) (result i64)
+ (i64.load offset=1 align=1 (local.get $$i)) ;; 0x6968676665646362 'bcdefghi'
+ )
+ (func (export "64_good4") (param $$i i32) (result i64)
+ (i64.load offset=2 align=2 (local.get $$i)) ;; 0x6a69686766656463 'cdefghij'
+ )
+ (func (export "64_good5") (param $$i i32) (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 i32)
+ (drop (i64.load8_u offset=4294967295 (local.get $$i)))
+ )
+ (func (export "8s_bad") (param $$i i32)
+ (drop (i64.load8_s offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16u_bad") (param $$i i32)
+ (drop (i64.load16_u offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16s_bad") (param $$i i32)
+ (drop (i64.load16_s offset=4294967295 (local.get $$i)))
+ )
+ (func (export "32u_bad") (param $$i i32)
+ (drop (i64.load32_u offset=4294967295 (local.get $$i)))
+ )
+ (func (export "32s_bad") (param $$i i32)
+ (drop (i64.load32_s offset=4294967295 (local.get $$i)))
+ )
+ (func (export "64_bad") (param $$i i32)
+ (drop (i64.load offset=4294967295 (local.get $$i)))
+ )
+)`);
+
+// ./test/core/address.wast:362
+assert_return(() => invoke($1, `8u_good1`, [0]), [value("i64", 97n)]);
+
+// ./test/core/address.wast:363
+assert_return(() => invoke($1, `8u_good2`, [0]), [value("i64", 97n)]);
+
+// ./test/core/address.wast:364
+assert_return(() => invoke($1, `8u_good3`, [0]), [value("i64", 98n)]);
+
+// ./test/core/address.wast:365
+assert_return(() => invoke($1, `8u_good4`, [0]), [value("i64", 99n)]);
+
+// ./test/core/address.wast:366
+assert_return(() => invoke($1, `8u_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:368
+assert_return(() => invoke($1, `8s_good1`, [0]), [value("i64", 97n)]);
+
+// ./test/core/address.wast:369
+assert_return(() => invoke($1, `8s_good2`, [0]), [value("i64", 97n)]);
+
+// ./test/core/address.wast:370
+assert_return(() => invoke($1, `8s_good3`, [0]), [value("i64", 98n)]);
+
+// ./test/core/address.wast:371
+assert_return(() => invoke($1, `8s_good4`, [0]), [value("i64", 99n)]);
+
+// ./test/core/address.wast:372
+assert_return(() => invoke($1, `8s_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:374
+assert_return(() => invoke($1, `16u_good1`, [0]), [value("i64", 25185n)]);
+
+// ./test/core/address.wast:375
+assert_return(() => invoke($1, `16u_good2`, [0]), [value("i64", 25185n)]);
+
+// ./test/core/address.wast:376
+assert_return(() => invoke($1, `16u_good3`, [0]), [value("i64", 25442n)]);
+
+// ./test/core/address.wast:377
+assert_return(() => invoke($1, `16u_good4`, [0]), [value("i64", 25699n)]);
+
+// ./test/core/address.wast:378
+assert_return(() => invoke($1, `16u_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:380
+assert_return(() => invoke($1, `16s_good1`, [0]), [value("i64", 25185n)]);
+
+// ./test/core/address.wast:381
+assert_return(() => invoke($1, `16s_good2`, [0]), [value("i64", 25185n)]);
+
+// ./test/core/address.wast:382
+assert_return(() => invoke($1, `16s_good3`, [0]), [value("i64", 25442n)]);
+
+// ./test/core/address.wast:383
+assert_return(() => invoke($1, `16s_good4`, [0]), [value("i64", 25699n)]);
+
+// ./test/core/address.wast:384
+assert_return(() => invoke($1, `16s_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:386
+assert_return(() => invoke($1, `32u_good1`, [0]), [value("i64", 1684234849n)]);
+
+// ./test/core/address.wast:387
+assert_return(() => invoke($1, `32u_good2`, [0]), [value("i64", 1684234849n)]);
+
+// ./test/core/address.wast:388
+assert_return(() => invoke($1, `32u_good3`, [0]), [value("i64", 1701077858n)]);
+
+// ./test/core/address.wast:389
+assert_return(() => invoke($1, `32u_good4`, [0]), [value("i64", 1717920867n)]);
+
+// ./test/core/address.wast:390
+assert_return(() => invoke($1, `32u_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:392
+assert_return(() => invoke($1, `32s_good1`, [0]), [value("i64", 1684234849n)]);
+
+// ./test/core/address.wast:393
+assert_return(() => invoke($1, `32s_good2`, [0]), [value("i64", 1684234849n)]);
+
+// ./test/core/address.wast:394
+assert_return(() => invoke($1, `32s_good3`, [0]), [value("i64", 1701077858n)]);
+
+// ./test/core/address.wast:395
+assert_return(() => invoke($1, `32s_good4`, [0]), [value("i64", 1717920867n)]);
+
+// ./test/core/address.wast:396
+assert_return(() => invoke($1, `32s_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:398
+assert_return(() => invoke($1, `64_good1`, [0]), [value("i64", 7523094288207667809n)]);
+
+// ./test/core/address.wast:399
+assert_return(() => invoke($1, `64_good2`, [0]), [value("i64", 7523094288207667809n)]);
+
+// ./test/core/address.wast:400
+assert_return(() => invoke($1, `64_good3`, [0]), [value("i64", 7595434461045744482n)]);
+
+// ./test/core/address.wast:401
+assert_return(() => invoke($1, `64_good4`, [0]), [value("i64", 7667774633883821155n)]);
+
+// ./test/core/address.wast:402
+assert_return(() => invoke($1, `64_good5`, [0]), [value("i64", 122n)]);
+
+// ./test/core/address.wast:404
+assert_return(() => invoke($1, `8u_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:405
+assert_return(() => invoke($1, `8u_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:406
+assert_return(() => invoke($1, `8u_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:407
+assert_return(() => invoke($1, `8u_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:408
+assert_return(() => invoke($1, `8u_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:410
+assert_return(() => invoke($1, `8s_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:411
+assert_return(() => invoke($1, `8s_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:412
+assert_return(() => invoke($1, `8s_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:413
+assert_return(() => invoke($1, `8s_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:414
+assert_return(() => invoke($1, `8s_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:416
+assert_return(() => invoke($1, `16u_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:417
+assert_return(() => invoke($1, `16u_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:418
+assert_return(() => invoke($1, `16u_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:419
+assert_return(() => invoke($1, `16u_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:420
+assert_return(() => invoke($1, `16u_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:422
+assert_return(() => invoke($1, `16s_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:423
+assert_return(() => invoke($1, `16s_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:424
+assert_return(() => invoke($1, `16s_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:425
+assert_return(() => invoke($1, `16s_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:426
+assert_return(() => invoke($1, `16s_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:428
+assert_return(() => invoke($1, `32u_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:429
+assert_return(() => invoke($1, `32u_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:430
+assert_return(() => invoke($1, `32u_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:431
+assert_return(() => invoke($1, `32u_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:432
+assert_return(() => invoke($1, `32u_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:434
+assert_return(() => invoke($1, `32s_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:435
+assert_return(() => invoke($1, `32s_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:436
+assert_return(() => invoke($1, `32s_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:437
+assert_return(() => invoke($1, `32s_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:438
+assert_return(() => invoke($1, `32s_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:440
+assert_return(() => invoke($1, `64_good1`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:441
+assert_return(() => invoke($1, `64_good2`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:442
+assert_return(() => invoke($1, `64_good3`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:443
+assert_return(() => invoke($1, `64_good4`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:444
+assert_return(() => invoke($1, `64_good5`, [65503]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:446
+assert_return(() => invoke($1, `8u_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:447
+assert_return(() => invoke($1, `8u_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:448
+assert_return(() => invoke($1, `8u_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:449
+assert_return(() => invoke($1, `8u_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:450
+assert_return(() => invoke($1, `8u_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:452
+assert_return(() => invoke($1, `8s_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:453
+assert_return(() => invoke($1, `8s_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:454
+assert_return(() => invoke($1, `8s_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:455
+assert_return(() => invoke($1, `8s_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:456
+assert_return(() => invoke($1, `8s_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:458
+assert_return(() => invoke($1, `16u_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:459
+assert_return(() => invoke($1, `16u_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:460
+assert_return(() => invoke($1, `16u_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:461
+assert_return(() => invoke($1, `16u_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:462
+assert_return(() => invoke($1, `16u_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:464
+assert_return(() => invoke($1, `16s_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:465
+assert_return(() => invoke($1, `16s_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:466
+assert_return(() => invoke($1, `16s_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:467
+assert_return(() => invoke($1, `16s_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:468
+assert_return(() => invoke($1, `16s_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:470
+assert_return(() => invoke($1, `32u_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:471
+assert_return(() => invoke($1, `32u_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:472
+assert_return(() => invoke($1, `32u_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:473
+assert_return(() => invoke($1, `32u_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:474
+assert_return(() => invoke($1, `32u_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:476
+assert_return(() => invoke($1, `32s_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:477
+assert_return(() => invoke($1, `32s_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:478
+assert_return(() => invoke($1, `32s_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:479
+assert_return(() => invoke($1, `32s_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:480
+assert_return(() => invoke($1, `32s_good5`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:482
+assert_return(() => invoke($1, `64_good1`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:483
+assert_return(() => invoke($1, `64_good2`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:484
+assert_return(() => invoke($1, `64_good3`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:485
+assert_return(() => invoke($1, `64_good4`, [65504]), [value("i64", 0n)]);
+
+// ./test/core/address.wast:486
+assert_trap(() => invoke($1, `64_good5`, [65504]), `out of bounds memory access`);
+
+// ./test/core/address.wast:488
+assert_trap(() => invoke($1, `8u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:489
+assert_trap(() => invoke($1, `8s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:490
+assert_trap(() => invoke($1, `16u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:491
+assert_trap(() => invoke($1, `16s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:492
+assert_trap(() => invoke($1, `32u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:493
+assert_trap(() => invoke($1, `32s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:494
+assert_trap(() => invoke($1, `64_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:496
+assert_trap(() => invoke($1, `8u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:497
+assert_trap(() => invoke($1, `8s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:498
+assert_trap(() => invoke($1, `16u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:499
+assert_trap(() => invoke($1, `16s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:500
+assert_trap(() => invoke($1, `32u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:501
+assert_trap(() => invoke($1, `32s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:502
+assert_trap(() => invoke($1, `64_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:504
+assert_trap(() => invoke($1, `8u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:505
+assert_trap(() => invoke($1, `8s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:506
+assert_trap(() => invoke($1, `16u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:507
+assert_trap(() => invoke($1, `16s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:508
+assert_trap(() => invoke($1, `32u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:509
+assert_trap(() => invoke($1, `32s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:510
+assert_trap(() => invoke($1, `64_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:514
+let $2 = instantiate(`(module
+ (memory 1)
+ (data (i32.const 0) "\\00\\00\\00\\00\\00\\00\\a0\\7f\\01\\00\\d0\\7f")
+
+ (func (export "32_good1") (param $$i i32) (result f32)
+ (f32.load offset=0 (local.get $$i)) ;; 0.0 '\\00\\00\\00\\00'
+ )
+ (func (export "32_good2") (param $$i i32) (result f32)
+ (f32.load align=1 (local.get $$i)) ;; 0.0 '\\00\\00\\00\\00'
+ )
+ (func (export "32_good3") (param $$i i32) (result f32)
+ (f32.load offset=1 align=1 (local.get $$i)) ;; 0.0 '\\00\\00\\00\\00'
+ )
+ (func (export "32_good4") (param $$i i32) (result f32)
+ (f32.load offset=2 align=2 (local.get $$i)) ;; 0.0 '\\00\\00\\00\\00'
+ )
+ (func (export "32_good5") (param $$i i32) (result f32)
+ (f32.load offset=8 align=4 (local.get $$i)) ;; nan:0x500001 '\\01\\00\\d0\\7f'
+ )
+ (func (export "32_bad") (param $$i i32)
+ (drop (f32.load offset=4294967295 (local.get $$i)))
+ )
+)`);
+
+// ./test/core/address.wast:538
+assert_return(() => invoke($2, `32_good1`, [0]), [value("f32", 0)]);
+
+// ./test/core/address.wast:539
+assert_return(() => invoke($2, `32_good2`, [0]), [value("f32", 0)]);
+
+// ./test/core/address.wast:540
+assert_return(() => invoke($2, `32_good3`, [0]), [value("f32", 0)]);
+
+// ./test/core/address.wast:541
+assert_return(() => invoke($2, `32_good4`, [0]), [value("f32", 0)]);
+
+// ./test/core/address.wast:542
+assert_return(() => invoke($2, `32_good5`, [0]), [bytes("f32", [0x1, 0x0, 0xd0, 0x7f])]);
+
+// ./test/core/address.wast:544
+assert_return(() => invoke($2, `32_good1`, [65524]), [value("f32", 0)]);
+
+// ./test/core/address.wast:545
+assert_return(() => invoke($2, `32_good2`, [65524]), [value("f32", 0)]);
+
+// ./test/core/address.wast:546
+assert_return(() => invoke($2, `32_good3`, [65524]), [value("f32", 0)]);
+
+// ./test/core/address.wast:547
+assert_return(() => invoke($2, `32_good4`, [65524]), [value("f32", 0)]);
+
+// ./test/core/address.wast:548
+assert_return(() => invoke($2, `32_good5`, [65524]), [value("f32", 0)]);
+
+// ./test/core/address.wast:550
+assert_return(() => invoke($2, `32_good1`, [65525]), [value("f32", 0)]);
+
+// ./test/core/address.wast:551
+assert_return(() => invoke($2, `32_good2`, [65525]), [value("f32", 0)]);
+
+// ./test/core/address.wast:552
+assert_return(() => invoke($2, `32_good3`, [65525]), [value("f32", 0)]);
+
+// ./test/core/address.wast:553
+assert_return(() => invoke($2, `32_good4`, [65525]), [value("f32", 0)]);
+
+// ./test/core/address.wast:554
+assert_trap(() => invoke($2, `32_good5`, [65525]), `out of bounds memory access`);
+
+// ./test/core/address.wast:556
+assert_trap(() => invoke($2, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:557
+assert_trap(() => invoke($2, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:559
+assert_trap(() => invoke($2, `32_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:560
+assert_trap(() => invoke($2, `32_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:564
+let $3 = instantiate(`(module
+ (memory 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 i32) (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 i32) (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 i32) (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 i32) (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 i32) (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 i32)
+ (drop (f64.load offset=4294967295 (local.get $$i)))
+ )
+)`);
+
+// ./test/core/address.wast:588
+assert_return(() => invoke($3, `64_good1`, [0]), [value("f64", 0)]);
+
+// ./test/core/address.wast:589
+assert_return(() => invoke($3, `64_good2`, [0]), [value("f64", 0)]);
+
+// ./test/core/address.wast:590
+assert_return(() => invoke($3, `64_good3`, [0]), [value("f64", 0)]);
+
+// ./test/core/address.wast:591
+assert_return(() => invoke($3, `64_good4`, [0]), [value("f64", 0)]);
+
+// ./test/core/address.wast:592
+assert_return(
+ () => invoke($3, `64_good5`, [0]),
+ [bytes("f64", [0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x7f])],
+);
+
+// ./test/core/address.wast:594
+assert_return(() => invoke($3, `64_good1`, [65510]), [value("f64", 0)]);
+
+// ./test/core/address.wast:595
+assert_return(() => invoke($3, `64_good2`, [65510]), [value("f64", 0)]);
+
+// ./test/core/address.wast:596
+assert_return(() => invoke($3, `64_good3`, [65510]), [value("f64", 0)]);
+
+// ./test/core/address.wast:597
+assert_return(() => invoke($3, `64_good4`, [65510]), [value("f64", 0)]);
+
+// ./test/core/address.wast:598
+assert_return(() => invoke($3, `64_good5`, [65510]), [value("f64", 0)]);
+
+// ./test/core/address.wast:600
+assert_return(() => invoke($3, `64_good1`, [65511]), [value("f64", 0)]);
+
+// ./test/core/address.wast:601
+assert_return(() => invoke($3, `64_good2`, [65511]), [value("f64", 0)]);
+
+// ./test/core/address.wast:602
+assert_return(() => invoke($3, `64_good3`, [65511]), [value("f64", 0)]);
+
+// ./test/core/address.wast:603
+assert_return(() => invoke($3, `64_good4`, [65511]), [value("f64", 0)]);
+
+// ./test/core/address.wast:604
+assert_trap(() => invoke($3, `64_good5`, [65511]), `out of bounds memory access`);
+
+// ./test/core/address.wast:606
+assert_trap(() => invoke($3, `64_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:607
+assert_trap(() => invoke($3, `64_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/address.wast:609
+assert_trap(() => invoke($3, `64_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/address.wast:610
+assert_trap(() => invoke($3, `64_bad`, [1]), `out of bounds memory access`);