...
1;; Load i32 data with different offset/align arguments
2
3(module
4 (memory 1)
5 (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
6
7 (func (export "8u_good1") (param $i i32) (result i32)
8 (i32.load8_u offset=0 (local.get $i)) ;; 97 'a'
9 )
10 (func (export "8u_good2") (param $i i32) (result i32)
11 (i32.load8_u align=1 (local.get $i)) ;; 97 'a'
12 )
13 (func (export "8u_good3") (param $i i32) (result i32)
14 (i32.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
15 )
16 (func (export "8u_good4") (param $i i32) (result i32)
17 (i32.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
18 )
19 (func (export "8u_good5") (param $i i32) (result i32)
20 (i32.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
21 )
22
23 (func (export "8s_good1") (param $i i32) (result i32)
24 (i32.load8_s offset=0 (local.get $i)) ;; 97 'a'
25 )
26 (func (export "8s_good2") (param $i i32) (result i32)
27 (i32.load8_s align=1 (local.get $i)) ;; 97 'a'
28 )
29 (func (export "8s_good3") (param $i i32) (result i32)
30 (i32.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
31 )
32 (func (export "8s_good4") (param $i i32) (result i32)
33 (i32.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
34 )
35 (func (export "8s_good5") (param $i i32) (result i32)
36 (i32.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
37 )
38
39 (func (export "16u_good1") (param $i i32) (result i32)
40 (i32.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
41 )
42 (func (export "16u_good2") (param $i i32) (result i32)
43 (i32.load16_u align=1 (local.get $i)) ;; 25185 'ab'
44 )
45 (func (export "16u_good3") (param $i i32) (result i32)
46 (i32.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
47 )
48 (func (export "16u_good4") (param $i i32) (result i32)
49 (i32.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
50 )
51 (func (export "16u_good5") (param $i i32) (result i32)
52 (i32.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
53 )
54
55 (func (export "16s_good1") (param $i i32) (result i32)
56 (i32.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
57 )
58 (func (export "16s_good2") (param $i i32) (result i32)
59 (i32.load16_s align=1 (local.get $i)) ;; 25185 'ab'
60 )
61 (func (export "16s_good3") (param $i i32) (result i32)
62 (i32.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
63 )
64 (func (export "16s_good4") (param $i i32) (result i32)
65 (i32.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
66 )
67 (func (export "16s_good5") (param $i i32) (result i32)
68 (i32.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
69 )
70
71 (func (export "32_good1") (param $i i32) (result i32)
72 (i32.load offset=0 (local.get $i)) ;; 1684234849 'abcd'
73 )
74 (func (export "32_good2") (param $i i32) (result i32)
75 (i32.load align=1 (local.get $i)) ;; 1684234849 'abcd'
76 )
77 (func (export "32_good3") (param $i i32) (result i32)
78 (i32.load offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
79 )
80 (func (export "32_good4") (param $i i32) (result i32)
81 (i32.load offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
82 )
83 (func (export "32_good5") (param $i i32) (result i32)
84 (i32.load offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
85 )
86
87 (func (export "8u_bad") (param $i i32)
88 (drop (i32.load8_u offset=4294967295 (local.get $i)))
89 )
90 (func (export "8s_bad") (param $i i32)
91 (drop (i32.load8_s offset=4294967295 (local.get $i)))
92 )
93 (func (export "16u_bad") (param $i i32)
94 (drop (i32.load16_u offset=4294967295 (local.get $i)))
95 )
96 (func (export "16s_bad") (param $i i32)
97 (drop (i32.load16_s offset=4294967295 (local.get $i)))
98 )
99 (func (export "32_bad") (param $i i32)
100 (drop (i32.load offset=4294967295 (local.get $i)))
101 )
102)
103
104(assert_return (invoke "8u_good1" (i32.const 0)) (i32.const 97))
105(assert_return (invoke "8u_good2" (i32.const 0)) (i32.const 97))
106(assert_return (invoke "8u_good3" (i32.const 0)) (i32.const 98))
107(assert_return (invoke "8u_good4" (i32.const 0)) (i32.const 99))
108(assert_return (invoke "8u_good5" (i32.const 0)) (i32.const 122))
109
110(assert_return (invoke "8s_good1" (i32.const 0)) (i32.const 97))
111(assert_return (invoke "8s_good2" (i32.const 0)) (i32.const 97))
112(assert_return (invoke "8s_good3" (i32.const 0)) (i32.const 98))
113(assert_return (invoke "8s_good4" (i32.const 0)) (i32.const 99))
114(assert_return (invoke "8s_good5" (i32.const 0)) (i32.const 122))
115
116(assert_return (invoke "16u_good1" (i32.const 0)) (i32.const 25185))
117(assert_return (invoke "16u_good2" (i32.const 0)) (i32.const 25185))
118(assert_return (invoke "16u_good3" (i32.const 0)) (i32.const 25442))
119(assert_return (invoke "16u_good4" (i32.const 0)) (i32.const 25699))
120(assert_return (invoke "16u_good5" (i32.const 0)) (i32.const 122))
121
122(assert_return (invoke "16s_good1" (i32.const 0)) (i32.const 25185))
123(assert_return (invoke "16s_good2" (i32.const 0)) (i32.const 25185))
124(assert_return (invoke "16s_good3" (i32.const 0)) (i32.const 25442))
125(assert_return (invoke "16s_good4" (i32.const 0)) (i32.const 25699))
126(assert_return (invoke "16s_good5" (i32.const 0)) (i32.const 122))
127
128(assert_return (invoke "32_good1" (i32.const 0)) (i32.const 1684234849))
129(assert_return (invoke "32_good2" (i32.const 0)) (i32.const 1684234849))
130(assert_return (invoke "32_good3" (i32.const 0)) (i32.const 1701077858))
131(assert_return (invoke "32_good4" (i32.const 0)) (i32.const 1717920867))
132(assert_return (invoke "32_good5" (i32.const 0)) (i32.const 122))
133
134(assert_return (invoke "8u_good1" (i32.const 65507)) (i32.const 0))
135(assert_return (invoke "8u_good2" (i32.const 65507)) (i32.const 0))
136(assert_return (invoke "8u_good3" (i32.const 65507)) (i32.const 0))
137(assert_return (invoke "8u_good4" (i32.const 65507)) (i32.const 0))
138(assert_return (invoke "8u_good5" (i32.const 65507)) (i32.const 0))
139
140(assert_return (invoke "8s_good1" (i32.const 65507)) (i32.const 0))
141(assert_return (invoke "8s_good2" (i32.const 65507)) (i32.const 0))
142(assert_return (invoke "8s_good3" (i32.const 65507)) (i32.const 0))
143(assert_return (invoke "8s_good4" (i32.const 65507)) (i32.const 0))
144(assert_return (invoke "8s_good5" (i32.const 65507)) (i32.const 0))
145
146(assert_return (invoke "16u_good1" (i32.const 65507)) (i32.const 0))
147(assert_return (invoke "16u_good2" (i32.const 65507)) (i32.const 0))
148(assert_return (invoke "16u_good3" (i32.const 65507)) (i32.const 0))
149(assert_return (invoke "16u_good4" (i32.const 65507)) (i32.const 0))
150(assert_return (invoke "16u_good5" (i32.const 65507)) (i32.const 0))
151
152(assert_return (invoke "16s_good1" (i32.const 65507)) (i32.const 0))
153(assert_return (invoke "16s_good2" (i32.const 65507)) (i32.const 0))
154(assert_return (invoke "16s_good3" (i32.const 65507)) (i32.const 0))
155(assert_return (invoke "16s_good4" (i32.const 65507)) (i32.const 0))
156(assert_return (invoke "16s_good5" (i32.const 65507)) (i32.const 0))
157
158(assert_return (invoke "32_good1" (i32.const 65507)) (i32.const 0))
159(assert_return (invoke "32_good2" (i32.const 65507)) (i32.const 0))
160(assert_return (invoke "32_good3" (i32.const 65507)) (i32.const 0))
161(assert_return (invoke "32_good4" (i32.const 65507)) (i32.const 0))
162(assert_return (invoke "32_good5" (i32.const 65507)) (i32.const 0))
163
164(assert_return (invoke "8u_good1" (i32.const 65508)) (i32.const 0))
165(assert_return (invoke "8u_good2" (i32.const 65508)) (i32.const 0))
166(assert_return (invoke "8u_good3" (i32.const 65508)) (i32.const 0))
167(assert_return (invoke "8u_good4" (i32.const 65508)) (i32.const 0))
168(assert_return (invoke "8u_good5" (i32.const 65508)) (i32.const 0))
169
170(assert_return (invoke "8s_good1" (i32.const 65508)) (i32.const 0))
171(assert_return (invoke "8s_good2" (i32.const 65508)) (i32.const 0))
172(assert_return (invoke "8s_good3" (i32.const 65508)) (i32.const 0))
173(assert_return (invoke "8s_good4" (i32.const 65508)) (i32.const 0))
174(assert_return (invoke "8s_good5" (i32.const 65508)) (i32.const 0))
175
176(assert_return (invoke "16u_good1" (i32.const 65508)) (i32.const 0))
177(assert_return (invoke "16u_good2" (i32.const 65508)) (i32.const 0))
178(assert_return (invoke "16u_good3" (i32.const 65508)) (i32.const 0))
179(assert_return (invoke "16u_good4" (i32.const 65508)) (i32.const 0))
180(assert_return (invoke "16u_good5" (i32.const 65508)) (i32.const 0))
181
182(assert_return (invoke "16s_good1" (i32.const 65508)) (i32.const 0))
183(assert_return (invoke "16s_good2" (i32.const 65508)) (i32.const 0))
184(assert_return (invoke "16s_good3" (i32.const 65508)) (i32.const 0))
185(assert_return (invoke "16s_good4" (i32.const 65508)) (i32.const 0))
186(assert_return (invoke "16s_good5" (i32.const 65508)) (i32.const 0))
187
188(assert_return (invoke "32_good1" (i32.const 65508)) (i32.const 0))
189(assert_return (invoke "32_good2" (i32.const 65508)) (i32.const 0))
190(assert_return (invoke "32_good3" (i32.const 65508)) (i32.const 0))
191(assert_return (invoke "32_good4" (i32.const 65508)) (i32.const 0))
192(assert_trap (invoke "32_good5" (i32.const 65508)) "out of bounds memory access")
193
194(assert_trap (invoke "8u_good3" (i32.const -1)) "out of bounds memory access")
195(assert_trap (invoke "8s_good3" (i32.const -1)) "out of bounds memory access")
196(assert_trap (invoke "16u_good3" (i32.const -1)) "out of bounds memory access")
197(assert_trap (invoke "16s_good3" (i32.const -1)) "out of bounds memory access")
198(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
199(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
200
201(assert_trap (invoke "8u_bad" (i32.const 0)) "out of bounds memory access")
202(assert_trap (invoke "8s_bad" (i32.const 0)) "out of bounds memory access")
203(assert_trap (invoke "16u_bad" (i32.const 0)) "out of bounds memory access")
204(assert_trap (invoke "16s_bad" (i32.const 0)) "out of bounds memory access")
205(assert_trap (invoke "32_bad" (i32.const 0)) "out of bounds memory access")
206
207(assert_trap (invoke "8u_bad" (i32.const 1)) "out of bounds memory access")
208(assert_trap (invoke "8s_bad" (i32.const 1)) "out of bounds memory access")
209(assert_trap (invoke "16u_bad" (i32.const 1)) "out of bounds memory access")
210(assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access")
211(assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access")
212
213(assert_malformed
214 (module quote
215 "(memory 1)"
216 "(func (drop (i32.load offset=4294967296 (i32.const 0))))"
217 )
218 "i32 constant"
219)
220
221;; Load i64 data with different offset/align arguments
222
223(module
224 (memory 1)
225 (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
226
227 (func (export "8u_good1") (param $i i32) (result i64)
228 (i64.load8_u offset=0 (local.get $i)) ;; 97 'a'
229 )
230 (func (export "8u_good2") (param $i i32) (result i64)
231 (i64.load8_u align=1 (local.get $i)) ;; 97 'a'
232 )
233 (func (export "8u_good3") (param $i i32) (result i64)
234 (i64.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
235 )
236 (func (export "8u_good4") (param $i i32) (result i64)
237 (i64.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
238 )
239 (func (export "8u_good5") (param $i i32) (result i64)
240 (i64.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
241 )
242
243 (func (export "8s_good1") (param $i i32) (result i64)
244 (i64.load8_s offset=0 (local.get $i)) ;; 97 'a'
245 )
246 (func (export "8s_good2") (param $i i32) (result i64)
247 (i64.load8_s align=1 (local.get $i)) ;; 97 'a'
248 )
249 (func (export "8s_good3") (param $i i32) (result i64)
250 (i64.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
251 )
252 (func (export "8s_good4") (param $i i32) (result i64)
253 (i64.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
254 )
255 (func (export "8s_good5") (param $i i32) (result i64)
256 (i64.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
257 )
258
259 (func (export "16u_good1") (param $i i32) (result i64)
260 (i64.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
261 )
262 (func (export "16u_good2") (param $i i32) (result i64)
263 (i64.load16_u align=1 (local.get $i)) ;; 25185 'ab'
264 )
265 (func (export "16u_good3") (param $i i32) (result i64)
266 (i64.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
267 )
268 (func (export "16u_good4") (param $i i32) (result i64)
269 (i64.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
270 )
271 (func (export "16u_good5") (param $i i32) (result i64)
272 (i64.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
273 )
274
275 (func (export "16s_good1") (param $i i32) (result i64)
276 (i64.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
277 )
278 (func (export "16s_good2") (param $i i32) (result i64)
279 (i64.load16_s align=1 (local.get $i)) ;; 25185 'ab'
280 )
281 (func (export "16s_good3") (param $i i32) (result i64)
282 (i64.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
283 )
284 (func (export "16s_good4") (param $i i32) (result i64)
285 (i64.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
286 )
287 (func (export "16s_good5") (param $i i32) (result i64)
288 (i64.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
289 )
290
291 (func (export "32u_good1") (param $i i32) (result i64)
292 (i64.load32_u offset=0 (local.get $i)) ;; 1684234849 'abcd'
293 )
294 (func (export "32u_good2") (param $i i32) (result i64)
295 (i64.load32_u align=1 (local.get $i)) ;; 1684234849 'abcd'
296 )
297 (func (export "32u_good3") (param $i i32) (result i64)
298 (i64.load32_u offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
299 )
300 (func (export "32u_good4") (param $i i32) (result i64)
301 (i64.load32_u offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
302 )
303 (func (export "32u_good5") (param $i i32) (result i64)
304 (i64.load32_u offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
305 )
306
307 (func (export "32s_good1") (param $i i32) (result i64)
308 (i64.load32_s offset=0 (local.get $i)) ;; 1684234849 'abcd'
309 )
310 (func (export "32s_good2") (param $i i32) (result i64)
311 (i64.load32_s align=1 (local.get $i)) ;; 1684234849 'abcd'
312 )
313 (func (export "32s_good3") (param $i i32) (result i64)
314 (i64.load32_s offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
315 )
316 (func (export "32s_good4") (param $i i32) (result i64)
317 (i64.load32_s offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
318 )
319 (func (export "32s_good5") (param $i i32) (result i64)
320 (i64.load32_s offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
321 )
322
323 (func (export "64_good1") (param $i i32) (result i64)
324 (i64.load offset=0 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
325 )
326 (func (export "64_good2") (param $i i32) (result i64)
327 (i64.load align=1 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
328 )
329 (func (export "64_good3") (param $i i32) (result i64)
330 (i64.load offset=1 align=1 (local.get $i)) ;; 0x6968676665646362 'bcdefghi'
331 )
332 (func (export "64_good4") (param $i i32) (result i64)
333 (i64.load offset=2 align=2 (local.get $i)) ;; 0x6a69686766656463 'cdefghij'
334 )
335 (func (export "64_good5") (param $i i32) (result i64)
336 (i64.load offset=25 align=8 (local.get $i)) ;; 122 'z\0\0\0\0\0\0\0'
337 )
338
339 (func (export "8u_bad") (param $i i32)
340 (drop (i64.load8_u offset=4294967295 (local.get $i)))
341 )
342 (func (export "8s_bad") (param $i i32)
343 (drop (i64.load8_s offset=4294967295 (local.get $i)))
344 )
345 (func (export "16u_bad") (param $i i32)
346 (drop (i64.load16_u offset=4294967295 (local.get $i)))
347 )
348 (func (export "16s_bad") (param $i i32)
349 (drop (i64.load16_s offset=4294967295 (local.get $i)))
350 )
351 (func (export "32u_bad") (param $i i32)
352 (drop (i64.load32_u offset=4294967295 (local.get $i)))
353 )
354 (func (export "32s_bad") (param $i i32)
355 (drop (i64.load32_s offset=4294967295 (local.get $i)))
356 )
357 (func (export "64_bad") (param $i i32)
358 (drop (i64.load offset=4294967295 (local.get $i)))
359 )
360)
361
362(assert_return (invoke "8u_good1" (i32.const 0)) (i64.const 97))
363(assert_return (invoke "8u_good2" (i32.const 0)) (i64.const 97))
364(assert_return (invoke "8u_good3" (i32.const 0)) (i64.const 98))
365(assert_return (invoke "8u_good4" (i32.const 0)) (i64.const 99))
366(assert_return (invoke "8u_good5" (i32.const 0)) (i64.const 122))
367
368(assert_return (invoke "8s_good1" (i32.const 0)) (i64.const 97))
369(assert_return (invoke "8s_good2" (i32.const 0)) (i64.const 97))
370(assert_return (invoke "8s_good3" (i32.const 0)) (i64.const 98))
371(assert_return (invoke "8s_good4" (i32.const 0)) (i64.const 99))
372(assert_return (invoke "8s_good5" (i32.const 0)) (i64.const 122))
373
374(assert_return (invoke "16u_good1" (i32.const 0)) (i64.const 25185))
375(assert_return (invoke "16u_good2" (i32.const 0)) (i64.const 25185))
376(assert_return (invoke "16u_good3" (i32.const 0)) (i64.const 25442))
377(assert_return (invoke "16u_good4" (i32.const 0)) (i64.const 25699))
378(assert_return (invoke "16u_good5" (i32.const 0)) (i64.const 122))
379
380(assert_return (invoke "16s_good1" (i32.const 0)) (i64.const 25185))
381(assert_return (invoke "16s_good2" (i32.const 0)) (i64.const 25185))
382(assert_return (invoke "16s_good3" (i32.const 0)) (i64.const 25442))
383(assert_return (invoke "16s_good4" (i32.const 0)) (i64.const 25699))
384(assert_return (invoke "16s_good5" (i32.const 0)) (i64.const 122))
385
386(assert_return (invoke "32u_good1" (i32.const 0)) (i64.const 1684234849))
387(assert_return (invoke "32u_good2" (i32.const 0)) (i64.const 1684234849))
388(assert_return (invoke "32u_good3" (i32.const 0)) (i64.const 1701077858))
389(assert_return (invoke "32u_good4" (i32.const 0)) (i64.const 1717920867))
390(assert_return (invoke "32u_good5" (i32.const 0)) (i64.const 122))
391
392(assert_return (invoke "32s_good1" (i32.const 0)) (i64.const 1684234849))
393(assert_return (invoke "32s_good2" (i32.const 0)) (i64.const 1684234849))
394(assert_return (invoke "32s_good3" (i32.const 0)) (i64.const 1701077858))
395(assert_return (invoke "32s_good4" (i32.const 0)) (i64.const 1717920867))
396(assert_return (invoke "32s_good5" (i32.const 0)) (i64.const 122))
397
398(assert_return (invoke "64_good1" (i32.const 0)) (i64.const 0x6867666564636261))
399(assert_return (invoke "64_good2" (i32.const 0)) (i64.const 0x6867666564636261))
400(assert_return (invoke "64_good3" (i32.const 0)) (i64.const 0x6968676665646362))
401(assert_return (invoke "64_good4" (i32.const 0)) (i64.const 0x6a69686766656463))
402(assert_return (invoke "64_good5" (i32.const 0)) (i64.const 122))
403
404(assert_return (invoke "8u_good1" (i32.const 65503)) (i64.const 0))
405(assert_return (invoke "8u_good2" (i32.const 65503)) (i64.const 0))
406(assert_return (invoke "8u_good3" (i32.const 65503)) (i64.const 0))
407(assert_return (invoke "8u_good4" (i32.const 65503)) (i64.const 0))
408(assert_return (invoke "8u_good5" (i32.const 65503)) (i64.const 0))
409
410(assert_return (invoke "8s_good1" (i32.const 65503)) (i64.const 0))
411(assert_return (invoke "8s_good2" (i32.const 65503)) (i64.const 0))
412(assert_return (invoke "8s_good3" (i32.const 65503)) (i64.const 0))
413(assert_return (invoke "8s_good4" (i32.const 65503)) (i64.const 0))
414(assert_return (invoke "8s_good5" (i32.const 65503)) (i64.const 0))
415
416(assert_return (invoke "16u_good1" (i32.const 65503)) (i64.const 0))
417(assert_return (invoke "16u_good2" (i32.const 65503)) (i64.const 0))
418(assert_return (invoke "16u_good3" (i32.const 65503)) (i64.const 0))
419(assert_return (invoke "16u_good4" (i32.const 65503)) (i64.const 0))
420(assert_return (invoke "16u_good5" (i32.const 65503)) (i64.const 0))
421
422(assert_return (invoke "16s_good1" (i32.const 65503)) (i64.const 0))
423(assert_return (invoke "16s_good2" (i32.const 65503)) (i64.const 0))
424(assert_return (invoke "16s_good3" (i32.const 65503)) (i64.const 0))
425(assert_return (invoke "16s_good4" (i32.const 65503)) (i64.const 0))
426(assert_return (invoke "16s_good5" (i32.const 65503)) (i64.const 0))
427
428(assert_return (invoke "32u_good1" (i32.const 65503)) (i64.const 0))
429(assert_return (invoke "32u_good2" (i32.const 65503)) (i64.const 0))
430(assert_return (invoke "32u_good3" (i32.const 65503)) (i64.const 0))
431(assert_return (invoke "32u_good4" (i32.const 65503)) (i64.const 0))
432(assert_return (invoke "32u_good5" (i32.const 65503)) (i64.const 0))
433
434(assert_return (invoke "32s_good1" (i32.const 65503)) (i64.const 0))
435(assert_return (invoke "32s_good2" (i32.const 65503)) (i64.const 0))
436(assert_return (invoke "32s_good3" (i32.const 65503)) (i64.const 0))
437(assert_return (invoke "32s_good4" (i32.const 65503)) (i64.const 0))
438(assert_return (invoke "32s_good5" (i32.const 65503)) (i64.const 0))
439
440(assert_return (invoke "64_good1" (i32.const 65503)) (i64.const 0))
441(assert_return (invoke "64_good2" (i32.const 65503)) (i64.const 0))
442(assert_return (invoke "64_good3" (i32.const 65503)) (i64.const 0))
443(assert_return (invoke "64_good4" (i32.const 65503)) (i64.const 0))
444(assert_return (invoke "64_good5" (i32.const 65503)) (i64.const 0))
445
446(assert_return (invoke "8u_good1" (i32.const 65504)) (i64.const 0))
447(assert_return (invoke "8u_good2" (i32.const 65504)) (i64.const 0))
448(assert_return (invoke "8u_good3" (i32.const 65504)) (i64.const 0))
449(assert_return (invoke "8u_good4" (i32.const 65504)) (i64.const 0))
450(assert_return (invoke "8u_good5" (i32.const 65504)) (i64.const 0))
451
452(assert_return (invoke "8s_good1" (i32.const 65504)) (i64.const 0))
453(assert_return (invoke "8s_good2" (i32.const 65504)) (i64.const 0))
454(assert_return (invoke "8s_good3" (i32.const 65504)) (i64.const 0))
455(assert_return (invoke "8s_good4" (i32.const 65504)) (i64.const 0))
456(assert_return (invoke "8s_good5" (i32.const 65504)) (i64.const 0))
457
458(assert_return (invoke "16u_good1" (i32.const 65504)) (i64.const 0))
459(assert_return (invoke "16u_good2" (i32.const 65504)) (i64.const 0))
460(assert_return (invoke "16u_good3" (i32.const 65504)) (i64.const 0))
461(assert_return (invoke "16u_good4" (i32.const 65504)) (i64.const 0))
462(assert_return (invoke "16u_good5" (i32.const 65504)) (i64.const 0))
463
464(assert_return (invoke "16s_good1" (i32.const 65504)) (i64.const 0))
465(assert_return (invoke "16s_good2" (i32.const 65504)) (i64.const 0))
466(assert_return (invoke "16s_good3" (i32.const 65504)) (i64.const 0))
467(assert_return (invoke "16s_good4" (i32.const 65504)) (i64.const 0))
468(assert_return (invoke "16s_good5" (i32.const 65504)) (i64.const 0))
469
470(assert_return (invoke "32u_good1" (i32.const 65504)) (i64.const 0))
471(assert_return (invoke "32u_good2" (i32.const 65504)) (i64.const 0))
472(assert_return (invoke "32u_good3" (i32.const 65504)) (i64.const 0))
473(assert_return (invoke "32u_good4" (i32.const 65504)) (i64.const 0))
474(assert_return (invoke "32u_good5" (i32.const 65504)) (i64.const 0))
475
476(assert_return (invoke "32s_good1" (i32.const 65504)) (i64.const 0))
477(assert_return (invoke "32s_good2" (i32.const 65504)) (i64.const 0))
478(assert_return (invoke "32s_good3" (i32.const 65504)) (i64.const 0))
479(assert_return (invoke "32s_good4" (i32.const 65504)) (i64.const 0))
480(assert_return (invoke "32s_good5" (i32.const 65504)) (i64.const 0))
481
482(assert_return (invoke "64_good1" (i32.const 65504)) (i64.const 0))
483(assert_return (invoke "64_good2" (i32.const 65504)) (i64.const 0))
484(assert_return (invoke "64_good3" (i32.const 65504)) (i64.const 0))
485(assert_return (invoke "64_good4" (i32.const 65504)) (i64.const 0))
486(assert_trap (invoke "64_good5" (i32.const 65504)) "out of bounds memory access")
487
488(assert_trap (invoke "8u_good3" (i32.const -1)) "out of bounds memory access")
489(assert_trap (invoke "8s_good3" (i32.const -1)) "out of bounds memory access")
490(assert_trap (invoke "16u_good3" (i32.const -1)) "out of bounds memory access")
491(assert_trap (invoke "16s_good3" (i32.const -1)) "out of bounds memory access")
492(assert_trap (invoke "32u_good3" (i32.const -1)) "out of bounds memory access")
493(assert_trap (invoke "32s_good3" (i32.const -1)) "out of bounds memory access")
494(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
495
496(assert_trap (invoke "8u_bad" (i32.const 0)) "out of bounds memory access")
497(assert_trap (invoke "8s_bad" (i32.const 0)) "out of bounds memory access")
498(assert_trap (invoke "16u_bad" (i32.const 0)) "out of bounds memory access")
499(assert_trap (invoke "16s_bad" (i32.const 0)) "out of bounds memory access")
500(assert_trap (invoke "32u_bad" (i32.const 0)) "out of bounds memory access")
501(assert_trap (invoke "32s_bad" (i32.const 0)) "out of bounds memory access")
502(assert_trap (invoke "64_bad" (i32.const 0)) "out of bounds memory access")
503
504(assert_trap (invoke "8u_bad" (i32.const 1)) "out of bounds memory access")
505(assert_trap (invoke "8s_bad" (i32.const 1)) "out of bounds memory access")
506(assert_trap (invoke "16u_bad" (i32.const 1)) "out of bounds memory access")
507(assert_trap (invoke "16s_bad" (i32.const 1)) "out of bounds memory access")
508(assert_trap (invoke "32u_bad" (i32.const 0)) "out of bounds memory access")
509(assert_trap (invoke "32s_bad" (i32.const 0)) "out of bounds memory access")
510(assert_trap (invoke "64_bad" (i32.const 1)) "out of bounds memory access")
511
512;; Load f32 data with different offset/align arguments
513
514(module
515 (memory 1)
516 (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f")
517
518 (func (export "32_good1") (param $i i32) (result f32)
519 (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00'
520 )
521 (func (export "32_good2") (param $i i32) (result f32)
522 (f32.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00'
523 )
524 (func (export "32_good3") (param $i i32) (result f32)
525 (f32.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00'
526 )
527 (func (export "32_good4") (param $i i32) (result f32)
528 (f32.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00'
529 )
530 (func (export "32_good5") (param $i i32) (result f32)
531 (f32.load offset=8 align=4 (local.get $i)) ;; nan:0x500001 '\01\00\d0\7f'
532 )
533 (func (export "32_bad") (param $i i32)
534 (drop (f32.load offset=4294967295 (local.get $i)))
535 )
536)
537
538(assert_return (invoke "32_good1" (i32.const 0)) (f32.const 0.0))
539(assert_return (invoke "32_good2" (i32.const 0)) (f32.const 0.0))
540(assert_return (invoke "32_good3" (i32.const 0)) (f32.const 0.0))
541(assert_return (invoke "32_good4" (i32.const 0)) (f32.const 0.0))
542(assert_return (invoke "32_good5" (i32.const 0)) (f32.const nan:0x500001))
543
544(assert_return (invoke "32_good1" (i32.const 65524)) (f32.const 0.0))
545(assert_return (invoke "32_good2" (i32.const 65524)) (f32.const 0.0))
546(assert_return (invoke "32_good3" (i32.const 65524)) (f32.const 0.0))
547(assert_return (invoke "32_good4" (i32.const 65524)) (f32.const 0.0))
548(assert_return (invoke "32_good5" (i32.const 65524)) (f32.const 0.0))
549
550(assert_return (invoke "32_good1" (i32.const 65525)) (f32.const 0.0))
551(assert_return (invoke "32_good2" (i32.const 65525)) (f32.const 0.0))
552(assert_return (invoke "32_good3" (i32.const 65525)) (f32.const 0.0))
553(assert_return (invoke "32_good4" (i32.const 65525)) (f32.const 0.0))
554(assert_trap (invoke "32_good5" (i32.const 65525)) "out of bounds memory access")
555
556(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
557(assert_trap (invoke "32_good3" (i32.const -1)) "out of bounds memory access")
558
559(assert_trap (invoke "32_bad" (i32.const 0)) "out of bounds memory access")
560(assert_trap (invoke "32_bad" (i32.const 1)) "out of bounds memory access")
561
562;; Load f64 data with different offset/align arguments
563
564(module
565 (memory 1)
566 (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")
567
568 (func (export "64_good1") (param $i i32) (result f64)
569 (f64.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
570 )
571 (func (export "64_good2") (param $i i32) (result f64)
572 (f64.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
573 )
574 (func (export "64_good3") (param $i i32) (result f64)
575 (f64.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
576 )
577 (func (export "64_good4") (param $i i32) (result f64)
578 (f64.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
579 )
580 (func (export "64_good5") (param $i i32) (result f64)
581 (f64.load offset=18 align=8 (local.get $i)) ;; nan:0xc000000000001 '\01\00\00\00\00\00\fc\7f'
582 )
583 (func (export "64_bad") (param $i i32)
584 (drop (f64.load offset=4294967295 (local.get $i)))
585 )
586)
587
588(assert_return (invoke "64_good1" (i32.const 0)) (f64.const 0.0))
589(assert_return (invoke "64_good2" (i32.const 0)) (f64.const 0.0))
590(assert_return (invoke "64_good3" (i32.const 0)) (f64.const 0.0))
591(assert_return (invoke "64_good4" (i32.const 0)) (f64.const 0.0))
592(assert_return (invoke "64_good5" (i32.const 0)) (f64.const nan:0xc000000000001))
593
594(assert_return (invoke "64_good1" (i32.const 65510)) (f64.const 0.0))
595(assert_return (invoke "64_good2" (i32.const 65510)) (f64.const 0.0))
596(assert_return (invoke "64_good3" (i32.const 65510)) (f64.const 0.0))
597(assert_return (invoke "64_good4" (i32.const 65510)) (f64.const 0.0))
598(assert_return (invoke "64_good5" (i32.const 65510)) (f64.const 0.0))
599
600(assert_return (invoke "64_good1" (i32.const 65511)) (f64.const 0.0))
601(assert_return (invoke "64_good2" (i32.const 65511)) (f64.const 0.0))
602(assert_return (invoke "64_good3" (i32.const 65511)) (f64.const 0.0))
603(assert_return (invoke "64_good4" (i32.const 65511)) (f64.const 0.0))
604(assert_trap (invoke "64_good5" (i32.const 65511)) "out of bounds memory access")
605
606(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
607(assert_trap (invoke "64_good3" (i32.const -1)) "out of bounds memory access")
608
609(assert_trap (invoke "64_bad" (i32.const 0)) "out of bounds memory access")
610(assert_trap (invoke "64_bad" (i32.const 1)) "out of bounds memory access")
View as plain text