summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js')
-rw-r--r--js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js392
1 files changed, 392 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js b/js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js
new file mode 100644
index 0000000000..62b3c985d6
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/spec/multi-memory/address0.wast.js
@@ -0,0 +1,392 @@
+/* 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/multi-memory/address0.wast
+
+// ./test/core/multi-memory/address0.wast:3
+let $0 = instantiate(`(module
+ (memory $$mem0 0)
+ (memory $$mem1 1)
+ (data (memory $$mem1) (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
+
+ (func (export "8u_good1") (param $$i i32) (result i32)
+ (i32.load8_u $$mem1 offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good2") (param $$i i32) (result i32)
+ (i32.load8_u $$mem1 align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8u_good3") (param $$i i32) (result i32)
+ (i32.load8_u $$mem1 offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8u_good4") (param $$i i32) (result i32)
+ (i32.load8_u $$mem1 offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8u_good5") (param $$i i32) (result i32)
+ (i32.load8_u $$mem1 offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "8s_good1") (param $$i i32) (result i32)
+ (i32.load8_s $$mem1 offset=0 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good2") (param $$i i32) (result i32)
+ (i32.load8_s $$mem1 align=1 (local.get $$i)) ;; 97 'a'
+ )
+ (func (export "8s_good3") (param $$i i32) (result i32)
+ (i32.load8_s $$mem1 offset=1 align=1 (local.get $$i)) ;; 98 'b'
+ )
+ (func (export "8s_good4") (param $$i i32) (result i32)
+ (i32.load8_s $$mem1 offset=2 align=1 (local.get $$i)) ;; 99 'c'
+ )
+ (func (export "8s_good5") (param $$i i32) (result i32)
+ (i32.load8_s $$mem1 offset=25 align=1 (local.get $$i)) ;; 122 'z'
+ )
+
+ (func (export "16u_good1") (param $$i i32) (result i32)
+ (i32.load16_u $$mem1 offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good2") (param $$i i32) (result i32)
+ (i32.load16_u $$mem1 align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16u_good3") (param $$i i32) (result i32)
+ (i32.load16_u $$mem1 offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16u_good4") (param $$i i32) (result i32)
+ (i32.load16_u $$mem1 offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16u_good5") (param $$i i32) (result i32)
+ (i32.load16_u $$mem1 offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "16s_good1") (param $$i i32) (result i32)
+ (i32.load16_s $$mem1 offset=0 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good2") (param $$i i32) (result i32)
+ (i32.load16_s $$mem1 align=1 (local.get $$i)) ;; 25185 'ab'
+ )
+ (func (export "16s_good3") (param $$i i32) (result i32)
+ (i32.load16_s $$mem1 offset=1 align=1 (local.get $$i)) ;; 25442 'bc'
+ )
+ (func (export "16s_good4") (param $$i i32) (result i32)
+ (i32.load16_s $$mem1 offset=2 align=2 (local.get $$i)) ;; 25699 'cd'
+ )
+ (func (export "16s_good5") (param $$i i32) (result i32)
+ (i32.load16_s $$mem1 offset=25 align=2 (local.get $$i)) ;; 122 'z\\0'
+ )
+
+ (func (export "32_good1") (param $$i i32) (result i32)
+ (i32.load $$mem1 offset=0 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32_good2") (param $$i i32) (result i32)
+ (i32.load $$mem1 align=1 (local.get $$i)) ;; 1684234849 'abcd'
+ )
+ (func (export "32_good3") (param $$i i32) (result i32)
+ (i32.load $$mem1 offset=1 align=1 (local.get $$i)) ;; 1701077858 'bcde'
+ )
+ (func (export "32_good4") (param $$i i32) (result i32)
+ (i32.load $$mem1 offset=2 align=2 (local.get $$i)) ;; 1717920867 'cdef'
+ )
+ (func (export "32_good5") (param $$i i32) (result i32)
+ (i32.load $$mem1 offset=25 align=4 (local.get $$i)) ;; 122 'z\\0\\0\\0'
+ )
+
+ (func (export "8u_bad") (param $$i i32)
+ (drop (i32.load8_u $$mem1 offset=4294967295 (local.get $$i)))
+ )
+ (func (export "8s_bad") (param $$i i32)
+ (drop (i32.load8_s $$mem1 offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16u_bad") (param $$i i32)
+ (drop (i32.load16_u $$mem1 offset=4294967295 (local.get $$i)))
+ )
+ (func (export "16s_bad") (param $$i i32)
+ (drop (i32.load16_s $$mem1 offset=4294967295 (local.get $$i)))
+ )
+ (func (export "32_bad") (param $$i i32)
+ (drop (i32.load $$mem1 offset=4294967295 (local.get $$i)))
+ )
+)`);
+
+// ./test/core/multi-memory/address0.wast:105
+assert_return(() => invoke($0, `8u_good1`, [0]), [value("i32", 97)]);
+
+// ./test/core/multi-memory/address0.wast:106
+assert_return(() => invoke($0, `8u_good2`, [0]), [value("i32", 97)]);
+
+// ./test/core/multi-memory/address0.wast:107
+assert_return(() => invoke($0, `8u_good3`, [0]), [value("i32", 98)]);
+
+// ./test/core/multi-memory/address0.wast:108
+assert_return(() => invoke($0, `8u_good4`, [0]), [value("i32", 99)]);
+
+// ./test/core/multi-memory/address0.wast:109
+assert_return(() => invoke($0, `8u_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/multi-memory/address0.wast:111
+assert_return(() => invoke($0, `8s_good1`, [0]), [value("i32", 97)]);
+
+// ./test/core/multi-memory/address0.wast:112
+assert_return(() => invoke($0, `8s_good2`, [0]), [value("i32", 97)]);
+
+// ./test/core/multi-memory/address0.wast:113
+assert_return(() => invoke($0, `8s_good3`, [0]), [value("i32", 98)]);
+
+// ./test/core/multi-memory/address0.wast:114
+assert_return(() => invoke($0, `8s_good4`, [0]), [value("i32", 99)]);
+
+// ./test/core/multi-memory/address0.wast:115
+assert_return(() => invoke($0, `8s_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/multi-memory/address0.wast:117
+assert_return(() => invoke($0, `16u_good1`, [0]), [value("i32", 25185)]);
+
+// ./test/core/multi-memory/address0.wast:118
+assert_return(() => invoke($0, `16u_good2`, [0]), [value("i32", 25185)]);
+
+// ./test/core/multi-memory/address0.wast:119
+assert_return(() => invoke($0, `16u_good3`, [0]), [value("i32", 25442)]);
+
+// ./test/core/multi-memory/address0.wast:120
+assert_return(() => invoke($0, `16u_good4`, [0]), [value("i32", 25699)]);
+
+// ./test/core/multi-memory/address0.wast:121
+assert_return(() => invoke($0, `16u_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/multi-memory/address0.wast:123
+assert_return(() => invoke($0, `16s_good1`, [0]), [value("i32", 25185)]);
+
+// ./test/core/multi-memory/address0.wast:124
+assert_return(() => invoke($0, `16s_good2`, [0]), [value("i32", 25185)]);
+
+// ./test/core/multi-memory/address0.wast:125
+assert_return(() => invoke($0, `16s_good3`, [0]), [value("i32", 25442)]);
+
+// ./test/core/multi-memory/address0.wast:126
+assert_return(() => invoke($0, `16s_good4`, [0]), [value("i32", 25699)]);
+
+// ./test/core/multi-memory/address0.wast:127
+assert_return(() => invoke($0, `16s_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/multi-memory/address0.wast:129
+assert_return(() => invoke($0, `32_good1`, [0]), [value("i32", 1684234849)]);
+
+// ./test/core/multi-memory/address0.wast:130
+assert_return(() => invoke($0, `32_good2`, [0]), [value("i32", 1684234849)]);
+
+// ./test/core/multi-memory/address0.wast:131
+assert_return(() => invoke($0, `32_good3`, [0]), [value("i32", 1701077858)]);
+
+// ./test/core/multi-memory/address0.wast:132
+assert_return(() => invoke($0, `32_good4`, [0]), [value("i32", 1717920867)]);
+
+// ./test/core/multi-memory/address0.wast:133
+assert_return(() => invoke($0, `32_good5`, [0]), [value("i32", 122)]);
+
+// ./test/core/multi-memory/address0.wast:135
+assert_return(() => invoke($0, `8u_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:136
+assert_return(() => invoke($0, `8u_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:137
+assert_return(() => invoke($0, `8u_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:138
+assert_return(() => invoke($0, `8u_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:139
+assert_return(() => invoke($0, `8u_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:141
+assert_return(() => invoke($0, `8s_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:142
+assert_return(() => invoke($0, `8s_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:143
+assert_return(() => invoke($0, `8s_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:144
+assert_return(() => invoke($0, `8s_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:145
+assert_return(() => invoke($0, `8s_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:147
+assert_return(() => invoke($0, `16u_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:148
+assert_return(() => invoke($0, `16u_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:149
+assert_return(() => invoke($0, `16u_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:150
+assert_return(() => invoke($0, `16u_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:151
+assert_return(() => invoke($0, `16u_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:153
+assert_return(() => invoke($0, `16s_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:154
+assert_return(() => invoke($0, `16s_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:155
+assert_return(() => invoke($0, `16s_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:156
+assert_return(() => invoke($0, `16s_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:157
+assert_return(() => invoke($0, `16s_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:159
+assert_return(() => invoke($0, `32_good1`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:160
+assert_return(() => invoke($0, `32_good2`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:161
+assert_return(() => invoke($0, `32_good3`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:162
+assert_return(() => invoke($0, `32_good4`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:163
+assert_return(() => invoke($0, `32_good5`, [65507]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:165
+assert_return(() => invoke($0, `8u_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:166
+assert_return(() => invoke($0, `8u_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:167
+assert_return(() => invoke($0, `8u_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:168
+assert_return(() => invoke($0, `8u_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:169
+assert_return(() => invoke($0, `8u_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:171
+assert_return(() => invoke($0, `8s_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:172
+assert_return(() => invoke($0, `8s_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:173
+assert_return(() => invoke($0, `8s_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:174
+assert_return(() => invoke($0, `8s_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:175
+assert_return(() => invoke($0, `8s_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:177
+assert_return(() => invoke($0, `16u_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:178
+assert_return(() => invoke($0, `16u_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:179
+assert_return(() => invoke($0, `16u_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:180
+assert_return(() => invoke($0, `16u_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:181
+assert_return(() => invoke($0, `16u_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:183
+assert_return(() => invoke($0, `16s_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:184
+assert_return(() => invoke($0, `16s_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:185
+assert_return(() => invoke($0, `16s_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:186
+assert_return(() => invoke($0, `16s_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:187
+assert_return(() => invoke($0, `16s_good5`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:189
+assert_return(() => invoke($0, `32_good1`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:190
+assert_return(() => invoke($0, `32_good2`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:191
+assert_return(() => invoke($0, `32_good3`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:192
+assert_return(() => invoke($0, `32_good4`, [65508]), [value("i32", 0)]);
+
+// ./test/core/multi-memory/address0.wast:193
+assert_trap(() => invoke($0, `32_good5`, [65508]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:195
+assert_trap(() => invoke($0, `8u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:196
+assert_trap(() => invoke($0, `8s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:197
+assert_trap(() => invoke($0, `16u_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:198
+assert_trap(() => invoke($0, `16s_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:199
+assert_trap(() => invoke($0, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:200
+assert_trap(() => invoke($0, `32_good3`, [-1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:202
+assert_trap(() => invoke($0, `8u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:203
+assert_trap(() => invoke($0, `8s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:204
+assert_trap(() => invoke($0, `16u_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:205
+assert_trap(() => invoke($0, `16s_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:206
+assert_trap(() => invoke($0, `32_bad`, [0]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:208
+assert_trap(() => invoke($0, `8u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:209
+assert_trap(() => invoke($0, `8s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:210
+assert_trap(() => invoke($0, `16u_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:211
+assert_trap(() => invoke($0, `16s_bad`, [1]), `out of bounds memory access`);
+
+// ./test/core/multi-memory/address0.wast:212
+assert_trap(() => invoke($0, `32_bad`, [1]), `out of bounds memory access`);