diff options
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.js | 1082 |
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`); |