78d39d87bec3a159b2069c8212678e393470fb2f
[platform/framework/web/lwnode.git] /
1 (module
2     (memory i64 1)
3
4     (func $addr_limit (result i64)
5       (i64.mul (memory.size) (i64.const 0x10000))
6     )
7
8     (func (export "store") (param $i i64) (param $v i32)
9       (i32.store (i64.add (call $addr_limit) (local.get $i)) (local.get $v))
10     )
11
12     (func (export "load") (param $i i64) (result i32)
13       (i32.load (i64.add (call $addr_limit) (local.get $i)))
14     )
15
16     (func (export "memory.grow") (param i64) (result i64)
17       (memory.grow (local.get 0))
18     )
19 )
20
21 (assert_return (invoke "store" (i64.const -4) (i32.const 42)))
22 (assert_return (invoke "load" (i64.const -4)) (i32.const 42))
23 (assert_trap (invoke "store" (i64.const -3) (i32.const 13)) "out of bounds memory access")
24 (assert_trap (invoke "load" (i64.const -3)) "out of bounds memory access")
25 (assert_trap (invoke "store" (i64.const -2) (i32.const 13)) "out of bounds memory access")
26 (assert_trap (invoke "load" (i64.const -2)) "out of bounds memory access")
27 (assert_trap (invoke "store" (i64.const -1) (i32.const 13)) "out of bounds memory access")
28 (assert_trap (invoke "load" (i64.const -1)) "out of bounds memory access")
29 (assert_trap (invoke "store" (i64.const 0) (i32.const 13)) "out of bounds memory access")
30 (assert_trap (invoke "load" (i64.const 0)) "out of bounds memory access")
31 (assert_trap (invoke "store" (i64.const 0x80000000) (i32.const 13)) "out of bounds memory access")
32 (assert_trap (invoke "load" (i64.const 0x80000000)) "out of bounds memory access")
33
34 (module
35   (memory i64 1)
36   (data (i64.const 0) "abcdefgh")
37   (data (i64.const 0xfff8) "abcdefgh")
38
39   (func (export "i32.load") (param $a i64) (result i32)
40     (i32.load (local.get $a))
41   )
42   (func (export "i64.load") (param $a i64) (result i64)
43     (i64.load (local.get $a))
44   )
45   (func (export "f32.load") (param $a i64) (result f32)
46     (f32.load (local.get $a))
47   )
48   (func (export "f64.load") (param $a i64) (result f64)
49     (f64.load (local.get $a))
50   )
51   (func (export "i32.load8_s") (param $a i64) (result i32)
52     (i32.load8_s (local.get $a))
53   )
54   (func (export "i32.load8_u") (param $a i64) (result i32)
55     (i32.load8_u (local.get $a))
56   )
57   (func (export "i32.load16_s") (param $a i64) (result i32)
58     (i32.load16_s (local.get $a))
59   )
60   (func (export "i32.load16_u") (param $a i64) (result i32)
61     (i32.load16_u (local.get $a))
62   )
63   (func (export "i64.load8_s") (param $a i64) (result i64)
64     (i64.load8_s (local.get $a))
65   )
66   (func (export "i64.load8_u") (param $a i64) (result i64)
67     (i64.load8_u (local.get $a))
68   )
69   (func (export "i64.load16_s") (param $a i64) (result i64)
70     (i64.load16_s (local.get $a))
71   )
72   (func (export "i64.load16_u") (param $a i64) (result i64)
73     (i64.load16_u (local.get $a))
74   )
75   (func (export "i64.load32_s") (param $a i64) (result i64)
76     (i64.load32_s (local.get $a))
77   )
78   (func (export "i64.load32_u") (param $a i64) (result i64)
79     (i64.load32_u (local.get $a))
80   )
81   (func (export "i32.store") (param $a i64) (param $v i32)
82     (i32.store (local.get $a) (local.get $v))
83   )
84   (func (export "i64.store") (param $a i64) (param $v i64)
85     (i64.store (local.get $a) (local.get $v))
86   )
87   (func (export "f32.store") (param $a i64) (param $v f32)
88     (f32.store (local.get $a) (local.get $v))
89   )
90   (func (export "f64.store") (param $a i64) (param $v f64)
91     (f64.store (local.get $a) (local.get $v))
92   )
93   (func (export "i32.store8") (param $a i64) (param $v i32)
94     (i32.store8 (local.get $a) (local.get $v))
95   )
96   (func (export "i32.store16") (param $a i64) (param $v i32)
97     (i32.store16 (local.get $a) (local.get $v))
98   )
99   (func (export "i64.store8") (param $a i64) (param $v i64)
100     (i64.store8 (local.get $a) (local.get $v))
101   )
102   (func (export "i64.store16") (param $a i64) (param $v i64)
103     (i64.store16 (local.get $a) (local.get $v))
104   )
105   (func (export "i64.store32") (param $a i64) (param $v i64)
106     (i64.store32 (local.get $a) (local.get $v))
107   )
108 )
109
110 (assert_trap (invoke "i32.store" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access")
111 (assert_trap (invoke "i32.store" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access")
112 (assert_trap (invoke "i32.store" (i64.const 0xfffe) (i32.const 0)) "out of bounds memory access")
113 (assert_trap (invoke "i32.store" (i64.const 0xfffd) (i32.const 0)) "out of bounds memory access")
114 (assert_trap (invoke "i32.store" (i64.const -1) (i32.const 0)) "out of bounds memory access")
115 (assert_trap (invoke "i32.store" (i64.const -2) (i32.const 0)) "out of bounds memory access")
116 (assert_trap (invoke "i32.store" (i64.const -3) (i32.const 0)) "out of bounds memory access")
117 (assert_trap (invoke "i32.store" (i64.const -4) (i32.const 0)) "out of bounds memory access")
118 (assert_trap (invoke "i64.store" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access")
119 (assert_trap (invoke "i64.store" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access")
120 (assert_trap (invoke "i64.store" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access")
121 (assert_trap (invoke "i64.store" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access")
122 (assert_trap (invoke "i64.store" (i64.const 0xfffc) (i64.const 0)) "out of bounds memory access")
123 (assert_trap (invoke "i64.store" (i64.const 0xfffb) (i64.const 0)) "out of bounds memory access")
124 (assert_trap (invoke "i64.store" (i64.const 0xfffa) (i64.const 0)) "out of bounds memory access")
125 (assert_trap (invoke "i64.store" (i64.const 0xfff9) (i64.const 0)) "out of bounds memory access")
126 (assert_trap (invoke "i64.store" (i64.const -1) (i64.const 0)) "out of bounds memory access")
127 (assert_trap (invoke "i64.store" (i64.const -2) (i64.const 0)) "out of bounds memory access")
128 (assert_trap (invoke "i64.store" (i64.const -3) (i64.const 0)) "out of bounds memory access")
129 (assert_trap (invoke "i64.store" (i64.const -4) (i64.const 0)) "out of bounds memory access")
130 (assert_trap (invoke "i64.store" (i64.const -5) (i64.const 0)) "out of bounds memory access")
131 (assert_trap (invoke "i64.store" (i64.const -6) (i64.const 0)) "out of bounds memory access")
132 (assert_trap (invoke "i64.store" (i64.const -7) (i64.const 0)) "out of bounds memory access")
133 (assert_trap (invoke "i64.store" (i64.const -8) (i64.const 0)) "out of bounds memory access")
134 (assert_trap (invoke "f32.store" (i64.const 0x10000) (f32.const 0)) "out of bounds memory access")
135 (assert_trap (invoke "f32.store" (i64.const 0xffff) (f32.const 0)) "out of bounds memory access")
136 (assert_trap (invoke "f32.store" (i64.const 0xfffe) (f32.const 0)) "out of bounds memory access")
137 (assert_trap (invoke "f32.store" (i64.const 0xfffd) (f32.const 0)) "out of bounds memory access")
138 (assert_trap (invoke "f32.store" (i64.const -1) (f32.const 0)) "out of bounds memory access")
139 (assert_trap (invoke "f32.store" (i64.const -2) (f32.const 0)) "out of bounds memory access")
140 (assert_trap (invoke "f32.store" (i64.const -3) (f32.const 0)) "out of bounds memory access")
141 (assert_trap (invoke "f32.store" (i64.const -4) (f32.const 0)) "out of bounds memory access")
142 (assert_trap (invoke "f64.store" (i64.const 0x10000) (f64.const 0)) "out of bounds memory access")
143 (assert_trap (invoke "f64.store" (i64.const 0xffff) (f64.const 0)) "out of bounds memory access")
144 (assert_trap (invoke "f64.store" (i64.const 0xfffe) (f64.const 0)) "out of bounds memory access")
145 (assert_trap (invoke "f64.store" (i64.const 0xfffd) (f64.const 0)) "out of bounds memory access")
146 (assert_trap (invoke "f64.store" (i64.const 0xfffc) (f64.const 0)) "out of bounds memory access")
147 (assert_trap (invoke "f64.store" (i64.const 0xfffb) (f64.const 0)) "out of bounds memory access")
148 (assert_trap (invoke "f64.store" (i64.const 0xfffa) (f64.const 0)) "out of bounds memory access")
149 (assert_trap (invoke "f64.store" (i64.const 0xfff9) (f64.const 0)) "out of bounds memory access")
150 (assert_trap (invoke "f64.store" (i64.const -1) (f64.const 0)) "out of bounds memory access")
151 (assert_trap (invoke "f64.store" (i64.const -2) (f64.const 0)) "out of bounds memory access")
152 (assert_trap (invoke "f64.store" (i64.const -3) (f64.const 0)) "out of bounds memory access")
153 (assert_trap (invoke "f64.store" (i64.const -4) (f64.const 0)) "out of bounds memory access")
154 (assert_trap (invoke "f64.store" (i64.const -5) (f64.const 0)) "out of bounds memory access")
155 (assert_trap (invoke "f64.store" (i64.const -6) (f64.const 0)) "out of bounds memory access")
156 (assert_trap (invoke "f64.store" (i64.const -7) (f64.const 0)) "out of bounds memory access")
157 (assert_trap (invoke "f64.store" (i64.const -8) (f64.const 0)) "out of bounds memory access")
158 (assert_trap (invoke "i32.store8" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access")
159 (assert_trap (invoke "i32.store8" (i64.const -1) (i32.const 0)) "out of bounds memory access")
160 (assert_trap (invoke "i32.store16" (i64.const 0x10000) (i32.const 0)) "out of bounds memory access")
161 (assert_trap (invoke "i32.store16" (i64.const 0xffff) (i32.const 0)) "out of bounds memory access")
162 (assert_trap (invoke "i32.store16" (i64.const -1) (i32.const 0)) "out of bounds memory access")
163 (assert_trap (invoke "i32.store16" (i64.const -2) (i32.const 0)) "out of bounds memory access")
164 (assert_trap (invoke "i64.store8" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access")
165 (assert_trap (invoke "i64.store8" (i64.const -1) (i64.const 0)) "out of bounds memory access")
166 (assert_trap (invoke "i64.store16" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access")
167 (assert_trap (invoke "i64.store16" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access")
168 (assert_trap (invoke "i64.store16" (i64.const -1) (i64.const 0)) "out of bounds memory access")
169 (assert_trap (invoke "i64.store16" (i64.const -2) (i64.const 0)) "out of bounds memory access")
170 (assert_trap (invoke "i64.store32" (i64.const 0x10000) (i64.const 0)) "out of bounds memory access")
171 (assert_trap (invoke "i64.store32" (i64.const 0xffff) (i64.const 0)) "out of bounds memory access")
172 (assert_trap (invoke "i64.store32" (i64.const 0xfffe) (i64.const 0)) "out of bounds memory access")
173 (assert_trap (invoke "i64.store32" (i64.const 0xfffd) (i64.const 0)) "out of bounds memory access")
174 (assert_trap (invoke "i64.store32" (i64.const -1) (i64.const 0)) "out of bounds memory access")
175 (assert_trap (invoke "i64.store32" (i64.const -2) (i64.const 0)) "out of bounds memory access")
176 (assert_trap (invoke "i64.store32" (i64.const -3) (i64.const 0)) "out of bounds memory access")
177 (assert_trap (invoke "i64.store32" (i64.const -4) (i64.const 0)) "out of bounds memory access")
178 (assert_trap (invoke "i32.load" (i64.const 0x10000)) "out of bounds memory access")
179 (assert_trap (invoke "i32.load" (i64.const 0xffff)) "out of bounds memory access")
180 (assert_trap (invoke "i32.load" (i64.const 0xfffe)) "out of bounds memory access")
181 (assert_trap (invoke "i32.load" (i64.const 0xfffd)) "out of bounds memory access")
182 (assert_trap (invoke "i32.load" (i64.const -1)) "out of bounds memory access")
183 (assert_trap (invoke "i32.load" (i64.const -2)) "out of bounds memory access")
184 (assert_trap (invoke "i32.load" (i64.const -3)) "out of bounds memory access")
185 (assert_trap (invoke "i32.load" (i64.const -4)) "out of bounds memory access")
186 (assert_trap (invoke "i64.load" (i64.const 0x10000)) "out of bounds memory access")
187 (assert_trap (invoke "i64.load" (i64.const 0xffff)) "out of bounds memory access")
188 (assert_trap (invoke "i64.load" (i64.const 0xfffe)) "out of bounds memory access")
189 (assert_trap (invoke "i64.load" (i64.const 0xfffd)) "out of bounds memory access")
190 (assert_trap (invoke "i64.load" (i64.const 0xfffc)) "out of bounds memory access")
191 (assert_trap (invoke "i64.load" (i64.const 0xfffb)) "out of bounds memory access")
192 (assert_trap (invoke "i64.load" (i64.const 0xfffa)) "out of bounds memory access")
193 (assert_trap (invoke "i64.load" (i64.const 0xfff9)) "out of bounds memory access")
194 (assert_trap (invoke "i64.load" (i64.const -1)) "out of bounds memory access")
195 (assert_trap (invoke "i64.load" (i64.const -2)) "out of bounds memory access")
196 (assert_trap (invoke "i64.load" (i64.const -3)) "out of bounds memory access")
197 (assert_trap (invoke "i64.load" (i64.const -4)) "out of bounds memory access")
198 (assert_trap (invoke "i64.load" (i64.const -5)) "out of bounds memory access")
199 (assert_trap (invoke "i64.load" (i64.const -6)) "out of bounds memory access")
200 (assert_trap (invoke "i64.load" (i64.const -7)) "out of bounds memory access")
201 (assert_trap (invoke "i64.load" (i64.const -8)) "out of bounds memory access")
202 (assert_trap (invoke "f32.load" (i64.const 0x10000)) "out of bounds memory access")
203 (assert_trap (invoke "f32.load" (i64.const 0xffff)) "out of bounds memory access")
204 (assert_trap (invoke "f32.load" (i64.const 0xfffe)) "out of bounds memory access")
205 (assert_trap (invoke "f32.load" (i64.const 0xfffd)) "out of bounds memory access")
206 (assert_trap (invoke "f32.load" (i64.const -1)) "out of bounds memory access")
207 (assert_trap (invoke "f32.load" (i64.const -2)) "out of bounds memory access")
208 (assert_trap (invoke "f32.load" (i64.const -3)) "out of bounds memory access")
209 (assert_trap (invoke "f32.load" (i64.const -4)) "out of bounds memory access")
210 (assert_trap (invoke "f64.load" (i64.const 0x10000)) "out of bounds memory access")
211 (assert_trap (invoke "f64.load" (i64.const 0xffff)) "out of bounds memory access")
212 (assert_trap (invoke "f64.load" (i64.const 0xfffe)) "out of bounds memory access")
213 (assert_trap (invoke "f64.load" (i64.const 0xfffd)) "out of bounds memory access")
214 (assert_trap (invoke "f64.load" (i64.const 0xfffc)) "out of bounds memory access")
215 (assert_trap (invoke "f64.load" (i64.const 0xfffb)) "out of bounds memory access")
216 (assert_trap (invoke "f64.load" (i64.const 0xfffa)) "out of bounds memory access")
217 (assert_trap (invoke "f64.load" (i64.const 0xfff9)) "out of bounds memory access")
218 (assert_trap (invoke "f64.load" (i64.const -1)) "out of bounds memory access")
219 (assert_trap (invoke "f64.load" (i64.const -2)) "out of bounds memory access")
220 (assert_trap (invoke "f64.load" (i64.const -3)) "out of bounds memory access")
221 (assert_trap (invoke "f64.load" (i64.const -4)) "out of bounds memory access")
222 (assert_trap (invoke "f64.load" (i64.const -5)) "out of bounds memory access")
223 (assert_trap (invoke "f64.load" (i64.const -6)) "out of bounds memory access")
224 (assert_trap (invoke "f64.load" (i64.const -7)) "out of bounds memory access")
225 (assert_trap (invoke "f64.load" (i64.const -8)) "out of bounds memory access")
226 (assert_trap (invoke "i32.load8_s" (i64.const 0x10000)) "out of bounds memory access")
227 (assert_trap (invoke "i32.load8_s" (i64.const -1)) "out of bounds memory access")
228 (assert_trap (invoke "i32.load8_u" (i64.const 0x10000)) "out of bounds memory access")
229 (assert_trap (invoke "i32.load8_u" (i64.const -1)) "out of bounds memory access")
230 (assert_trap (invoke "i32.load16_s" (i64.const 0x10000)) "out of bounds memory access")
231 (assert_trap (invoke "i32.load16_s" (i64.const 0xffff)) "out of bounds memory access")
232 (assert_trap (invoke "i32.load16_s" (i64.const -1)) "out of bounds memory access")
233 (assert_trap (invoke "i32.load16_s" (i64.const -2)) "out of bounds memory access")
234 (assert_trap (invoke "i32.load16_u" (i64.const 0x10000)) "out of bounds memory access")
235 (assert_trap (invoke "i32.load16_u" (i64.const 0xffff)) "out of bounds memory access")
236 (assert_trap (invoke "i32.load16_u" (i64.const -1)) "out of bounds memory access")
237 (assert_trap (invoke "i32.load16_u" (i64.const -2)) "out of bounds memory access")
238 (assert_trap (invoke "i64.load8_s" (i64.const 0x10000)) "out of bounds memory access")
239 (assert_trap (invoke "i64.load8_s" (i64.const -1)) "out of bounds memory access")
240 (assert_trap (invoke "i64.load8_u" (i64.const 0x10000)) "out of bounds memory access")
241 (assert_trap (invoke "i64.load8_u" (i64.const -1)) "out of bounds memory access")
242 (assert_trap (invoke "i64.load16_s" (i64.const 0x10000)) "out of bounds memory access")
243 (assert_trap (invoke "i64.load16_s" (i64.const 0xffff)) "out of bounds memory access")
244 (assert_trap (invoke "i64.load16_s" (i64.const -1)) "out of bounds memory access")
245 (assert_trap (invoke "i64.load16_s" (i64.const -2)) "out of bounds memory access")
246 (assert_trap (invoke "i64.load16_u" (i64.const 0x10000)) "out of bounds memory access")
247 (assert_trap (invoke "i64.load16_u" (i64.const 0xffff)) "out of bounds memory access")
248 (assert_trap (invoke "i64.load16_u" (i64.const -1)) "out of bounds memory access")
249 (assert_trap (invoke "i64.load16_u" (i64.const -2)) "out of bounds memory access")
250 (assert_trap (invoke "i64.load32_s" (i64.const 0x10000)) "out of bounds memory access")
251 (assert_trap (invoke "i64.load32_s" (i64.const 0xffff)) "out of bounds memory access")
252 (assert_trap (invoke "i64.load32_s" (i64.const 0xfffe)) "out of bounds memory access")
253 (assert_trap (invoke "i64.load32_s" (i64.const 0xfffd)) "out of bounds memory access")
254 (assert_trap (invoke "i64.load32_s" (i64.const -1)) "out of bounds memory access")
255 (assert_trap (invoke "i64.load32_s" (i64.const -2)) "out of bounds memory access")
256 (assert_trap (invoke "i64.load32_s" (i64.const -3)) "out of bounds memory access")
257 (assert_trap (invoke "i64.load32_s" (i64.const -4)) "out of bounds memory access")
258 (assert_trap (invoke "i64.load32_u" (i64.const 0x10000)) "out of bounds memory access")
259 (assert_trap (invoke "i64.load32_u" (i64.const 0xffff)) "out of bounds memory access")
260 (assert_trap (invoke "i64.load32_u" (i64.const 0xfffe)) "out of bounds memory access")
261 (assert_trap (invoke "i64.load32_u" (i64.const 0xfffd)) "out of bounds memory access")
262 (assert_trap (invoke "i64.load32_u" (i64.const -1)) "out of bounds memory access")
263 (assert_trap (invoke "i64.load32_u" (i64.const -2)) "out of bounds memory access")
264 (assert_trap (invoke "i64.load32_u" (i64.const -3)) "out of bounds memory access")
265 (assert_trap (invoke "i64.load32_u" (i64.const -4)) "out of bounds memory access")
266
267 ;; No memory was changed
268 (assert_return (invoke "i64.load" (i64.const 0xfff8)) (i64.const 0x6867666564636261))
269 (assert_return (invoke "i64.load" (i64.const 0)) (i64.const 0x6867666564636261))