b9982bbfd0c1224c5c7b0e7a15d65b0c3efb160e
[platform/framework/web/lwnode.git] /
1 ;; Load and Extend test cases
2
3 (module
4   (memory 1)
5   (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")
6   (data (i32.const 65520) "\0A\0B\0C\0D\0E\0F\80\81\82\83\84\85\86\87\88\89")
7
8   (func (export "v128.load8x8_s") (param $0 i32) (result v128)
9     (v128.load8x8_s (local.get $0))
10   )
11   (func (export "v128.load8x8_u") (param $0 i32) (result v128)
12     (v128.load8x8_u (local.get $0))
13   )
14   (func (export "v128.load16x4_s") (param $0 i32) (result v128)
15     (v128.load16x4_s (local.get $0))
16   )
17   (func (export "v128.load16x4_u") (param $0 i32) (result v128)
18     (v128.load16x4_u (local.get $0))
19   )
20   (func (export "v128.load32x2_s") (param $0 i32) (result v128)
21     (v128.load32x2_s (local.get $0))
22   )
23   (func (export "v128.load32x2_u") (param $0 i32) (result v128)
24     (v128.load32x2_u (local.get $0))
25   )
26
27   ;; load by a constant amount
28   (func (export "v128.load8x8_s_const0") (result v128)
29     (v128.load8x8_s (i32.const 0))
30   )
31   (func (export "v128.load8x8_u_const8") (result v128)
32     (v128.load8x8_u (i32.const 8))
33   )
34   (func (export "v128.load16x4_s_const10") (result v128)
35     (v128.load16x4_s (i32.const 10))
36   )
37   (func (export "v128.load16x4_u_const20") (result v128)
38     (v128.load16x4_u (i32.const 20))
39   )
40   (func (export "v128.load32x2_s_const65520") (result v128)
41     (v128.load32x2_s (i32.const 65520))
42   )
43   (func (export "v128.load32x2_u_const65526") (result v128)
44     (v128.load32x2_u (i32.const 65526))
45   )
46
47   ;; load data with different offset/align arguments
48   ;; i16x8
49   (func (export "v128.load8x8_s_offset0") (param $0 i32) (result v128)
50     (v128.load8x8_s offset=0 (local.get $0))
51   )
52   (func (export "v128.load8x8_s_align1") (param $0 i32) (result v128)
53     (v128.load8x8_s align=1 (local.get $0))
54   )
55   (func (export "v128.load8x8_s_offset0_align1") (param $0 i32) (result v128)
56     (v128.load8x8_s offset=0 align=1 (local.get $0))
57   )
58   (func (export "v128.load8x8_s_offset1_align1") (param $0 i32) (result v128)
59     (v128.load8x8_s offset=1 align=1 (local.get $0))
60   )
61   (func (export "v128.load8x8_s_offset10_align4") (param $0 i32) (result v128)
62     (v128.load8x8_s offset=10 align=4 (local.get $0))
63   )
64   (func (export "v128.load8x8_s_offset20_align8") (param $0 i32) (result v128)
65     (v128.load8x8_s offset=20 align=8 (local.get $0))
66   )
67   (func (export "v128.load8x8_u_offset0") (param $0 i32) (result v128)
68     (v128.load8x8_u offset=0 (local.get $0))
69   )
70   (func (export "v128.load8x8_u_align1") (param $0 i32) (result v128)
71     (v128.load8x8_u align=1 (local.get $0))
72   )
73   (func (export "v128.load8x8_u_offset0_align1") (param $0 i32) (result v128)
74     (v128.load8x8_u offset=0 align=1 (local.get $0))
75   )
76   (func (export "v128.load8x8_u_offset1_align1") (param $0 i32) (result v128)
77     (v128.load8x8_u offset=1 align=1 (local.get $0))
78   )
79   (func (export "v128.load8x8_u_offset10_align4") (param $0 i32) (result v128)
80     (v128.load8x8_u offset=10 align=4 (local.get $0))
81   )
82   (func (export "v128.load8x8_u_offset20_align8") (param $0 i32) (result v128)
83     (v128.load8x8_u offset=20 align=8 (local.get $0))
84   )
85   ;; i32x4
86   (func (export "v128.load16x4_s_offset0") (param $0 i32) (result v128)
87     (v128.load16x4_s offset=0 (local.get $0))
88   )
89   (func (export "v128.load16x4_s_align1") (param $0 i32) (result v128)
90     (v128.load16x4_s align=1 (local.get $0))
91   )
92   (func (export "v128.load16x4_s_offset0_align1") (param $0 i32) (result v128)
93     (v128.load16x4_s offset=0 align=1 (local.get $0))
94   )
95   (func (export "v128.load16x4_s_offset1_align1") (param $0 i32) (result v128)
96     (v128.load16x4_s offset=1 align=1 (local.get $0))
97   )
98   (func (export "v128.load16x4_s_offset10_align4") (param $0 i32) (result v128)
99     (v128.load16x4_s offset=10 align=4 (local.get $0))
100   )
101   (func (export "v128.load16x4_s_offset20_align8") (param $0 i32) (result v128)
102     (v128.load16x4_s offset=20 align=8 (local.get $0))
103   )
104   (func (export "v128.load16x4_u_offset0") (param $0 i32) (result v128)
105     (v128.load16x4_u offset=0 (local.get $0))
106   )
107   (func (export "v128.load16x4_u_align1") (param $0 i32) (result v128)
108     (v128.load16x4_u align=1 (local.get $0))
109   )
110   (func (export "v128.load16x4_u_offset0_align1") (param $0 i32) (result v128)
111     (v128.load16x4_u offset=0 align=1 (local.get $0))
112   )
113   (func (export "v128.load16x4_u_offset1_align1") (param $0 i32) (result v128)
114     (v128.load16x4_u offset=1 align=1 (local.get $0))
115   )
116   (func (export "v128.load16x4_u_offset10_align4") (param $0 i32) (result v128)
117     (v128.load16x4_u offset=10 align=4 (local.get $0))
118   )
119   (func (export "v128.load16x4_u_offset20_align8") (param $0 i32) (result v128)
120     (v128.load16x4_u offset=20 align=8 (local.get $0))
121   )
122   ;; i64x2
123   (func (export "v128.load32x2_s_offset0") (param $0 i32) (result v128)
124     (v128.load32x2_s offset=0 (local.get $0))
125   )
126   (func (export "v128.load32x2_s_align1") (param $0 i32) (result v128)
127     (v128.load32x2_s align=1 (local.get $0))
128   )
129   (func (export "v128.load32x2_s_offset0_align1") (param $0 i32) (result v128)
130     (v128.load32x2_s offset=0 align=1 (local.get $0))
131   )
132   (func (export "v128.load32x2_s_offset1_align1") (param $0 i32) (result v128)
133     (v128.load32x2_s offset=1 align=1 (local.get $0))
134   )
135   (func (export "v128.load32x2_s_offset10_align4") (param $0 i32) (result v128)
136     (v128.load32x2_s offset=10 align=4 (local.get $0))
137   )
138   (func (export "v128.load32x2_s_offset20_align8") (param $0 i32) (result v128)
139     (v128.load32x2_s offset=20 align=8 (local.get $0))
140   )
141   (func (export "v128.load32x2_u_offset0") (param $0 i32) (result v128)
142     (v128.load32x2_u offset=0 (local.get $0))
143   )
144   (func (export "v128.load32x2_u_align1") (param $0 i32) (result v128)
145     (v128.load32x2_u align=1 (local.get $0))
146   )
147   (func (export "v128.load32x2_u_offset0_align1") (param $0 i32) (result v128)
148     (v128.load32x2_u offset=0 align=1 (local.get $0))
149   )
150   (func (export "v128.load32x2_u_offset1_align1") (param $0 i32) (result v128)
151     (v128.load32x2_u offset=1 align=1 (local.get $0))
152   )
153   (func (export "v128.load32x2_u_offset10_align4") (param $0 i32) (result v128)
154     (v128.load32x2_u offset=10 align=4 (local.get $0))
155   )
156   (func (export "v128.load32x2_u_offset20_align8") (param $0 i32) (result v128)
157     (v128.load32x2_u offset=20 align=8 (local.get $0))
158   )
159 )
160
161
162 ;; normal
163 (assert_return (invoke "v128.load8x8_s" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
164 (assert_return (invoke "v128.load8x8_u" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
165 (assert_return (invoke "v128.load16x4_s" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
166 (assert_return (invoke "v128.load16x4_u" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
167 (assert_return (invoke "v128.load32x2_s" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
168 (assert_return (invoke "v128.load32x2_u" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
169 (assert_return (invoke "v128.load8x8_s" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0xFF80 0xFF81))
170 (assert_return (invoke "v128.load8x8_u" (i32.const 10)) (v128.const i16x8 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0080 0x0081))
171 (assert_return (invoke "v128.load16x4_s" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180))
172 (assert_return (invoke "v128.load16x4_u" (i32.const 10)) (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0x00008180))
173 (assert_return (invoke "v128.load32x2_s" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
174 (assert_return (invoke "v128.load32x2_u" (i32.const 10)) (v128.const i64x2 0x000000000D0C0B0A 0x0000000081800F0E))
175 (assert_return (invoke "v128.load8x8_s" (i32.const 20)) (v128.const i16x8 0xff84 0xff85 0xff86 0xff87 0xff88 0xff89 0x0000 0x0000))
176 (assert_return (invoke "v128.load8x8_u" (i32.const 20)) (v128.const i16x8 0x0084 0x0085 0x0086 0x0087 0x0088 0x0089 0x0000 0x0000))
177 (assert_return (invoke "v128.load16x4_s" (i32.const 20)) (v128.const i32x4 0xffff8584 0xffff8786 0xffff8988 0x00000000))
178 (assert_return (invoke "v128.load16x4_u" (i32.const 20)) (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000))
179 (assert_return (invoke "v128.load32x2_s" (i32.const 20)) (v128.const i64x2 0xFFFFFFFF87868584 0x0000000000008988))
180 (assert_return (invoke "v128.load32x2_u" (i32.const 20)) (v128.const i64x2 0x0000000087868584 0x0000000000008988))
181
182 ;; load by a constant amount
183 (assert_return (invoke "v128.load8x8_s_const0") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
184 (assert_return (invoke "v128.load8x8_u_const8") (v128.const i16x8 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F))
185 (assert_return (invoke "v128.load16x4_s_const10") (v128.const i32x4 0x00000B0A 0x00000D0C 0x00000F0E 0xFFFF8180))
186 (assert_return (invoke "v128.load16x4_u_const20") (v128.const i32x4 0x00008584 0x00008786 0x00008988 0x00000000))
187 (assert_return (invoke "v128.load32x2_s_const65520") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
188 (assert_return (invoke "v128.load32x2_u_const65526") (v128.const i64x2 0x0000000083828180 0x0000000087868584))
189
190 ;; load data with different offset/align arguments
191 ;; i16x8
192 (assert_return (invoke "v128.load8x8_s_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
193 (assert_return (invoke "v128.load8x8_s_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
194 (assert_return (invoke "v128.load8x8_s_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009))
195 (assert_return (invoke "v128.load8x8_s_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0xFF80 0xFF81 0xFF82 0xFF83 0xFF84))
196 (assert_return (invoke "v128.load8x8_s_offset20_align8" (i32.const 4)) (v128.const i16x8 0xFF88 0xFF89 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000))
197 (assert_return (invoke "v128.load8x8_u_offset0" (i32.const 0)) (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
198 (assert_return (invoke "v128.load8x8_u_align1" (i32.const 1)) (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
199 (assert_return (invoke "v128.load8x8_u_offset0_align1" (i32.const 2)) (v128.const i16x8 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009))
200 (assert_return (invoke "v128.load8x8_u_offset10_align4" (i32.const 3)) (v128.const i16x8 0x000D 0x000E 0x000F 0x0080 0x0081 0x0082 0x0083 0x0084))
201 (assert_return (invoke "v128.load8x8_u_offset20_align8" (i32.const 4)) (v128.const i16x8 0x0088 0x0089 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000))
202 ;; i32x4
203 (assert_return (invoke "v128.load16x4_s_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
204 (assert_return (invoke "v128.load16x4_s_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807))
205 (assert_return (invoke "v128.load16x4_s_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
206 (assert_return (invoke "v128.load16x4_s_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0xFFFF800F 0xFFFF8281 0xFFFF8483))
207 (assert_return (invoke "v128.load16x4_s_offset20_align8" (i32.const 4)) (v128.const i32x4 0xFFFF8988 0x00000000 0x00000000 0x00000000))
208 (assert_return (invoke "v128.load16x4_u_offset0" (i32.const 0)) (v128.const i32x4 0x00000100 0x00000302 0x00000504 0x00000706))
209 (assert_return (invoke "v128.load16x4_u_align1" (i32.const 1)) (v128.const i32x4 0x00000201 0x00000403 0x00000605 0x00000807))
210 (assert_return (invoke "v128.load16x4_u_offset0_align1" (i32.const 2)) (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
211 (assert_return (invoke "v128.load16x4_u_offset10_align4" (i32.const 3)) (v128.const i32x4 0x00000E0D 0x0000800F 0x00008281 0x00008483))
212 (assert_return (invoke "v128.load16x4_u_offset20_align8" (i32.const 4)) (v128.const i32x4 0x00008988 0x00000000 0x00000000 0x00000000))
213 ;; i64x2
214 (assert_return (invoke "v128.load32x2_s_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
215 (assert_return (invoke "v128.load32x2_s_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605))
216 (assert_return (invoke "v128.load32x2_s_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706))
217 (assert_return (invoke "v128.load32x2_s_offset10_align4" (i32.const 3)) (v128.const i64x2 0xFFFFFFFF800F0E0D 0xFFFFFFFF84838281))
218 (assert_return (invoke "v128.load32x2_s_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000))
219 (assert_return (invoke "v128.load32x2_u_offset0" (i32.const 0)) (v128.const i64x2 0x0000000003020100 0x0000000007060504))
220 (assert_return (invoke "v128.load32x2_u_align1" (i32.const 1)) (v128.const i64x2 0x0000000004030201 0x0000000008070605))
221 (assert_return (invoke "v128.load32x2_u_offset0_align1" (i32.const 2)) (v128.const i64x2 0x0000000005040302 0x0000000009080706))
222 (assert_return (invoke "v128.load32x2_u_offset10_align4" (i32.const 3)) (v128.const i64x2 0x00000000800F0E0D 0x0000000084838281))
223 (assert_return (invoke "v128.load32x2_u_offset20_align8" (i32.const 4)) (v128.const i64x2 0x0000000000008988 0x0000000000000000))
224
225 ;; out of bounds memory access
226 (assert_trap (invoke "v128.load8x8_s" (i32.const -1))  "out of bounds memory access")
227 (assert_trap (invoke "v128.load8x8_u" (i32.const -1))  "out of bounds memory access")
228 (assert_trap (invoke "v128.load16x4_s" (i32.const 65536))  "out of bounds memory access")
229 (assert_trap (invoke "v128.load16x4_u" (i32.const 65536))  "out of bounds memory access")
230 (assert_trap (invoke "v128.load32x2_s" (i32.const 65529))  "out of bounds memory access")
231 (assert_trap (invoke "v128.load32x2_u" (i32.const 65529))  "out of bounds memory access")
232
233 (assert_trap (invoke "v128.load8x8_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
234 (assert_trap (invoke "v128.load8x8_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
235 (assert_trap (invoke "v128.load16x4_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
236 (assert_trap (invoke "v128.load16x4_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
237 (assert_trap (invoke "v128.load32x2_s_offset1_align1" (i32.const -1)) "out of bounds memory access")
238 (assert_trap (invoke "v128.load32x2_u_offset1_align1" (i32.const -1)) "out of bounds memory access")
239
240 ;; type check
241 (assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_s (f32.const 0)))) "type mismatch")
242 (assert_invalid (module (memory 0) (func (result v128) (v128.load8x8_u (f32.const 0)))) "type mismatch")
243 (assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_s (f64.const 0)))) "type mismatch")
244 (assert_invalid (module (memory 0) (func (result v128) (v128.load16x4_u (f64.const 0)))) "type mismatch")
245 (assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_s (v128.const i32x4 0 0 0 0)))) "type mismatch")
246 (assert_invalid (module (memory 0) (func (result v128) (v128.load32x2_u (v128.const i32x4 0 0 0 0)))) "type mismatch")
247
248 ;; Test operation with empty argument
249
250 (assert_invalid
251   (module (memory 0)
252     (func $v128.load8x8_s-arg-empty (result v128)
253       (v128.load8x8_s)
254     )
255   )
256   "type mismatch"
257 )
258 (assert_invalid
259   (module (memory 0)
260     (func $v128.load8x8_u-arg-empty (result v128)
261       (v128.load8x8_u)
262     )
263   )
264   "type mismatch"
265 )
266 (assert_invalid
267   (module (memory 0)
268     (func $v128.load16x4_s-arg-empty (result v128)
269       (v128.load16x4_s)
270     )
271   )
272   "type mismatch"
273 )
274 (assert_invalid
275   (module (memory 0)
276     (func $v128.load16x4_u-arg-empty (result v128)
277       (v128.load16x4_u)
278     )
279   )
280   "type mismatch"
281 )
282 (assert_invalid
283   (module (memory 0)
284     (func $v128.load32x2_s-arg-empty (result v128)
285       (v128.load32x2_s)
286     )
287   )
288   "type mismatch"
289 )
290 (assert_invalid
291   (module (memory 0)
292     (func $v128.load32x2_u-arg-empty (result v128)
293       (v128.load32x2_u)
294     )
295   )
296   "type mismatch"
297 )
298
299 ;; Unknown operator
300
301 (assert_malformed (module quote "(memory 1) (func (drop (i16x8.load16x4_s (i32.const 0))))") "unknown operator")
302 (assert_malformed (module quote "(memory 1) (func (drop (i16x8.load16x4_u (i32.const 0))))") "unknown operator")
303 (assert_malformed (module quote "(memory 1) (func (drop (i32x4.load32x2_s (i32.const 0))))") "unknown operator")
304 (assert_malformed (module quote "(memory 1) (func (drop (i32x4.load32x2_u (i32.const 0))))") "unknown operator")
305 (assert_malformed (module quote "(memory 1) (func (drop (i64x2.load64x1_s (i32.const 0))))") "unknown operator")
306 (assert_malformed (module quote "(memory 1) (func (drop (i64x2.load64x1_u (i32.const 0))))") "unknown operator")
307
308 ;; combination
309 (module
310   (memory 1)
311   (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")
312   (func (export "v128.load8x8_s-in-block") (result v128)
313     (block (result v128) (block (result v128) (v128.load8x8_s (i32.const 0))))
314   )
315   (func (export "v128.load8x8_u-in-block") (result v128)
316     (block (result v128) (block (result v128) (v128.load8x8_u (i32.const 1))))
317   )
318   (func (export "v128.load16x4_s-in-block") (result v128)
319     (block (result v128) (block (result v128) (v128.load16x4_s (i32.const 2))))
320   )
321   (func (export "v128.load16x4_u-in-block") (result v128)
322     (block (result v128) (block (result v128) (v128.load16x4_u (i32.const 3))))
323   )
324   (func (export "v128.load32x2_s-in-block") (result v128)
325     (block (result v128) (block (result v128) (v128.load32x2_s (i32.const 4))))
326   )
327   (func (export "v128.load32x2_u-in-block") (result v128)
328     (block (result v128) (block (result v128) (v128.load32x2_u (i32.const 5))))
329   )
330   (func (export "v128.load8x8_s-as-br-value") (result v128)
331     (block (result v128) (br 0 (v128.load8x8_s (i32.const 6))))
332   )
333   (func (export "v128.load8x8_u-as-br-value") (result v128)
334     (block (result v128) (br 0 (v128.load8x8_u (i32.const 7))))
335   )
336   (func (export "v128.load16x4_s-as-br-value") (result v128)
337     (block (result v128) (br 0 (v128.load16x4_s (i32.const 8))))
338   )
339   (func (export "v128.load16x4_u-as-br-value") (result v128)
340     (block (result v128) (br 0 (v128.load16x4_u (i32.const 9))))
341   )
342   (func (export "v128.load32x2_s-as-br-value") (result v128)
343     (block (result v128) (br 0 (v128.load32x2_s (i32.const 10))))
344   )
345   (func (export "v128.load32x2_u-as-br-value") (result v128)
346     (block (result v128) (br 0 (v128.load32x2_u (i32.const 11))))
347   )
348   (func (export "v128.load8x8_s-extract_lane_s-operand") (result i32)
349     (i8x16.extract_lane_s 0 (v128.load8x8_s (i32.const 12)))
350   )
351   (func (export "v128.load8x8_u-extract_lane_s-operand") (result i32)
352     (i8x16.extract_lane_s 0 (v128.load8x8_u (i32.const 13)))
353   )
354   (func (export "v128.load16x4_s-extract_lane_s-operand") (result i32)
355     (i8x16.extract_lane_s 0 (v128.load16x4_s (i32.const 14)))
356   )
357   (func (export "v128.load16x4_u-extract_lane_s-operand") (result i32)
358     (i8x16.extract_lane_s 0 (v128.load16x4_u (i32.const 15)))
359   )
360   (func (export "v128.load32x2_s-extract_lane_s-operand") (result i32)
361     (i8x16.extract_lane_s 0 (v128.load32x2_s (i32.const 16)))
362   )
363   (func (export "v128.load32x2_u-extract_lane_s-operand") (result i32)
364     (i8x16.extract_lane_s 0 (v128.load32x2_u (i32.const 17)))
365   )
366 )
367 (assert_return (invoke "v128.load8x8_s-in-block") (v128.const i16x8 0x0000 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007))
368 (assert_return (invoke "v128.load8x8_u-in-block") (v128.const i16x8 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008))
369 (assert_return (invoke "v128.load16x4_s-in-block") (v128.const i32x4 0x00000302 0x00000504 0x00000706 0x00000908))
370 (assert_return (invoke "v128.load16x4_u-in-block") (v128.const i32x4 0x00000403 0x00000605 0x00000807 0x00000A09))
371 (assert_return (invoke "v128.load32x2_s-in-block") (v128.const i64x2 0x0000000007060504 0x000000000B0A0908))
372 (assert_return (invoke "v128.load32x2_u-in-block") (v128.const i64x2 0x0000000008070605 0x000000000C0B0A09))
373 (assert_return (invoke "v128.load8x8_s-as-br-value") (v128.const i16x8 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D))
374 (assert_return (invoke "v128.load8x8_u-as-br-value") (v128.const i16x8 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E))
375 (assert_return (invoke "v128.load16x4_s-as-br-value") (v128.const i32x4 0x00000908 0x00000B0A 0x00000D0C 0x00000F0E))
376 (assert_return (invoke "v128.load16x4_u-as-br-value") (v128.const i32x4 0x00000A09 0x00000C0B 0x00000E0D 0x0000800F))
377 (assert_return (invoke "v128.load32x2_s-as-br-value") (v128.const i64x2 0x000000000D0C0B0A 0xFFFFFFFF81800F0E))
378 (assert_return (invoke "v128.load32x2_u-as-br-value") (v128.const i64x2 0x000000000E0D0C0B 0x000000008281800F))
379 (assert_return (invoke "v128.load8x8_s-extract_lane_s-operand") (i32.const 12))
380 (assert_return (invoke "v128.load8x8_u-extract_lane_s-operand") (i32.const 13))
381 (assert_return (invoke "v128.load16x4_s-extract_lane_s-operand") (i32.const 14))
382 (assert_return (invoke "v128.load16x4_u-extract_lane_s-operand") (i32.const 15))
383 (assert_return (invoke "v128.load32x2_s-extract_lane_s-operand") (i32.const -128))
384 (assert_return (invoke "v128.load32x2_u-extract_lane_s-operand") (i32.const -127))