29771ae776cb8991e627176063e6a52d91a8c6bd
[platform/framework/web/lwnode.git] /
1 ;; Load i32 data with different offset/align arguments
2
3 (module
4   (memory i64 1)
5   (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz")
6
7   (func (export "8u_good1") (param $i i64) (result i32)
8     (i32.load8_u offset=0 (local.get $i))                   ;; 97 'a'
9   )
10   (func (export "8u_good2") (param $i i64) (result i32)
11     (i32.load8_u align=1 (local.get $i))                    ;; 97 'a'
12   )
13   (func (export "8u_good3") (param $i i64) (result i32)
14     (i32.load8_u offset=1 align=1 (local.get $i))           ;; 98 'b'
15   )
16   (func (export "8u_good4") (param $i i64) (result i32)
17     (i32.load8_u offset=2 align=1 (local.get $i))           ;; 99 'c'
18   )
19   (func (export "8u_good5") (param $i i64) (result i32)
20     (i32.load8_u offset=25 align=1 (local.get $i))          ;; 122 'z'
21   )
22
23   (func (export "8s_good1") (param $i i64) (result i32)
24     (i32.load8_s offset=0 (local.get $i))                   ;; 97 'a'
25   )
26   (func (export "8s_good2") (param $i i64) (result i32)
27     (i32.load8_s align=1 (local.get $i))                    ;; 97 'a'
28   )
29   (func (export "8s_good3") (param $i i64) (result i32)
30     (i32.load8_s offset=1 align=1 (local.get $i))           ;; 98 'b'
31   )
32   (func (export "8s_good4") (param $i i64) (result i32)
33     (i32.load8_s offset=2 align=1 (local.get $i))           ;; 99 'c'
34   )
35   (func (export "8s_good5") (param $i i64) (result i32)
36     (i32.load8_s offset=25 align=1 (local.get $i))          ;; 122 'z'
37   )
38
39   (func (export "16u_good1") (param $i i64) (result i32)
40     (i32.load16_u offset=0 (local.get $i))                  ;; 25185 'ab'
41   )
42   (func (export "16u_good2") (param $i i64) (result i32)
43     (i32.load16_u align=1 (local.get $i))                   ;; 25185 'ab'
44   )
45   (func (export "16u_good3") (param $i i64) (result i32)
46     (i32.load16_u offset=1 align=1 (local.get $i))          ;; 25442 'bc'
47   )
48   (func (export "16u_good4") (param $i i64) (result i32)
49     (i32.load16_u offset=2 align=2 (local.get $i))          ;; 25699 'cd'
50   )
51   (func (export "16u_good5") (param $i i64) (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 i64) (result i32)
56     (i32.load16_s offset=0 (local.get $i))                  ;; 25185 'ab'
57   )
58   (func (export "16s_good2") (param $i i64) (result i32)
59     (i32.load16_s align=1 (local.get $i))                   ;; 25185 'ab'
60   )
61   (func (export "16s_good3") (param $i i64) (result i32)
62     (i32.load16_s offset=1 align=1 (local.get $i))          ;; 25442 'bc'
63   )
64   (func (export "16s_good4") (param $i i64) (result i32)
65     (i32.load16_s offset=2 align=2 (local.get $i))          ;; 25699 'cd'
66   )
67   (func (export "16s_good5") (param $i i64) (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 i64) (result i32)
72     (i32.load offset=0 (local.get $i))                      ;; 1684234849 'abcd'
73   )
74   (func (export "32_good2") (param $i i64) (result i32)
75     (i32.load align=1 (local.get $i))                       ;; 1684234849 'abcd'
76   )
77   (func (export "32_good3") (param $i i64) (result i32)
78     (i32.load offset=1 align=1 (local.get $i))              ;; 1701077858 'bcde'
79   )
80   (func (export "32_good4") (param $i i64) (result i32)
81     (i32.load offset=2 align=2 (local.get $i))              ;; 1717920867 'cdef'
82   )
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'
85   )
86
87   (func (export "8u_bad") (param $i i64)
88     (drop (i32.load8_u offset=4294967295 (local.get $i)))
89   )
90   (func (export "8s_bad") (param $i i64)
91     (drop (i32.load8_s offset=4294967295 (local.get $i)))
92   )
93   (func (export "16u_bad") (param $i i64)
94     (drop (i32.load16_u offset=4294967295 (local.get $i)))
95   )
96   (func (export "16s_bad") (param $i i64)
97     (drop (i32.load16_s offset=4294967295 (local.get $i)))
98   )
99   (func (export "32_bad") (param $i i64)
100     (drop (i32.load offset=4294967295 (local.get $i)))
101   )
102 )
103
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))
109
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))
115
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))
121
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))
127
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))
133
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))
139
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))
145
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))
151
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))
157
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))
163
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))
169
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))
175
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))
181
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))
187
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")
193
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")
199
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")
205
206
207 ;; Load i64 data with different offset/align arguments
208
209 (module
210   (memory i64 1)
211   (data (i64.const 0) "abcdefghijklmnopqrstuvwxyz")
212
213   (func (export "8u_good1") (param $i i64) (result i64)
214     (i64.load8_u offset=0 (local.get $i))                   ;; 97 'a'
215   )
216   (func (export "8u_good2") (param $i i64) (result i64)
217     (i64.load8_u align=1 (local.get $i))                    ;; 97 'a'
218   )
219   (func (export "8u_good3") (param $i i64) (result i64)
220     (i64.load8_u offset=1 align=1 (local.get $i))           ;; 98 'b'
221   )
222   (func (export "8u_good4") (param $i i64) (result i64)
223     (i64.load8_u offset=2 align=1 (local.get $i))           ;; 99 'c'
224   )
225   (func (export "8u_good5") (param $i i64) (result i64)
226     (i64.load8_u offset=25 align=1 (local.get $i))          ;; 122 'z'
227   )
228
229   (func (export "8s_good1") (param $i i64) (result i64)
230     (i64.load8_s offset=0 (local.get $i))                   ;; 97 'a'
231   )
232   (func (export "8s_good2") (param $i i64) (result i64)
233     (i64.load8_s align=1 (local.get $i))                    ;; 97 'a'
234   )
235   (func (export "8s_good3") (param $i i64) (result i64)
236     (i64.load8_s offset=1 align=1 (local.get $i))           ;; 98 'b'
237   )
238   (func (export "8s_good4") (param $i i64) (result i64)
239     (i64.load8_s offset=2 align=1 (local.get $i))           ;; 99 'c'
240   )
241   (func (export "8s_good5") (param $i i64) (result i64)
242     (i64.load8_s offset=25 align=1 (local.get $i))          ;; 122 'z'
243   )
244
245   (func (export "16u_good1") (param $i i64) (result i64)
246     (i64.load16_u offset=0 (local.get $i))                 ;; 25185 'ab'
247   )
248   (func (export "16u_good2") (param $i i64) (result i64)
249     (i64.load16_u align=1 (local.get $i))                  ;; 25185 'ab'
250   )
251   (func (export "16u_good3") (param $i i64) (result i64)
252     (i64.load16_u offset=1 align=1 (local.get $i))         ;; 25442 'bc'
253   )
254   (func (export "16u_good4") (param $i i64) (result i64)
255     (i64.load16_u offset=2 align=2 (local.get $i))         ;; 25699 'cd'
256   )
257   (func (export "16u_good5") (param $i i64) (result i64)
258     (i64.load16_u offset=25 align=2 (local.get $i))        ;; 122 'z\0'
259   )
260
261   (func (export "16s_good1") (param $i i64) (result i64)
262     (i64.load16_s offset=0 (local.get $i))                 ;; 25185 'ab'
263   )
264   (func (export "16s_good2") (param $i i64) (result i64)
265     (i64.load16_s align=1 (local.get $i))                  ;; 25185 'ab'
266   )
267   (func (export "16s_good3") (param $i i64) (result i64)
268     (i64.load16_s offset=1 align=1 (local.get $i))         ;; 25442 'bc'
269   )
270   (func (export "16s_good4") (param $i i64) (result i64)
271     (i64.load16_s offset=2 align=2 (local.get $i))         ;; 25699 'cd'
272   )
273   (func (export "16s_good5") (param $i i64) (result i64)
274     (i64.load16_s offset=25 align=2 (local.get $i))        ;; 122 'z\0'
275   )
276
277   (func (export "32u_good1") (param $i i64) (result i64)
278     (i64.load32_u offset=0 (local.get $i))                 ;; 1684234849 'abcd'
279   )
280   (func (export "32u_good2") (param $i i64) (result i64)
281     (i64.load32_u align=1 (local.get $i))                  ;; 1684234849 'abcd'
282   )
283   (func (export "32u_good3") (param $i i64) (result i64)
284     (i64.load32_u offset=1 align=1 (local.get $i))         ;; 1701077858 'bcde'
285   )
286   (func (export "32u_good4") (param $i i64) (result i64)
287     (i64.load32_u offset=2 align=2 (local.get $i))         ;; 1717920867 'cdef'
288   )
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'
291   )
292
293   (func (export "32s_good1") (param $i i64) (result i64)
294     (i64.load32_s offset=0 (local.get $i))                 ;; 1684234849 'abcd'
295   )
296   (func (export "32s_good2") (param $i i64) (result i64)
297     (i64.load32_s align=1 (local.get $i))                  ;; 1684234849 'abcd'
298   )
299   (func (export "32s_good3") (param $i i64) (result i64)
300     (i64.load32_s offset=1 align=1 (local.get $i))         ;; 1701077858 'bcde'
301   )
302   (func (export "32s_good4") (param $i i64) (result i64)
303     (i64.load32_s offset=2 align=2 (local.get $i))         ;; 1717920867 'cdef'
304   )
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'
307   )
308
309   (func (export "64_good1") (param $i i64) (result i64)
310     (i64.load offset=0 (local.get $i))                     ;; 0x6867666564636261 'abcdefgh'
311   )
312   (func (export "64_good2") (param $i i64) (result i64)
313     (i64.load align=1 (local.get $i))                      ;; 0x6867666564636261 'abcdefgh'
314   )
315   (func (export "64_good3") (param $i i64) (result i64)
316     (i64.load offset=1 align=1 (local.get $i))             ;; 0x6968676665646362 'bcdefghi'
317   )
318   (func (export "64_good4") (param $i i64) (result i64)
319     (i64.load offset=2 align=2 (local.get $i))             ;; 0x6a69686766656463 'cdefghij'
320   )
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'
323   )
324
325   (func (export "8u_bad") (param $i i64)
326     (drop (i64.load8_u offset=4294967295 (local.get $i)))
327   )
328   (func (export "8s_bad") (param $i i64)
329     (drop (i64.load8_s offset=4294967295 (local.get $i)))
330   )
331   (func (export "16u_bad") (param $i i64)
332     (drop (i64.load16_u offset=4294967295 (local.get $i)))
333   )
334   (func (export "16s_bad") (param $i i64)
335     (drop (i64.load16_s offset=4294967295 (local.get $i)))
336   )
337   (func (export "32u_bad") (param $i i64)
338     (drop (i64.load32_u offset=4294967295 (local.get $i)))
339   )
340   (func (export "32s_bad") (param $i i64)
341     (drop (i64.load32_s offset=4294967295 (local.get $i)))
342   )
343   (func (export "64_bad") (param $i i64)
344     (drop (i64.load offset=4294967295 (local.get $i)))
345   )
346 )
347
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))
353
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))
359
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))
365
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))
371
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))
377
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))
383
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))
389
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))
395
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))
401
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))
407
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))
413
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))
419
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))
425
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))
431
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))
437
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))
443
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))
449
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))
455
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))
461
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))
467
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")
473
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")
481
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")
489
490 ;; Load f32 data with different offset/align arguments
491
492 (module
493   (memory i64 1)
494   (data (i64.const 0) "\00\00\00\00\00\00\a0\7f\01\00\d0\7f")
495
496   (func (export "32_good1") (param $i i64) (result f32)
497     (f32.load offset=0 (local.get $i))                   ;; 0.0 '\00\00\00\00'
498   )
499   (func (export "32_good2") (param $i i64) (result f32)
500     (f32.load align=1 (local.get $i))                    ;; 0.0 '\00\00\00\00'
501   )
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'
504   )
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'
507   )
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'
510   )
511   (func (export "32_bad") (param $i i64)
512     (drop (f32.load offset=4294967295 (local.get $i)))
513   )
514 )
515
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))
521
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))
527
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")
533
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")
536
537 ;; Load f64 data with different offset/align arguments
538
539 (module
540   (memory i64 1)
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")
542
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'
545   )
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'
548   )
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'
551   )
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'
554   )
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'
557   )
558   (func (export "64_bad") (param $i i64)
559     (drop (f64.load offset=4294967295 (local.get $i)))
560   )
561 )
562
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))
568
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))
574
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")
580
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")