1 ;; Load i32 data with different offset/align arguments
5 (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
7 (func (export "8u_good1") (param $i i32) (result i32)
8 (i32.load8_u offset=0 (local.get $i)) ;; 97 'a'
10 (func (export "8u_good2") (param $i i32) (result i32)
11 (i32.load8_u align=1 (local.get $i)) ;; 97 'a'
13 (func (export "8u_good3") (param $i i32) (result i32)
14 (i32.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
16 (func (export "8u_good4") (param $i i32) (result i32)
17 (i32.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
19 (func (export "8u_good5") (param $i i32) (result i32)
20 (i32.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
23 (func (export "8s_good1") (param $i i32) (result i32)
24 (i32.load8_s offset=0 (local.get $i)) ;; 97 'a'
26 (func (export "8s_good2") (param $i i32) (result i32)
27 (i32.load8_s align=1 (local.get $i)) ;; 97 'a'
29 (func (export "8s_good3") (param $i i32) (result i32)
30 (i32.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
32 (func (export "8s_good4") (param $i i32) (result i32)
33 (i32.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
35 (func (export "8s_good5") (param $i i32) (result i32)
36 (i32.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
39 (func (export "16u_good1") (param $i i32) (result i32)
40 (i32.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
42 (func (export "16u_good2") (param $i i32) (result i32)
43 (i32.load16_u align=1 (local.get $i)) ;; 25185 'ab'
45 (func (export "16u_good3") (param $i i32) (result i32)
46 (i32.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
48 (func (export "16u_good4") (param $i i32) (result i32)
49 (i32.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
51 (func (export "16u_good5") (param $i i32) (result i32)
52 (i32.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
55 (func (export "16s_good1") (param $i i32) (result i32)
56 (i32.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
58 (func (export "16s_good2") (param $i i32) (result i32)
59 (i32.load16_s align=1 (local.get $i)) ;; 25185 'ab'
61 (func (export "16s_good3") (param $i i32) (result i32)
62 (i32.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
64 (func (export "16s_good4") (param $i i32) (result i32)
65 (i32.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
67 (func (export "16s_good5") (param $i i32) (result i32)
68 (i32.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
71 (func (export "32_good1") (param $i i32) (result i32)
72 (i32.load offset=0 (local.get $i)) ;; 1684234849 'abcd'
74 (func (export "32_good2") (param $i i32) (result i32)
75 (i32.load align=1 (local.get $i)) ;; 1684234849 'abcd'
77 (func (export "32_good3") (param $i i32) (result i32)
78 (i32.load offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
80 (func (export "32_good4") (param $i i32) (result i32)
81 (i32.load offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
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'
87 (func (export "8u_bad") (param $i i32)
88 (drop (i32.load8_u offset=4294967295 (local.get $i)))
90 (func (export "8s_bad") (param $i i32)
91 (drop (i32.load8_s offset=4294967295 (local.get $i)))
93 (func (export "16u_bad") (param $i i32)
94 (drop (i32.load16_u offset=4294967295 (local.get $i)))
96 (func (export "16s_bad") (param $i i32)
97 (drop (i32.load16_s offset=4294967295 (local.get $i)))
99 (func (export "32_bad") (param $i i32)
100 (drop (i32.load offset=4294967295 (local.get $i)))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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")
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")
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")
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")
216 "(func (drop (i32.load offset=4294967296 (i32.const 0))))"
218 "offset out of range"
221 ;; Load i64 data with different offset/align arguments
225 (data (i32.const 0) "abcdefghijklmnopqrstuvwxyz")
227 (func (export "8u_good1") (param $i i32) (result i64)
228 (i64.load8_u offset=0 (local.get $i)) ;; 97 'a'
230 (func (export "8u_good2") (param $i i32) (result i64)
231 (i64.load8_u align=1 (local.get $i)) ;; 97 'a'
233 (func (export "8u_good3") (param $i i32) (result i64)
234 (i64.load8_u offset=1 align=1 (local.get $i)) ;; 98 'b'
236 (func (export "8u_good4") (param $i i32) (result i64)
237 (i64.load8_u offset=2 align=1 (local.get $i)) ;; 99 'c'
239 (func (export "8u_good5") (param $i i32) (result i64)
240 (i64.load8_u offset=25 align=1 (local.get $i)) ;; 122 'z'
243 (func (export "8s_good1") (param $i i32) (result i64)
244 (i64.load8_s offset=0 (local.get $i)) ;; 97 'a'
246 (func (export "8s_good2") (param $i i32) (result i64)
247 (i64.load8_s align=1 (local.get $i)) ;; 97 'a'
249 (func (export "8s_good3") (param $i i32) (result i64)
250 (i64.load8_s offset=1 align=1 (local.get $i)) ;; 98 'b'
252 (func (export "8s_good4") (param $i i32) (result i64)
253 (i64.load8_s offset=2 align=1 (local.get $i)) ;; 99 'c'
255 (func (export "8s_good5") (param $i i32) (result i64)
256 (i64.load8_s offset=25 align=1 (local.get $i)) ;; 122 'z'
259 (func (export "16u_good1") (param $i i32) (result i64)
260 (i64.load16_u offset=0 (local.get $i)) ;; 25185 'ab'
262 (func (export "16u_good2") (param $i i32) (result i64)
263 (i64.load16_u align=1 (local.get $i)) ;; 25185 'ab'
265 (func (export "16u_good3") (param $i i32) (result i64)
266 (i64.load16_u offset=1 align=1 (local.get $i)) ;; 25442 'bc'
268 (func (export "16u_good4") (param $i i32) (result i64)
269 (i64.load16_u offset=2 align=2 (local.get $i)) ;; 25699 'cd'
271 (func (export "16u_good5") (param $i i32) (result i64)
272 (i64.load16_u offset=25 align=2 (local.get $i)) ;; 122 'z\0'
275 (func (export "16s_good1") (param $i i32) (result i64)
276 (i64.load16_s offset=0 (local.get $i)) ;; 25185 'ab'
278 (func (export "16s_good2") (param $i i32) (result i64)
279 (i64.load16_s align=1 (local.get $i)) ;; 25185 'ab'
281 (func (export "16s_good3") (param $i i32) (result i64)
282 (i64.load16_s offset=1 align=1 (local.get $i)) ;; 25442 'bc'
284 (func (export "16s_good4") (param $i i32) (result i64)
285 (i64.load16_s offset=2 align=2 (local.get $i)) ;; 25699 'cd'
287 (func (export "16s_good5") (param $i i32) (result i64)
288 (i64.load16_s offset=25 align=2 (local.get $i)) ;; 122 'z\0'
291 (func (export "32u_good1") (param $i i32) (result i64)
292 (i64.load32_u offset=0 (local.get $i)) ;; 1684234849 'abcd'
294 (func (export "32u_good2") (param $i i32) (result i64)
295 (i64.load32_u align=1 (local.get $i)) ;; 1684234849 'abcd'
297 (func (export "32u_good3") (param $i i32) (result i64)
298 (i64.load32_u offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
300 (func (export "32u_good4") (param $i i32) (result i64)
301 (i64.load32_u offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
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'
307 (func (export "32s_good1") (param $i i32) (result i64)
308 (i64.load32_s offset=0 (local.get $i)) ;; 1684234849 'abcd'
310 (func (export "32s_good2") (param $i i32) (result i64)
311 (i64.load32_s align=1 (local.get $i)) ;; 1684234849 'abcd'
313 (func (export "32s_good3") (param $i i32) (result i64)
314 (i64.load32_s offset=1 align=1 (local.get $i)) ;; 1701077858 'bcde'
316 (func (export "32s_good4") (param $i i32) (result i64)
317 (i64.load32_s offset=2 align=2 (local.get $i)) ;; 1717920867 'cdef'
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'
323 (func (export "64_good1") (param $i i32) (result i64)
324 (i64.load offset=0 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
326 (func (export "64_good2") (param $i i32) (result i64)
327 (i64.load align=1 (local.get $i)) ;; 0x6867666564636261 'abcdefgh'
329 (func (export "64_good3") (param $i i32) (result i64)
330 (i64.load offset=1 align=1 (local.get $i)) ;; 0x6968676665646362 'bcdefghi'
332 (func (export "64_good4") (param $i i32) (result i64)
333 (i64.load offset=2 align=2 (local.get $i)) ;; 0x6a69686766656463 'cdefghij'
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'
339 (func (export "8u_bad") (param $i i32)
340 (drop (i64.load8_u offset=4294967295 (local.get $i)))
342 (func (export "8s_bad") (param $i i32)
343 (drop (i64.load8_s offset=4294967295 (local.get $i)))
345 (func (export "16u_bad") (param $i i32)
346 (drop (i64.load16_u offset=4294967295 (local.get $i)))
348 (func (export "16s_bad") (param $i i32)
349 (drop (i64.load16_s offset=4294967295 (local.get $i)))
351 (func (export "32u_bad") (param $i i32)
352 (drop (i64.load32_u offset=4294967295 (local.get $i)))
354 (func (export "32s_bad") (param $i i32)
355 (drop (i64.load32_s offset=4294967295 (local.get $i)))
357 (func (export "64_bad") (param $i i32)
358 (drop (i64.load offset=4294967295 (local.get $i)))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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")
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")
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")
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")
512 ;; Load f32 data with different offset/align arguments
516 (data (i32.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f")
518 (func (export "32_good1") (param $i i32) (result f32)
519 (f32.load offset=0 (local.get $i)) ;; 0.0 '\00\00\00\00'
521 (func (export "32_good2") (param $i i32) (result f32)
522 (f32.load align=1 (local.get $i)) ;; 0.0 '\00\00\00\00'
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'
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'
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'
533 (func (export "32_bad") (param $i i32)
534 (drop (f32.load offset=4294967295 (local.get $i)))
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))
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))
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")
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")
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")
562 ;; Load f64 data with different offset/align arguments
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")
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'
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'
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'
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'
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'
583 (func (export "64_bad") (param $i i32)
584 (drop (f64.load offset=4294967295 (local.get $i)))
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))
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))
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")
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")
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")