1 ;; Load i32 data with different offset/align arguments
5 (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz")
7 (func (export "8u_good1") (param $i i64) (result i32)
8 (i32.load8_u offset=0 (local.get $i)) ;; 97 'a'
10 (func (export "8u_good2") (param $i i64) (result i32)
11 (i32.load8_u align=1 (local.get $i)) ;; 97 'a'
13 (func (export "8u_good3") (param $i i64) (result i32)
14 (i32.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
16 (func (export "8u_good4") (param $i i64) (result i32)
17 (i32.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
19 (func (export "8u_good5") (param $i i64) (result i32)
20 (i32.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
23 (func (export "8s_good1") (param $i i64) (result i32)
24 (i32.load8_s offset=0 (local.get $i)) ;; 97 'a'
26 (func (export "8s_good2") (param $i i64) (result i32)
27 (i32.load8_s align=1 (local.get $i)) ;; 97 'a'
29 (func (export "8s_good3") (param $i i64) (result i32)
30 (i32.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
32 (func (export "8s_good4") (param $i i64) (result i32)
33 (i32.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
35 (func (export "8s_good5") (param $i i64) (result i32)
36 (i32.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
39 (func (export "16u_good1") (param $i i64) (result i32)
40 (i32.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
42 (func (export "16u_good2") (param $i i64) (result i32)
43 (i32.load16_u align=1 (local.get $i)) ;; 25185 'ab'
45 (func (export "16u_good3") (param $i i64) (result i32)
46 (i32.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
48 (func (export "16u_good4") (param $i i64) (result i32)
49 (i32.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
51 (func (export "16u_good5") (param $i i64) (result i32)
52 (i32.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
55 (func (export "16s_good1") (param $i i64) (result i32)
56 (i32.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
58 (func (export "16s_good2") (param $i i64) (result i32)
59 (i32.load16_s align=1 (local.get $i)) ;; 25185 'ab'
61 (func (export "16s_good3") (param $i i64) (result i32)
62 (i32.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
64 (func (export "16s_good4") (param $i i64) (result i32)
65 (i32.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
67 (func (export "16s_good5") (param $i i64) (result i32)
68 (i32.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
71 (func (export "32_good1") (param $i i64) (result i32)
72 (i32.load offset=0 (local.get $i)) ;; 1684234849 'abcd'
74 (func (export "32_good2") (param $i i64) (result i32)
75 (i32.load align=1 (local.get $i)) ;; 1684234849 'abcd'
77 (func (export "32_good3") (param $i i64) (result i32)
78 (i32.load offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
80 (func (export "32_good4") (param $i i64) (result i32)
81 (i32.load offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
83 (func (export "32_good5") (param $i i64) (result i32)
84 (i32.load offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
87 (func (export "8u_bad") (param $i i64)
88 (drop (i32.load8_u offset=4294967295 (local.get $i)))
90 (func (export "8s_bad") (param $i i64)
91 (drop (i32.load8_s offset=4294967295 (local.get $i)))
93 (func (export "16u_bad") (param $i i64)
94 (drop (i32.load16_u offset=4294967295 (local.get $i)))
96 (func (export "16s_bad") (param $i i64)
97 (drop (i32.load16_s offset=4294967295 (local.get $i)))
99 (func (export "32_bad") (param $i i64)
100 (drop (i32.load offset=4294967295 (local.get $i)))
104 (assert_return (invoke "8u_good1" (i64.const 0)) (i32.const 97))
105 (assert_return (invoke "8u_good2" (i64.const 0)) (i32.const 97))
106 (assert_return (invoke "8u_good3" (i64.const 0)) (i32.const 98))
107 (assert_return (invoke "8u_good4" (i64.const 0)) (i32.const 99))
108 (assert_return (invoke "8u_good5" (i64.const 0)) (i32.const 122))
110 (assert_return (invoke "8s_good1" (i64.const 0)) (i32.const 97))
111 (assert_return (invoke "8s_good2" (i64.const 0)) (i32.const 97))
112 (assert_return (invoke "8s_good3" (i64.const 0)) (i32.const 98))
113 (assert_return (invoke "8s_good4" (i64.const 0)) (i32.const 99))
114 (assert_return (invoke "8s_good5" (i64.const 0)) (i32.const 122))
116 (assert_return (invoke "16u_good1" (i64.const 0)) (i32.const 25185))
117 (assert_return (invoke "16u_good2" (i64.const 0)) (i32.const 25185))
118 (assert_return (invoke "16u_good3" (i64.const 0)) (i32.const 25442))
119 (assert_return (invoke "16u_good4" (i64.const 0)) (i32.const 25699))
120 (assert_return (invoke "16u_good5" (i64.const 0)) (i32.const 122))
122 (assert_return (invoke "16s_good1" (i64.const 0)) (i32.const 25185))
123 (assert_return (invoke "16s_good2" (i64.const 0)) (i32.const 25185))
124 (assert_return (invoke "16s_good3" (i64.const 0)) (i32.const 25442))
125 (assert_return (invoke "16s_good4" (i64.const 0)) (i32.const 25699))
126 (assert_return (invoke "16s_good5" (i64.const 0)) (i32.const 122))
128 (assert_return (invoke "32_good1" (i64.const 0)) (i32.const 1684234849))
129 (assert_return (invoke "32_good2" (i64.const 0)) (i32.const 1684234849))
130 (assert_return (invoke "32_good3" (i64.const 0)) (i32.const 1701077858))
131 (assert_return (invoke "32_good4" (i64.const 0)) (i32.const 1717920867))
132 (assert_return (invoke "32_good5" (i64.const 0)) (i32.const 122))
134 (assert_return (invoke "8u_good1" (i64.const 65507)) (i32.const 0))
135 (assert_return (invoke "8u_good2" (i64.const 65507)) (i32.const 0))
136 (assert_return (invoke "8u_good3" (i64.const 65507)) (i32.const 0))
137 (assert_return (invoke "8u_good4" (i64.const 65507)) (i32.const 0))
138 (assert_return (invoke "8u_good5" (i64.const 65507)) (i32.const 0))
140 (assert_return (invoke "8s_good1" (i64.const 65507)) (i32.const 0))
141 (assert_return (invoke "8s_good2" (i64.const 65507)) (i32.const 0))
142 (assert_return (invoke "8s_good3" (i64.const 65507)) (i32.const 0))
143 (assert_return (invoke "8s_good4" (i64.const 65507)) (i32.const 0))
144 (assert_return (invoke "8s_good5" (i64.const 65507)) (i32.const 0))
146 (assert_return (invoke "16u_good1" (i64.const 65507)) (i32.const 0))
147 (assert_return (invoke "16u_good2" (i64.const 65507)) (i32.const 0))
148 (assert_return (invoke "16u_good3" (i64.const 65507)) (i32.const 0))
149 (assert_return (invoke "16u_good4" (i64.const 65507)) (i32.const 0))
150 (assert_return (invoke "16u_good5" (i64.const 65507)) (i32.const 0))
152 (assert_return (invoke "16s_good1" (i64.const 65507)) (i32.const 0))
153 (assert_return (invoke "16s_good2" (i64.const 65507)) (i32.const 0))
154 (assert_return (invoke "16s_good3" (i64.const 65507)) (i32.const 0))
155 (assert_return (invoke "16s_good4" (i64.const 65507)) (i32.const 0))
156 (assert_return (invoke "16s_good5" (i64.const 65507)) (i32.const 0))
158 (assert_return (invoke "32_good1" (i64.const 65507)) (i32.const 0))
159 (assert_return (invoke "32_good2" (i64.const 65507)) (i32.const 0))
160 (assert_return (invoke "32_good3" (i64.const 65507)) (i32.const 0))
161 (assert_return (invoke "32_good4" (i64.const 65507)) (i32.const 0))
162 (assert_return (invoke "32_good5" (i64.const 65507)) (i32.const 0))
164 (assert_return (invoke "8u_good1" (i64.const 65508)) (i32.const 0))
165 (assert_return (invoke "8u_good2" (i64.const 65508)) (i32.const 0))
166 (assert_return (invoke "8u_good3" (i64.const 65508)) (i32.const 0))
167 (assert_return (invoke "8u_good4" (i64.const 65508)) (i32.const 0))
168 (assert_return (invoke "8u_good5" (i64.const 65508)) (i32.const 0))
170 (assert_return (invoke "8s_good1" (i64.const 65508)) (i32.const 0))
171 (assert_return (invoke "8s_good2" (i64.const 65508)) (i32.const 0))
172 (assert_return (invoke "8s_good3" (i64.const 65508)) (i32.const 0))
173 (assert_return (invoke "8s_good4" (i64.const 65508)) (i32.const 0))
174 (assert_return (invoke "8s_good5" (i64.const 65508)) (i32.const 0))
176 (assert_return (invoke "16u_good1" (i64.const 65508)) (i32.const 0))
177 (assert_return (invoke "16u_good2" (i64.const 65508)) (i32.const 0))
178 (assert_return (invoke "16u_good3" (i64.const 65508)) (i32.const 0))
179 (assert_return (invoke "16u_good4" (i64.const 65508)) (i32.const 0))
180 (assert_return (invoke "16u_good5" (i64.const 65508)) (i32.const 0))
182 (assert_return (invoke "16s_good1" (i64.const 65508)) (i32.const 0))
183 (assert_return (invoke "16s_good2" (i64.const 65508)) (i32.const 0))
184 (assert_return (invoke "16s_good3" (i64.const 65508)) (i32.const 0))
185 (assert_return (invoke "16s_good4" (i64.const 65508)) (i32.const 0))
186 (assert_return (invoke "16s_good5" (i64.const 65508)) (i32.const 0))
188 (assert_return (invoke "32_good1" (i64.const 65508)) (i32.const 0))
189 (assert_return (invoke "32_good2" (i64.const 65508)) (i32.const 0))
190 (assert_return (invoke "32_good3" (i64.const 65508)) (i32.const 0))
191 (assert_return (invoke "32_good4" (i64.const 65508)) (i32.const 0))
192 (assert_trap (invoke "32_good5" (i64.const 65508)) "out of bounds memory access")
194 (assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access")
195 (assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access")
196 (assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access")
197 (assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access")
198 (assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access")
200 (assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access")
201 (assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access")
202 (assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access")
203 (assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access")
204 (assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access")
207 ;; Load i64 data with different offset/align arguments
211 (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz")
213 (func (export "8u_good1") (param $i i64) (result i64)
214 (i64.load8_u offset=0 (local.get $i)) ;; 97 'a'
216 (func (export "8u_good2") (param $i i64) (result i64)
217 (i64.load8_u align=1 (local.get $i)) ;; 97 'a'
219 (func (export "8u_good3") (param $i i64) (result i64)
220 (i64.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
222 (func (export "8u_good4") (param $i i64) (result i64)
223 (i64.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
225 (func (export "8u_good5") (param $i i64) (result i64)
226 (i64.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
229 (func (export "8s_good1") (param $i i64) (result i64)
230 (i64.load8_s offset=0 (local.get $i)) ;; 97 'a'
232 (func (export "8s_good2") (param $i i64) (result i64)
233 (i64.load8_s align=1 (local.get $i)) ;; 97 'a'
235 (func (export "8s_good3") (param $i i64) (result i64)
236 (i64.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
238 (func (export "8s_good4") (param $i i64) (result i64)
239 (i64.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
241 (func (export "8s_good5") (param $i i64) (result i64)
242 (i64.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
245 (func (export "16u_good1") (param $i i64) (result i64)
246 (i64.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
248 (func (export "16u_good2") (param $i i64) (result i64)
249 (i64.load16_u align=1 (local.get $i)) ;; 25185 'ab'
251 (func (export "16u_good3") (param $i i64) (result i64)
252 (i64.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
254 (func (export "16u_good4") (param $i i64) (result i64)
255 (i64.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
257 (func (export "16u_good5") (param $i i64) (result i64)
258 (i64.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
261 (func (export "16s_good1") (param $i i64) (result i64)
262 (i64.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
264 (func (export "16s_good2") (param $i i64) (result i64)
265 (i64.load16_s align=1 (local.get $i)) ;; 25185 'ab'
267 (func (export "16s_good3") (param $i i64) (result i64)
268 (i64.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
270 (func (export "16s_good4") (param $i i64) (result i64)
271 (i64.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
273 (func (export "16s_good5") (param $i i64) (result i64)
274 (i64.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
277 (func (export "32u_good1") (param $i i64) (result i64)
278 (i64.load32_u offset=0 (local.get $i)) ;; 1684234849 'abcd'
280 (func (export "32u_good2") (param $i i64) (result i64)
281 (i64.load32_u align=1 (local.get $i)) ;; 1684234849 'abcd'
283 (func (export "32u_good3") (param $i i64) (result i64)
284 (i64.load32_u offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
286 (func (export "32u_good4") (param $i i64) (result i64)
287 (i64.load32_u offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
289 (func (export "32u_good5") (param $i i64) (result i64)
290 (i64.load32_u offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
293 (func (export "32s_good1") (param $i i64) (result i64)
294 (i64.load32_s offset=0 (local.get $i)) ;; 1684234849 'abcd'
296 (func (export "32s_good2") (param $i i64) (result i64)
297 (i64.load32_s align=1 (local.get $i)) ;; 1684234849 'abcd'
299 (func (export "32s_good3") (param $i i64) (result i64)
300 (i64.load32_s offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
302 (func (export "32s_good4") (param $i i64) (result i64)
303 (i64.load32_s offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
305 (func (export "32s_good5") (param $i i64) (result i64)
306 (i64.load32_s offset=25 align=4 (local.get $i)) ;; 122 'z\0\0\0'
309 (func (export "64_good1") (param $i i64) (result i64)
310 (i64.load offset=0 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
312 (func (export "64_good2") (param $i i64) (result i64)
313 (i64.load align=1 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
315 (func (export "64_good3") (param $i i64) (result i64)
316 (i64.load offset=1 align=1 (local.get $i)) ;; 0x6968676665646362 'bcdefghi'
318 (func (export "64_good4") (param $i i64) (result i64)
319 (i64.load offset=2 align=2 (local.get $i)) ;; 0x6a69686766656463 'cdefghij'
321 (func (export "64_good5") (param $i i64) (result i64)
322 (i64.load offset=25 align=8 (local.get $i)) ;; 122 'z\0\0\0\0\0\0\0'
325 (func (export "8u_bad") (param $i i64)
326 (drop (i64.load8_u offset=4294967295 (local.get $i)))
328 (func (export "8s_bad") (param $i i64)
329 (drop (i64.load8_s offset=4294967295 (local.get $i)))
331 (func (export "16u_bad") (param $i i64)
332 (drop (i64.load16_u offset=4294967295 (local.get $i)))
334 (func (export "16s_bad") (param $i i64)
335 (drop (i64.load16_s offset=4294967295 (local.get $i)))
337 (func (export "32u_bad") (param $i i64)
338 (drop (i64.load32_u offset=4294967295 (local.get $i)))
340 (func (export "32s_bad") (param $i i64)
341 (drop (i64.load32_s offset=4294967295 (local.get $i)))
343 (func (export "64_bad") (param $i i64)
344 (drop (i64.load offset=4294967295 (local.get $i)))
348 (assert_return (invoke "8u_good1" (i64.const 0)) (i64.const 97))
349 (assert_return (invoke "8u_good2" (i64.const 0)) (i64.const 97))
350 (assert_return (invoke "8u_good3" (i64.const 0)) (i64.const 98))
351 (assert_return (invoke "8u_good4" (i64.const 0)) (i64.const 99))
352 (assert_return (invoke "8u_good5" (i64.const 0)) (i64.const 122))
354 (assert_return (invoke "8s_good1" (i64.const 0)) (i64.const 97))
355 (assert_return (invoke "8s_good2" (i64.const 0)) (i64.const 97))
356 (assert_return (invoke "8s_good3" (i64.const 0)) (i64.const 98))
357 (assert_return (invoke "8s_good4" (i64.const 0)) (i64.const 99))
358 (assert_return (invoke "8s_good5" (i64.const 0)) (i64.const 122))
360 (assert_return (invoke "16u_good1" (i64.const 0)) (i64.const 25185))
361 (assert_return (invoke "16u_good2" (i64.const 0)) (i64.const 25185))
362 (assert_return (invoke "16u_good3" (i64.const 0)) (i64.const 25442))
363 (assert_return (invoke "16u_good4" (i64.const 0)) (i64.const 25699))
364 (assert_return (invoke "16u_good5" (i64.const 0)) (i64.const 122))
366 (assert_return (invoke "16s_good1" (i64.const 0)) (i64.const 25185))
367 (assert_return (invoke "16s_good2" (i64.const 0)) (i64.const 25185))
368 (assert_return (invoke "16s_good3" (i64.const 0)) (i64.const 25442))
369 (assert_return (invoke "16s_good4" (i64.const 0)) (i64.const 25699))
370 (assert_return (invoke "16s_good5" (i64.const 0)) (i64.const 122))
372 (assert_return (invoke "32u_good1" (i64.const 0)) (i64.const 1684234849))
373 (assert_return (invoke "32u_good2" (i64.const 0)) (i64.const 1684234849))
374 (assert_return (invoke "32u_good3" (i64.const 0)) (i64.const 1701077858))
375 (assert_return (invoke "32u_good4" (i64.const 0)) (i64.const 1717920867))
376 (assert_return (invoke "32u_good5" (i64.const 0)) (i64.const 122))
378 (assert_return (invoke "32s_good1" (i64.const 0)) (i64.const 1684234849))
379 (assert_return (invoke "32s_good2" (i64.const 0)) (i64.const 1684234849))
380 (assert_return (invoke "32s_good3" (i64.const 0)) (i64.const 1701077858))
381 (assert_return (invoke "32s_good4" (i64.const 0)) (i64.const 1717920867))
382 (assert_return (invoke "32s_good5" (i64.const 0)) (i64.const 122))
384 (assert_return (invoke "64_good1" (i64.const 0)) (i64.const 0x6867666564636261))
385 (assert_return (invoke "64_good2" (i64.const 0)) (i64.const 0x6867666564636261))
386 (assert_return (invoke "64_good3" (i64.const 0)) (i64.const 0x6968676665646362))
387 (assert_return (invoke "64_good4" (i64.const 0)) (i64.const 0x6a69686766656463))
388 (assert_return (invoke "64_good5" (i64.const 0)) (i64.const 122))
390 (assert_return (invoke "8u_good1" (i64.const 65503)) (i64.const 0))
391 (assert_return (invoke "8u_good2" (i64.const 65503)) (i64.const 0))
392 (assert_return (invoke "8u_good3" (i64.const 65503)) (i64.const 0))
393 (assert_return (invoke "8u_good4" (i64.const 65503)) (i64.const 0))
394 (assert_return (invoke "8u_good5" (i64.const 65503)) (i64.const 0))
396 (assert_return (invoke "8s_good1" (i64.const 65503)) (i64.const 0))
397 (assert_return (invoke "8s_good2" (i64.const 65503)) (i64.const 0))
398 (assert_return (invoke "8s_good3" (i64.const 65503)) (i64.const 0))
399 (assert_return (invoke "8s_good4" (i64.const 65503)) (i64.const 0))
400 (assert_return (invoke "8s_good5" (i64.const 65503)) (i64.const 0))
402 (assert_return (invoke "16u_good1" (i64.const 65503)) (i64.const 0))
403 (assert_return (invoke "16u_good2" (i64.const 65503)) (i64.const 0))
404 (assert_return (invoke "16u_good3" (i64.const 65503)) (i64.const 0))
405 (assert_return (invoke "16u_good4" (i64.const 65503)) (i64.const 0))
406 (assert_return (invoke "16u_good5" (i64.const 65503)) (i64.const 0))
408 (assert_return (invoke "16s_good1" (i64.const 65503)) (i64.const 0))
409 (assert_return (invoke "16s_good2" (i64.const 65503)) (i64.const 0))
410 (assert_return (invoke "16s_good3" (i64.const 65503)) (i64.const 0))
411 (assert_return (invoke "16s_good4" (i64.const 65503)) (i64.const 0))
412 (assert_return (invoke "16s_good5" (i64.const 65503)) (i64.const 0))
414 (assert_return (invoke "32u_good1" (i64.const 65503)) (i64.const 0))
415 (assert_return (invoke "32u_good2" (i64.const 65503)) (i64.const 0))
416 (assert_return (invoke "32u_good3" (i64.const 65503)) (i64.const 0))
417 (assert_return (invoke "32u_good4" (i64.const 65503)) (i64.const 0))
418 (assert_return (invoke "32u_good5" (i64.const 65503)) (i64.const 0))
420 (assert_return (invoke "32s_good1" (i64.const 65503)) (i64.const 0))
421 (assert_return (invoke "32s_good2" (i64.const 65503)) (i64.const 0))
422 (assert_return (invoke "32s_good3" (i64.const 65503)) (i64.const 0))
423 (assert_return (invoke "32s_good4" (i64.const 65503)) (i64.const 0))
424 (assert_return (invoke "32s_good5" (i64.const 65503)) (i64.const 0))
426 (assert_return (invoke "64_good1" (i64.const 65503)) (i64.const 0))
427 (assert_return (invoke "64_good2" (i64.const 65503)) (i64.const 0))
428 (assert_return (invoke "64_good3" (i64.const 65503)) (i64.const 0))
429 (assert_return (invoke "64_good4" (i64.const 65503)) (i64.const 0))
430 (assert_return (invoke "64_good5" (i64.const 65503)) (i64.const 0))
432 (assert_return (invoke "8u_good1" (i64.const 65504)) (i64.const 0))
433 (assert_return (invoke "8u_good2" (i64.const 65504)) (i64.const 0))
434 (assert_return (invoke "8u_good3" (i64.const 65504)) (i64.const 0))
435 (assert_return (invoke "8u_good4" (i64.const 65504)) (i64.const 0))
436 (assert_return (invoke "8u_good5" (i64.const 65504)) (i64.const 0))
438 (assert_return (invoke "8s_good1" (i64.const 65504)) (i64.const 0))
439 (assert_return (invoke "8s_good2" (i64.const 65504)) (i64.const 0))
440 (assert_return (invoke "8s_good3" (i64.const 65504)) (i64.const 0))
441 (assert_return (invoke "8s_good4" (i64.const 65504)) (i64.const 0))
442 (assert_return (invoke "8s_good5" (i64.const 65504)) (i64.const 0))
444 (assert_return (invoke "16u_good1" (i64.const 65504)) (i64.const 0))
445 (assert_return (invoke "16u_good2" (i64.const 65504)) (i64.const 0))
446 (assert_return (invoke "16u_good3" (i64.const 65504)) (i64.const 0))
447 (assert_return (invoke "16u_good4" (i64.const 65504)) (i64.const 0))
448 (assert_return (invoke "16u_good5" (i64.const 65504)) (i64.const 0))
450 (assert_return (invoke "16s_good1" (i64.const 65504)) (i64.const 0))
451 (assert_return (invoke "16s_good2" (i64.const 65504)) (i64.const 0))
452 (assert_return (invoke "16s_good3" (i64.const 65504)) (i64.const 0))
453 (assert_return (invoke "16s_good4" (i64.const 65504)) (i64.const 0))
454 (assert_return (invoke "16s_good5" (i64.const 65504)) (i64.const 0))
456 (assert_return (invoke "32u_good1" (i64.const 65504)) (i64.const 0))
457 (assert_return (invoke "32u_good2" (i64.const 65504)) (i64.const 0))
458 (assert_return (invoke "32u_good3" (i64.const 65504)) (i64.const 0))
459 (assert_return (invoke "32u_good4" (i64.const 65504)) (i64.const 0))
460 (assert_return (invoke "32u_good5" (i64.const 65504)) (i64.const 0))
462 (assert_return (invoke "32s_good1" (i64.const 65504)) (i64.const 0))
463 (assert_return (invoke "32s_good2" (i64.const 65504)) (i64.const 0))
464 (assert_return (invoke "32s_good3" (i64.const 65504)) (i64.const 0))
465 (assert_return (invoke "32s_good4" (i64.const 65504)) (i64.const 0))
466 (assert_return (invoke "32s_good5" (i64.const 65504)) (i64.const 0))
468 (assert_return (invoke "64_good1" (i64.const 65504)) (i64.const 0))
469 (assert_return (invoke "64_good2" (i64.const 65504)) (i64.const 0))
470 (assert_return (invoke "64_good3" (i64.const 65504)) (i64.const 0))
471 (assert_return (invoke "64_good4" (i64.const 65504)) (i64.const 0))
472 (assert_trap (invoke "64_good5" (i64.const 65504)) "out of bounds memory access")
474 (assert_trap (invoke "8u_bad" (i64.const 0)) "out of bounds memory access")
475 (assert_trap (invoke "8s_bad" (i64.const 0)) "out of bounds memory access")
476 (assert_trap (invoke "16u_bad" (i64.const 0)) "out of bounds memory access")
477 (assert_trap (invoke "16s_bad" (i64.const 0)) "out of bounds memory access")
478 (assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access")
479 (assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access")
480 (assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access")
482 (assert_trap (invoke "8u_bad" (i64.const 1)) "out of bounds memory access")
483 (assert_trap (invoke "8s_bad" (i64.const 1)) "out of bounds memory access")
484 (assert_trap (invoke "16u_bad" (i64.const 1)) "out of bounds memory access")
485 (assert_trap (invoke "16s_bad" (i64.const 1)) "out of bounds memory access")
486 (assert_trap (invoke "32u_bad" (i64.const 0)) "out of bounds memory access")
487 (assert_trap (invoke "32s_bad" (i64.const 0)) "out of bounds memory access")
488 (assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access")
490 ;; Load f32 data with different offset/align arguments
494 (data (i64.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f")
496 (func (export "32_good1") (param $i i64) (result f32)
497 (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00'
499 (func (export "32_good2") (param $i i64) (result f32)
500 (f32.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00'
502 (func (export "32_good3") (param $i i64) (result f32)
503 (f32.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00'
505 (func (export "32_good4") (param $i i64) (result f32)
506 (f32.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00'
508 (func (export "32_good5") (param $i i64) (result f32)
509 (f32.load offset=8 align=4 (local.get $i)) ;; nan:0x500001 '\01\00\d0\7f'
511 (func (export "32_bad") (param $i i64)
512 (drop (f32.load offset=4294967295 (local.get $i)))
516 (assert_return (invoke "32_good1" (i64.const 0)) (f32.const 0.0))
517 (assert_return (invoke "32_good2" (i64.const 0)) (f32.const 0.0))
518 (assert_return (invoke "32_good3" (i64.const 0)) (f32.const 0.0))
519 (assert_return (invoke "32_good4" (i64.const 0)) (f32.const 0.0))
520 (assert_return (invoke "32_good5" (i64.const 0)) (f32.const nan:0x500001))
522 (assert_return (invoke "32_good1" (i64.const 65524)) (f32.const 0.0))
523 (assert_return (invoke "32_good2" (i64.const 65524)) (f32.const 0.0))
524 (assert_return (invoke "32_good3" (i64.const 65524)) (f32.const 0.0))
525 (assert_return (invoke "32_good4" (i64.const 65524)) (f32.const 0.0))
526 (assert_return (invoke "32_good5" (i64.const 65524)) (f32.const 0.0))
528 (assert_return (invoke "32_good1" (i64.const 65525)) (f32.const 0.0))
529 (assert_return (invoke "32_good2" (i64.const 65525)) (f32.const 0.0))
530 (assert_return (invoke "32_good3" (i64.const 65525)) (f32.const 0.0))
531 (assert_return (invoke "32_good4" (i64.const 65525)) (f32.const 0.0))
532 (assert_trap (invoke "32_good5" (i64.const 65525)) "out of bounds memory access")
534 (assert_trap (invoke "32_bad" (i64.const 0)) "out of bounds memory access")
535 (assert_trap (invoke "32_bad" (i64.const 1)) "out of bounds memory access")
537 ;; Load f64 data with different offset/align arguments
541 (data (i64.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")
543 (func (export "64_good1") (param $i i64) (result f64)
544 (f64.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
546 (func (export "64_good2") (param $i i64) (result f64)
547 (f64.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
549 (func (export "64_good3") (param $i i64) (result f64)
550 (f64.load offset=1 align=1 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
552 (func (export "64_good4") (param $i i64) (result f64)
553 (f64.load offset=2 align=2 (local.get $i)) ;; 0.0 '\00\00\00\00\00\00\00\00'
555 (func (export "64_good5") (param $i i64) (result f64)
556 (f64.load offset=18 align=8 (local.get $i)) ;; nan:0xc000000000001 '\01\00\00\00\00\00\fc\7f'
558 (func (export "64_bad") (param $i i64)
559 (drop (f64.load offset=4294967295 (local.get $i)))
563 (assert_return (invoke "64_good1" (i64.const 0)) (f64.const 0.0))
564 (assert_return (invoke "64_good2" (i64.const 0)) (f64.const 0.0))
565 (assert_return (invoke "64_good3" (i64.const 0)) (f64.const 0.0))
566 (assert_return (invoke "64_good4" (i64.const 0)) (f64.const 0.0))
567 (assert_return (invoke "64_good5" (i64.const 0)) (f64.const nan:0xc000000000001))
569 (assert_return (invoke "64_good1" (i64.const 65510)) (f64.const 0.0))
570 (assert_return (invoke "64_good2" (i64.const 65510)) (f64.const 0.0))
571 (assert_return (invoke "64_good3" (i64.const 65510)) (f64.const 0.0))
572 (assert_return (invoke "64_good4" (i64.const 65510)) (f64.const 0.0))
573 (assert_return (invoke "64_good5" (i64.const 65510)) (f64.const 0.0))
575 (assert_return (invoke "64_good1" (i64.const 65511)) (f64.const 0.0))
576 (assert_return (invoke "64_good2" (i64.const 65511)) (f64.const 0.0))
577 (assert_return (invoke "64_good3" (i64.const 65511)) (f64.const 0.0))
578 (assert_return (invoke "64_good4" (i64.const 65511)) (f64.const 0.0))
579 (assert_trap (invoke "64_good5" (i64.const 65511)) "out of bounds memory access")
581 (assert_trap (invoke "64_bad" (i64.const 0)) "out of bounds memory access")
582 (assert_trap (invoke "64_bad" (i64.const 1)) "out of bounds memory access")