summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js')
-rw-r--r--js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js726
1 files changed, 726 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js b/js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js
new file mode 100644
index 0000000000..3ee50e0b23
--- /dev/null
+++ b/js/src/jit-test/tests/wasm/spec/spec/simd_load_extend.wast.js
@@ -0,0 +1,726 @@
+// |jit-test| skip-if: !wasmSimdEnabled()
+
+/* 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/simd/simd_load_extend.wast
+
+// ./test/core/simd/simd_load_extend.wast:3
+let $0 = instantiate(`(module
+ (memory 1)
+ (data (i32.const 0) "\\00\\01\\02\\03\\04\\05\\06\\07\\08\\09\\0A\\0B\\0C\\0D\\0E\\0F\\80\\81\\82\\83\\84\\85\\86\\87\\88\\89")
+ (data (i32.const 65520) "\\0A\\0B\\0C\\0D\\0E\\0F\\80\\81\\82\\83\\84\\85\\86\\87\\88\\89")
+
+ (func (export "v128.load8x8_s") (param $$0 i32) (result v128)
+ (v128.load8x8_s (local.get $$0))
+ )
+ (func (export "v128.load8x8_u") (param $$0 i32) (result v128)
+ (v128.load8x8_u (local.get $$0))
+ )
+ (func (export "v128.load16x4_s") (param $$0 i32) (result v128)
+ (v128.load16x4_s (local.get $$0))
+ )
+ (func (export "v128.load16x4_u") (param $$0 i32) (result v128)
+ (v128.load16x4_u (local.get $$0))
+ )
+ (func (export "v128.load32x2_s") (param $$0 i32) (result v128)
+ (v128.load32x2_s (local.get $$0))
+ )
+ (func (export "v128.load32x2_u") (param $$0 i32) (result v128)
+ (v128.load32x2_u (local.get $$0))
+ )
+
+ ;; load by a constant amount
+ (func (export "v128.load8x8_s_const0") (result v128)
+ (v128.load8x8_s (i32.const 0))
+ )
+ (func (export "v128.load8x8_u_const8") (result v128)
+ (v128.load8x8_u (i32.const 8))
+ )
+ (func (export "v128.load16x4_s_const10") (result v128)
+ (v128.load16x4_s (i32.const 10))
+ )
+ (func (export "v128.load16x4_u_const20") (result v128)
+ (v128.load16x4_u (i32.const 20))
+ )
+ (func (export "v128.load32x2_s_const65520") (result v128)
+ (v128.load32x2_s (i32.const 65520))
+ )
+ (func (export "v128.load32x2_u_const65526") (result v128)
+ (v128.load32x2_u (i32.const 65526))
+ )
+
+ ;; load data with different offset/align arguments
+ ;; i16x8
+ (func (export "v128.load8x8_s_offset0") (param $$0 i32) (result v128)
+ (v128.load8x8_s offset=0 (local.get $$0))
+ )
+ (func (export "v128.load8x8_s_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_s align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_s_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_s offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_s_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_s offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_s_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load8x8_s offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load8x8_s_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load8x8_s offset=20 align=8 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_offset0") (param $$0 i32) (result v128)
+ (v128.load8x8_u offset=0 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_u align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_u offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load8x8_u offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load8x8_u offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load8x8_u_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load8x8_u offset=20 align=8 (local.get $$0))
+ )
+ ;; i32x4
+ (func (export "v128.load16x4_s_offset0") (param $$0 i32) (result v128)
+ (v128.load16x4_s offset=0 (local.get $$0))
+ )
+ (func (export "v128.load16x4_s_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_s align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_s_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_s offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_s_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_s offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_s_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load16x4_s offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load16x4_s_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load16x4_s offset=20 align=8 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_offset0") (param $$0 i32) (result v128)
+ (v128.load16x4_u offset=0 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_u align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_u offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load16x4_u offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load16x4_u offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load16x4_u_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load16x4_u offset=20 align=8 (local.get $$0))
+ )
+ ;; i64x2
+ (func (export "v128.load32x2_s_offset0") (param $$0 i32) (result v128)
+ (v128.load32x2_s offset=0 (local.get $$0))
+ )
+ (func (export "v128.load32x2_s_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_s align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_s_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_s offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_s_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_s offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_s_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load32x2_s offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load32x2_s_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load32x2_s offset=20 align=8 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_offset0") (param $$0 i32) (result v128)
+ (v128.load32x2_u offset=0 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_u align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_offset0_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_u offset=0 align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_offset1_align1") (param $$0 i32) (result v128)
+ (v128.load32x2_u offset=1 align=1 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_offset10_align4") (param $$0 i32) (result v128)
+ (v128.load32x2_u offset=10 align=4 (local.get $$0))
+ )
+ (func (export "v128.load32x2_u_offset20_align8") (param $$0 i32) (result v128)
+ (v128.load32x2_u offset=20 align=8 (local.get $$0))
+ )
+)`);
+
+// ./test/core/simd/simd_load_extend.wast:163
+assert_return(
+ () => invoke($0, `v128.load8x8_s`, [0]),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:164
+assert_return(
+ () => invoke($0, `v128.load8x8_u`, [0]),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:165
+assert_return(() => invoke($0, `v128.load16x4_s`, [0]), [i32x4([0x100, 0x302, 0x504, 0x706])]);
+
+// ./test/core/simd/simd_load_extend.wast:166
+assert_return(() => invoke($0, `v128.load16x4_u`, [0]), [i32x4([0x100, 0x302, 0x504, 0x706])]);
+
+// ./test/core/simd/simd_load_extend.wast:167
+assert_return(() => invoke($0, `v128.load32x2_s`, [0]), [i64x2([0x3020100n, 0x7060504n])]);
+
+// ./test/core/simd/simd_load_extend.wast:168
+assert_return(() => invoke($0, `v128.load32x2_u`, [0]), [i64x2([0x3020100n, 0x7060504n])]);
+
+// ./test/core/simd/simd_load_extend.wast:169
+assert_return(
+ () => invoke($0, `v128.load8x8_s`, [10]),
+ [i16x8([0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0xff80, 0xff81])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:170
+assert_return(
+ () => invoke($0, `v128.load8x8_u`, [10]),
+ [i16x8([0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x80, 0x81])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:171
+assert_return(() => invoke($0, `v128.load16x4_s`, [10]), [i32x4([0xb0a, 0xd0c, 0xf0e, 0xffff8180])]);
+
+// ./test/core/simd/simd_load_extend.wast:172
+assert_return(() => invoke($0, `v128.load16x4_u`, [10]), [i32x4([0xb0a, 0xd0c, 0xf0e, 0x8180])]);
+
+// ./test/core/simd/simd_load_extend.wast:173
+assert_return(() => invoke($0, `v128.load32x2_s`, [10]), [i64x2([0xd0c0b0an, 0xffffffff81800f0en])]);
+
+// ./test/core/simd/simd_load_extend.wast:174
+assert_return(() => invoke($0, `v128.load32x2_u`, [10]), [i64x2([0xd0c0b0an, 0x81800f0en])]);
+
+// ./test/core/simd/simd_load_extend.wast:175
+assert_return(
+ () => invoke($0, `v128.load8x8_s`, [20]),
+ [i16x8([0xff84, 0xff85, 0xff86, 0xff87, 0xff88, 0xff89, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:176
+assert_return(
+ () => invoke($0, `v128.load8x8_u`, [20]),
+ [i16x8([0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:177
+assert_return(
+ () => invoke($0, `v128.load16x4_s`, [20]),
+ [i32x4([0xffff8584, 0xffff8786, 0xffff8988, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:178
+assert_return(() => invoke($0, `v128.load16x4_u`, [20]), [i32x4([0x8584, 0x8786, 0x8988, 0x0])]);
+
+// ./test/core/simd/simd_load_extend.wast:179
+assert_return(() => invoke($0, `v128.load32x2_s`, [20]), [i64x2([0xffffffff87868584n, 0x8988n])]);
+
+// ./test/core/simd/simd_load_extend.wast:180
+assert_return(() => invoke($0, `v128.load32x2_u`, [20]), [i64x2([0x87868584n, 0x8988n])]);
+
+// ./test/core/simd/simd_load_extend.wast:183
+assert_return(
+ () => invoke($0, `v128.load8x8_s_const0`, []),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:184
+assert_return(
+ () => invoke($0, `v128.load8x8_u_const8`, []),
+ [i16x8([0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:185
+assert_return(() => invoke($0, `v128.load16x4_s_const10`, []), [i32x4([0xb0a, 0xd0c, 0xf0e, 0xffff8180])]);
+
+// ./test/core/simd/simd_load_extend.wast:186
+assert_return(() => invoke($0, `v128.load16x4_u_const20`, []), [i32x4([0x8584, 0x8786, 0x8988, 0x0])]);
+
+// ./test/core/simd/simd_load_extend.wast:187
+assert_return(
+ () => invoke($0, `v128.load32x2_s_const65520`, []),
+ [i64x2([0xd0c0b0an, 0xffffffff81800f0en])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:188
+assert_return(() => invoke($0, `v128.load32x2_u_const65526`, []), [i64x2([0x83828180n, 0x87868584n])]);
+
+// ./test/core/simd/simd_load_extend.wast:192
+assert_return(
+ () => invoke($0, `v128.load8x8_s_offset0`, [0]),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:193
+assert_return(
+ () => invoke($0, `v128.load8x8_s_align1`, [1]),
+ [i16x8([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:194
+assert_return(
+ () => invoke($0, `v128.load8x8_s_offset0_align1`, [2]),
+ [i16x8([0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:195
+assert_return(
+ () => invoke($0, `v128.load8x8_s_offset10_align4`, [3]),
+ [i16x8([0xd, 0xe, 0xf, 0xff80, 0xff81, 0xff82, 0xff83, 0xff84])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:196
+assert_return(
+ () => invoke($0, `v128.load8x8_s_offset20_align8`, [4]),
+ [i16x8([0xff88, 0xff89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:197
+assert_return(
+ () => invoke($0, `v128.load8x8_u_offset0`, [0]),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:198
+assert_return(
+ () => invoke($0, `v128.load8x8_u_align1`, [1]),
+ [i16x8([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:199
+assert_return(
+ () => invoke($0, `v128.load8x8_u_offset0_align1`, [2]),
+ [i16x8([0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:200
+assert_return(
+ () => invoke($0, `v128.load8x8_u_offset10_align4`, [3]),
+ [i16x8([0xd, 0xe, 0xf, 0x80, 0x81, 0x82, 0x83, 0x84])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:201
+assert_return(
+ () => invoke($0, `v128.load8x8_u_offset20_align8`, [4]),
+ [i16x8([0x88, 0x89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:203
+assert_return(() => invoke($0, `v128.load16x4_s_offset0`, [0]), [i32x4([0x100, 0x302, 0x504, 0x706])]);
+
+// ./test/core/simd/simd_load_extend.wast:204
+assert_return(() => invoke($0, `v128.load16x4_s_align1`, [1]), [i32x4([0x201, 0x403, 0x605, 0x807])]);
+
+// ./test/core/simd/simd_load_extend.wast:205
+assert_return(
+ () => invoke($0, `v128.load16x4_s_offset0_align1`, [2]),
+ [i32x4([0x302, 0x504, 0x706, 0x908])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:206
+assert_return(
+ () => invoke($0, `v128.load16x4_s_offset10_align4`, [3]),
+ [i32x4([0xe0d, 0xffff800f, 0xffff8281, 0xffff8483])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:207
+assert_return(
+ () => invoke($0, `v128.load16x4_s_offset20_align8`, [4]),
+ [i32x4([0xffff8988, 0x0, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:208
+assert_return(() => invoke($0, `v128.load16x4_u_offset0`, [0]), [i32x4([0x100, 0x302, 0x504, 0x706])]);
+
+// ./test/core/simd/simd_load_extend.wast:209
+assert_return(() => invoke($0, `v128.load16x4_u_align1`, [1]), [i32x4([0x201, 0x403, 0x605, 0x807])]);
+
+// ./test/core/simd/simd_load_extend.wast:210
+assert_return(
+ () => invoke($0, `v128.load16x4_u_offset0_align1`, [2]),
+ [i32x4([0x302, 0x504, 0x706, 0x908])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:211
+assert_return(
+ () => invoke($0, `v128.load16x4_u_offset10_align4`, [3]),
+ [i32x4([0xe0d, 0x800f, 0x8281, 0x8483])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:212
+assert_return(
+ () => invoke($0, `v128.load16x4_u_offset20_align8`, [4]),
+ [i32x4([0x8988, 0x0, 0x0, 0x0])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:214
+assert_return(() => invoke($0, `v128.load32x2_s_offset0`, [0]), [i64x2([0x3020100n, 0x7060504n])]);
+
+// ./test/core/simd/simd_load_extend.wast:215
+assert_return(() => invoke($0, `v128.load32x2_s_align1`, [1]), [i64x2([0x4030201n, 0x8070605n])]);
+
+// ./test/core/simd/simd_load_extend.wast:216
+assert_return(
+ () => invoke($0, `v128.load32x2_s_offset0_align1`, [2]),
+ [i64x2([0x5040302n, 0x9080706n])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:217
+assert_return(
+ () => invoke($0, `v128.load32x2_s_offset10_align4`, [3]),
+ [i64x2([0xffffffff800f0e0dn, 0xffffffff84838281n])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:218
+assert_return(() => invoke($0, `v128.load32x2_s_offset20_align8`, [4]), [i64x2([0x8988n, 0x0n])]);
+
+// ./test/core/simd/simd_load_extend.wast:219
+assert_return(() => invoke($0, `v128.load32x2_u_offset0`, [0]), [i64x2([0x3020100n, 0x7060504n])]);
+
+// ./test/core/simd/simd_load_extend.wast:220
+assert_return(() => invoke($0, `v128.load32x2_u_align1`, [1]), [i64x2([0x4030201n, 0x8070605n])]);
+
+// ./test/core/simd/simd_load_extend.wast:221
+assert_return(
+ () => invoke($0, `v128.load32x2_u_offset0_align1`, [2]),
+ [i64x2([0x5040302n, 0x9080706n])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:222
+assert_return(
+ () => invoke($0, `v128.load32x2_u_offset10_align4`, [3]),
+ [i64x2([0x800f0e0dn, 0x84838281n])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:223
+assert_return(() => invoke($0, `v128.load32x2_u_offset20_align8`, [4]), [i64x2([0x8988n, 0x0n])]);
+
+// ./test/core/simd/simd_load_extend.wast:226
+assert_trap(() => invoke($0, `v128.load8x8_s`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:227
+assert_trap(() => invoke($0, `v128.load8x8_u`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:228
+assert_trap(() => invoke($0, `v128.load16x4_s`, [65536]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:229
+assert_trap(() => invoke($0, `v128.load16x4_u`, [65536]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:230
+assert_trap(() => invoke($0, `v128.load32x2_s`, [65529]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:231
+assert_trap(() => invoke($0, `v128.load32x2_u`, [65529]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:233
+assert_trap(() => invoke($0, `v128.load8x8_s_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:234
+assert_trap(() => invoke($0, `v128.load8x8_u_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:235
+assert_trap(() => invoke($0, `v128.load16x4_s_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:236
+assert_trap(() => invoke($0, `v128.load16x4_u_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:237
+assert_trap(() => invoke($0, `v128.load32x2_s_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:238
+assert_trap(() => invoke($0, `v128.load32x2_u_offset1_align1`, [-1]), `out of bounds memory access`);
+
+// ./test/core/simd/simd_load_extend.wast:241
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load8x8_s (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:242
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load8x8_u (f32.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:243
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load16x4_s (f64.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:244
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load16x4_u (f64.const 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:245
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load32x2_s (v128.const i32x4 0 0 0 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:246
+assert_invalid(
+ () => instantiate(`(module (memory 0) (func (result v128) (v128.load32x2_u (v128.const i32x4 0 0 0 0))))`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:250
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load8x8_s-arg-empty (result v128)
+ (v128.load8x8_s)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:258
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load8x8_u-arg-empty (result v128)
+ (v128.load8x8_u)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:266
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load16x4_s-arg-empty (result v128)
+ (v128.load16x4_s)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:274
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load16x4_u-arg-empty (result v128)
+ (v128.load16x4_u)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:282
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load32x2_s-arg-empty (result v128)
+ (v128.load32x2_s)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:290
+assert_invalid(
+ () => instantiate(`(module (memory 0)
+ (func $$v128.load32x2_u-arg-empty (result v128)
+ (v128.load32x2_u)
+ )
+ )`),
+ `type mismatch`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:301
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i16x8.load16x4_s (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:302
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i16x8.load16x4_u (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:303
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i32x4.load32x2_s (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:304
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i32x4.load32x2_u (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:305
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i64x2.load64x1_s (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:306
+assert_malformed(
+ () => instantiate(`(memory 1) (func (drop (i64x2.load64x1_u (i32.const 0)))) `),
+ `unknown operator`,
+);
+
+// ./test/core/simd/simd_load_extend.wast:309
+let $1 = instantiate(`(module
+ (memory 1)
+ (data (i32.const 0) "\\00\\01\\02\\03\\04\\05\\06\\07\\08\\09\\0A\\0B\\0C\\0D\\0E\\0F\\80\\81\\82\\83\\84\\85\\86\\87\\88\\89")
+ (func (export "v128.load8x8_s-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load8x8_s (i32.const 0))))
+ )
+ (func (export "v128.load8x8_u-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load8x8_u (i32.const 1))))
+ )
+ (func (export "v128.load16x4_s-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load16x4_s (i32.const 2))))
+ )
+ (func (export "v128.load16x4_u-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load16x4_u (i32.const 3))))
+ )
+ (func (export "v128.load32x2_s-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load32x2_s (i32.const 4))))
+ )
+ (func (export "v128.load32x2_u-in-block") (result v128)
+ (block (result v128) (block (result v128) (v128.load32x2_u (i32.const 5))))
+ )
+ (func (export "v128.load8x8_s-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load8x8_s (i32.const 6))))
+ )
+ (func (export "v128.load8x8_u-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load8x8_u (i32.const 7))))
+ )
+ (func (export "v128.load16x4_s-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load16x4_s (i32.const 8))))
+ )
+ (func (export "v128.load16x4_u-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load16x4_u (i32.const 9))))
+ )
+ (func (export "v128.load32x2_s-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load32x2_s (i32.const 10))))
+ )
+ (func (export "v128.load32x2_u-as-br-value") (result v128)
+ (block (result v128) (br 0 (v128.load32x2_u (i32.const 11))))
+ )
+ (func (export "v128.load8x8_s-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load8x8_s (i32.const 12)))
+ )
+ (func (export "v128.load8x8_u-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load8x8_u (i32.const 13)))
+ )
+ (func (export "v128.load16x4_s-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load16x4_s (i32.const 14)))
+ )
+ (func (export "v128.load16x4_u-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load16x4_u (i32.const 15)))
+ )
+ (func (export "v128.load32x2_s-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load32x2_s (i32.const 16)))
+ )
+ (func (export "v128.load32x2_u-extract_lane_s-operand") (result i32)
+ (i8x16.extract_lane_s 0 (v128.load32x2_u (i32.const 17)))
+ )
+)`);
+
+// ./test/core/simd/simd_load_extend.wast:367
+assert_return(
+ () => invoke($1, `v128.load8x8_s-in-block`, []),
+ [i16x8([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:368
+assert_return(
+ () => invoke($1, `v128.load8x8_u-in-block`, []),
+ [i16x8([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:369
+assert_return(() => invoke($1, `v128.load16x4_s-in-block`, []), [i32x4([0x302, 0x504, 0x706, 0x908])]);
+
+// ./test/core/simd/simd_load_extend.wast:370
+assert_return(() => invoke($1, `v128.load16x4_u-in-block`, []), [i32x4([0x403, 0x605, 0x807, 0xa09])]);
+
+// ./test/core/simd/simd_load_extend.wast:371
+assert_return(() => invoke($1, `v128.load32x2_s-in-block`, []), [i64x2([0x7060504n, 0xb0a0908n])]);
+
+// ./test/core/simd/simd_load_extend.wast:372
+assert_return(() => invoke($1, `v128.load32x2_u-in-block`, []), [i64x2([0x8070605n, 0xc0b0a09n])]);
+
+// ./test/core/simd/simd_load_extend.wast:373
+assert_return(
+ () => invoke($1, `v128.load8x8_s-as-br-value`, []),
+ [i16x8([0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:374
+assert_return(
+ () => invoke($1, `v128.load8x8_u-as-br-value`, []),
+ [i16x8([0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:375
+assert_return(() => invoke($1, `v128.load16x4_s-as-br-value`, []), [i32x4([0x908, 0xb0a, 0xd0c, 0xf0e])]);
+
+// ./test/core/simd/simd_load_extend.wast:376
+assert_return(() => invoke($1, `v128.load16x4_u-as-br-value`, []), [i32x4([0xa09, 0xc0b, 0xe0d, 0x800f])]);
+
+// ./test/core/simd/simd_load_extend.wast:377
+assert_return(
+ () => invoke($1, `v128.load32x2_s-as-br-value`, []),
+ [i64x2([0xd0c0b0an, 0xffffffff81800f0en])],
+);
+
+// ./test/core/simd/simd_load_extend.wast:378
+assert_return(() => invoke($1, `v128.load32x2_u-as-br-value`, []), [i64x2([0xe0d0c0bn, 0x8281800fn])]);
+
+// ./test/core/simd/simd_load_extend.wast:379
+assert_return(() => invoke($1, `v128.load8x8_s-extract_lane_s-operand`, []), [value("i32", 12)]);
+
+// ./test/core/simd/simd_load_extend.wast:380
+assert_return(() => invoke($1, `v128.load8x8_u-extract_lane_s-operand`, []), [value("i32", 13)]);
+
+// ./test/core/simd/simd_load_extend.wast:381
+assert_return(() => invoke($1, `v128.load16x4_s-extract_lane_s-operand`, []), [value("i32", 14)]);
+
+// ./test/core/simd/simd_load_extend.wast:382
+assert_return(() => invoke($1, `v128.load16x4_u-extract_lane_s-operand`, []), [value("i32", 15)]);
+
+// ./test/core/simd/simd_load_extend.wast:383
+assert_return(() => invoke($1, `v128.load32x2_s-extract_lane_s-operand`, []), [value("i32", -128)]);
+
+// ./test/core/simd/simd_load_extend.wast:384
+assert_return(() => invoke($1, `v128.load32x2_u-extract_lane_s-operand`, []), [value("i32", -127)]);