Skip to content

Commit 363edc7

Browse files
authored
Convert memory64 lowering test to lit. NFC (#6731)
Test was converted using port_passes_tests_to_lit.py.
1 parent 6d2f101 commit 363edc7

File tree

3 files changed

+283
-264
lines changed

3 files changed

+283
-264
lines changed
Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,283 @@
1+
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
2+
3+
;; RUN: foreach %s %t wasm-opt --memory64-lowering --enable-memory64 --enable-threads --enable-bulk-memory -S -o - | filecheck %s
4+
5+
(module
6+
;; CHECK: (type $0 (func))
7+
8+
;; CHECK: (import "env" "__memory_base" (global $__memory_base i64))
9+
(import "env" "__memory_base" (global $__memory_base i64))
10+
;; CHECK: (import "env" "__memory_base32" (global $__memory_base32 i32))
11+
12+
;; CHECK: (memory $0 1 1)
13+
(memory $0 i64 1 1)
14+
(data (i64.const 0) "\00\00\00\00\00\00\00\00\00\00")
15+
(data (global.get $__memory_base) "foo")
16+
;; CHECK: (data $0 (i32.const 0) "\00\00\00\00\00\00\00\00\00\00")
17+
18+
;; CHECK: (data $1 (global.get $__memory_base32) "foo")
19+
20+
;; CHECK: (func $load
21+
;; CHECK-NEXT: (drop
22+
;; CHECK-NEXT: (i32.load
23+
;; CHECK-NEXT: (i32.wrap_i64
24+
;; CHECK-NEXT: (i64.const 4)
25+
;; CHECK-NEXT: )
26+
;; CHECK-NEXT: )
27+
;; CHECK-NEXT: )
28+
;; CHECK-NEXT: (drop
29+
;; CHECK-NEXT: (i32.load align=1
30+
;; CHECK-NEXT: (i32.wrap_i64
31+
;; CHECK-NEXT: (i64.const 4)
32+
;; CHECK-NEXT: )
33+
;; CHECK-NEXT: )
34+
;; CHECK-NEXT: )
35+
;; CHECK-NEXT: (drop
36+
;; CHECK-NEXT: (i32.load align=2
37+
;; CHECK-NEXT: (i32.wrap_i64
38+
;; CHECK-NEXT: (i64.const 4)
39+
;; CHECK-NEXT: )
40+
;; CHECK-NEXT: )
41+
;; CHECK-NEXT: )
42+
;; CHECK-NEXT: (drop
43+
;; CHECK-NEXT: (i32.load
44+
;; CHECK-NEXT: (i32.wrap_i64
45+
;; CHECK-NEXT: (i64.const 4)
46+
;; CHECK-NEXT: )
47+
;; CHECK-NEXT: )
48+
;; CHECK-NEXT: )
49+
;; CHECK-NEXT: (drop
50+
;; CHECK-NEXT: (i32.load offset=100
51+
;; CHECK-NEXT: (i32.wrap_i64
52+
;; CHECK-NEXT: (i64.const 4)
53+
;; CHECK-NEXT: )
54+
;; CHECK-NEXT: )
55+
;; CHECK-NEXT: )
56+
;; CHECK-NEXT: (drop
57+
;; CHECK-NEXT: (i32.load offset=100 align=1
58+
;; CHECK-NEXT: (i32.wrap_i64
59+
;; CHECK-NEXT: (i64.const 4)
60+
;; CHECK-NEXT: )
61+
;; CHECK-NEXT: )
62+
;; CHECK-NEXT: )
63+
;; CHECK-NEXT: (drop
64+
;; CHECK-NEXT: (i32.load offset=100 align=2
65+
;; CHECK-NEXT: (i32.wrap_i64
66+
;; CHECK-NEXT: (i64.const 4)
67+
;; CHECK-NEXT: )
68+
;; CHECK-NEXT: )
69+
;; CHECK-NEXT: )
70+
;; CHECK-NEXT: (drop
71+
;; CHECK-NEXT: (i32.load offset=100
72+
;; CHECK-NEXT: (i32.wrap_i64
73+
;; CHECK-NEXT: (i64.const 4)
74+
;; CHECK-NEXT: )
75+
;; CHECK-NEXT: )
76+
;; CHECK-NEXT: )
77+
;; CHECK-NEXT: (drop
78+
;; CHECK-NEXT: (i32.load offset=100 align=1
79+
;; CHECK-NEXT: (unreachable)
80+
;; CHECK-NEXT: )
81+
;; CHECK-NEXT: )
82+
;; CHECK-NEXT: )
83+
(func $load
84+
(drop (i32.load (i64.const 4)))
85+
(drop (i32.load align=1 (i64.const 4)))
86+
(drop (i32.load align=2 (i64.const 4)))
87+
(drop (i32.load align=4 (i64.const 4)))
88+
(drop (i32.load offset=100 (i64.const 4)))
89+
(drop (i32.load offset=100 align=1 (i64.const 4)))
90+
(drop (i32.load offset=100 align=2 (i64.const 4)))
91+
(drop (i32.load offset=100 align=4 (i64.const 4)))
92+
(drop (i32.load offset=100 align=1 (unreachable)))
93+
)
94+
95+
;; CHECK: (func $store
96+
;; CHECK-NEXT: (i32.store
97+
;; CHECK-NEXT: (i32.wrap_i64
98+
;; CHECK-NEXT: (i64.const 4)
99+
;; CHECK-NEXT: )
100+
;; CHECK-NEXT: (i32.const 8)
101+
;; CHECK-NEXT: )
102+
;; CHECK-NEXT: (i32.store align=1
103+
;; CHECK-NEXT: (i32.wrap_i64
104+
;; CHECK-NEXT: (i64.const 4)
105+
;; CHECK-NEXT: )
106+
;; CHECK-NEXT: (i32.const 8)
107+
;; CHECK-NEXT: )
108+
;; CHECK-NEXT: (i32.store align=2
109+
;; CHECK-NEXT: (i32.wrap_i64
110+
;; CHECK-NEXT: (i64.const 4)
111+
;; CHECK-NEXT: )
112+
;; CHECK-NEXT: (i32.const 8)
113+
;; CHECK-NEXT: )
114+
;; CHECK-NEXT: (i32.store
115+
;; CHECK-NEXT: (i32.wrap_i64
116+
;; CHECK-NEXT: (i64.const 4)
117+
;; CHECK-NEXT: )
118+
;; CHECK-NEXT: (i32.const 8)
119+
;; CHECK-NEXT: )
120+
;; CHECK-NEXT: (i32.store offset=100
121+
;; CHECK-NEXT: (i32.wrap_i64
122+
;; CHECK-NEXT: (i64.const 4)
123+
;; CHECK-NEXT: )
124+
;; CHECK-NEXT: (i32.const 8)
125+
;; CHECK-NEXT: )
126+
;; CHECK-NEXT: (i32.store offset=100 align=1
127+
;; CHECK-NEXT: (i32.wrap_i64
128+
;; CHECK-NEXT: (i64.const 4)
129+
;; CHECK-NEXT: )
130+
;; CHECK-NEXT: (i32.const 8)
131+
;; CHECK-NEXT: )
132+
;; CHECK-NEXT: (i32.store offset=100 align=2
133+
;; CHECK-NEXT: (i32.wrap_i64
134+
;; CHECK-NEXT: (i64.const 4)
135+
;; CHECK-NEXT: )
136+
;; CHECK-NEXT: (i32.const 8)
137+
;; CHECK-NEXT: )
138+
;; CHECK-NEXT: (i32.store offset=100
139+
;; CHECK-NEXT: (i32.wrap_i64
140+
;; CHECK-NEXT: (i64.const 4)
141+
;; CHECK-NEXT: )
142+
;; CHECK-NEXT: (i32.const 8)
143+
;; CHECK-NEXT: )
144+
;; CHECK-NEXT: (i32.store offset=100 align=1
145+
;; CHECK-NEXT: (unreachable)
146+
;; CHECK-NEXT: (i32.const 8)
147+
;; CHECK-NEXT: )
148+
;; CHECK-NEXT: (i32.store offset=100 align=1
149+
;; CHECK-NEXT: (i32.wrap_i64
150+
;; CHECK-NEXT: (i64.const 4)
151+
;; CHECK-NEXT: )
152+
;; CHECK-NEXT: (unreachable)
153+
;; CHECK-NEXT: )
154+
;; CHECK-NEXT: )
155+
(func $store
156+
(i32.store (i64.const 4) (i32.const 8))
157+
(i32.store align=1 (i64.const 4) (i32.const 8))
158+
(i32.store align=2 (i64.const 4) (i32.const 8))
159+
(i32.store align=4 (i64.const 4) (i32.const 8))
160+
(i32.store offset=100 (i64.const 4) (i32.const 8))
161+
(i32.store offset=100 align=1 (i64.const 4) (i32.const 8))
162+
(i32.store offset=100 align=2 (i64.const 4) (i32.const 8))
163+
(i32.store offset=100 align=4 (i64.const 4) (i32.const 8))
164+
(i32.store offset=100 align=1 (unreachable) (i32.const 8))
165+
(i32.store offset=100 align=1 (i64.const 4) (unreachable))
166+
)
167+
168+
;; CHECK: (func $atomics
169+
;; CHECK-NEXT: (drop
170+
;; CHECK-NEXT: (i32.atomic.load
171+
;; CHECK-NEXT: (i32.wrap_i64
172+
;; CHECK-NEXT: (i64.const 4)
173+
;; CHECK-NEXT: )
174+
;; CHECK-NEXT: )
175+
;; CHECK-NEXT: )
176+
;; CHECK-NEXT: (i32.atomic.store
177+
;; CHECK-NEXT: (i32.wrap_i64
178+
;; CHECK-NEXT: (i64.const 4)
179+
;; CHECK-NEXT: )
180+
;; CHECK-NEXT: (i32.const 8)
181+
;; CHECK-NEXT: )
182+
;; CHECK-NEXT: (drop
183+
;; CHECK-NEXT: (i32.atomic.rmw8.add_u
184+
;; CHECK-NEXT: (i32.wrap_i64
185+
;; CHECK-NEXT: (i64.const 1)
186+
;; CHECK-NEXT: )
187+
;; CHECK-NEXT: (i32.const 2)
188+
;; CHECK-NEXT: )
189+
;; CHECK-NEXT: )
190+
;; CHECK-NEXT: (drop
191+
;; CHECK-NEXT: (i32.atomic.rmw8.cmpxchg_u
192+
;; CHECK-NEXT: (i32.wrap_i64
193+
;; CHECK-NEXT: (i64.const 1)
194+
;; CHECK-NEXT: )
195+
;; CHECK-NEXT: (i32.const 2)
196+
;; CHECK-NEXT: (i32.const 3)
197+
;; CHECK-NEXT: )
198+
;; CHECK-NEXT: )
199+
;; CHECK-NEXT: (drop
200+
;; CHECK-NEXT: (memory.atomic.wait32
201+
;; CHECK-NEXT: (i32.wrap_i64
202+
;; CHECK-NEXT: (i64.const 1)
203+
;; CHECK-NEXT: )
204+
;; CHECK-NEXT: (i32.const 2)
205+
;; CHECK-NEXT: (i64.const 3)
206+
;; CHECK-NEXT: )
207+
;; CHECK-NEXT: )
208+
;; CHECK-NEXT: (drop
209+
;; CHECK-NEXT: (memory.atomic.notify
210+
;; CHECK-NEXT: (i32.wrap_i64
211+
;; CHECK-NEXT: (i64.const 1)
212+
;; CHECK-NEXT: )
213+
;; CHECK-NEXT: (i32.const 2)
214+
;; CHECK-NEXT: )
215+
;; CHECK-NEXT: )
216+
;; CHECK-NEXT: )
217+
(func $atomics
218+
(drop (i32.atomic.load (i64.const 4)))
219+
(i32.atomic.store (i64.const 4) (i32.const 8))
220+
(drop (i32.atomic.rmw8.add_u (i64.const 1) (i32.const 2)))
221+
(drop (i32.atomic.rmw8.cmpxchg_u (i64.const 1) (i32.const 2) (i32.const 3)))
222+
(drop (memory.atomic.wait32 (i64.const 1) (i32.const 2) (i64.const 3)))
223+
(drop (memory.atomic.notify (i64.const 1) (i32.const 2)))
224+
)
225+
226+
;; CHECK: (func $other
227+
;; CHECK-NEXT: (local $0 i64)
228+
;; CHECK-NEXT: (local.set $0
229+
;; CHECK-NEXT: (i64.extend_i32_u
230+
;; CHECK-NEXT: (memory.size)
231+
;; CHECK-NEXT: )
232+
;; CHECK-NEXT: )
233+
;; CHECK-NEXT: (local.set $0
234+
;; CHECK-NEXT: (i64.extend_i32_u
235+
;; CHECK-NEXT: (memory.grow
236+
;; CHECK-NEXT: (i32.wrap_i64
237+
;; CHECK-NEXT: (i64.const 1)
238+
;; CHECK-NEXT: )
239+
;; CHECK-NEXT: )
240+
;; CHECK-NEXT: )
241+
;; CHECK-NEXT: )
242+
;; CHECK-NEXT: (memory.init $0
243+
;; CHECK-NEXT: (i32.wrap_i64
244+
;; CHECK-NEXT: (i64.const 1)
245+
;; CHECK-NEXT: )
246+
;; CHECK-NEXT: (i32.const 2)
247+
;; CHECK-NEXT: (i32.const 3)
248+
;; CHECK-NEXT: )
249+
;; CHECK-NEXT: (memory.fill
250+
;; CHECK-NEXT: (i32.wrap_i64
251+
;; CHECK-NEXT: (i64.const 1)
252+
;; CHECK-NEXT: )
253+
;; CHECK-NEXT: (i32.const 2)
254+
;; CHECK-NEXT: (i32.wrap_i64
255+
;; CHECK-NEXT: (i64.const 3)
256+
;; CHECK-NEXT: )
257+
;; CHECK-NEXT: )
258+
;; CHECK-NEXT: (memory.copy
259+
;; CHECK-NEXT: (i32.wrap_i64
260+
;; CHECK-NEXT: (i64.const 1)
261+
;; CHECK-NEXT: )
262+
;; CHECK-NEXT: (i32.wrap_i64
263+
;; CHECK-NEXT: (i64.const 2)
264+
;; CHECK-NEXT: )
265+
;; CHECK-NEXT: (i32.wrap_i64
266+
;; CHECK-NEXT: (i64.const 3)
267+
;; CHECK-NEXT: )
268+
;; CHECK-NEXT: )
269+
;; CHECK-NEXT: )
270+
(func $other
271+
(local i64)
272+
(local.set 0 (memory.size))
273+
(local.set 0 (memory.grow (i64.const 1)))
274+
(memory.init 0 (i64.const 1) (i32.const 2) (i32.const 3))
275+
(memory.fill (i64.const 1) (i32.const 2) (i64.const 3))
276+
(memory.copy (i64.const 1) (i64.const 2) (i64.const 3))
277+
)
278+
)
279+
280+
(module
281+
;; CHECK: (memory $0 1 65536)
282+
(memory $0 i64 1 65537)
283+
)

0 commit comments

Comments
 (0)