1;; make sure everything codegens correctly and has no cranelift verifier errors
2(module
3  (memory i64 1)
4  (func (export "run")
5    i64.const 0 i32.atomic.load drop
6    i64.const 0 i64.atomic.load drop
7    i64.const 0 i32.atomic.load8_u drop
8    i64.const 0 i32.atomic.load16_u drop
9    i64.const 0 i64.atomic.load8_u drop
10    i64.const 0 i64.atomic.load16_u drop
11    i64.const 0 i64.atomic.load32_u drop
12    i64.const 0 i32.const 0 i32.atomic.store
13    i64.const 0 i64.const 0 i64.atomic.store
14    i64.const 0 i32.const 0 i32.atomic.store8
15    i64.const 0 i32.const 0 i32.atomic.store16
16    i64.const 0 i64.const 0 i64.atomic.store8
17    i64.const 0 i64.const 0 i64.atomic.store16
18    i64.const 0 i64.const 0 i64.atomic.store32
19    i64.const 0 i32.const 0 i32.atomic.rmw.add drop
20    i64.const 0 i64.const 0 i64.atomic.rmw.add drop
21    i64.const 0 i32.const 0 i32.atomic.rmw8.add_u drop
22    i64.const 0 i32.const 0 i32.atomic.rmw16.add_u drop
23    i64.const 0 i64.const 0 i64.atomic.rmw8.add_u drop
24    i64.const 0 i64.const 0 i64.atomic.rmw16.add_u drop
25    i64.const 0 i64.const 0 i64.atomic.rmw32.add_u drop
26    i64.const 0 i32.const 0 i32.atomic.rmw.sub drop
27    i64.const 0 i64.const 0 i64.atomic.rmw.sub drop
28    i64.const 0 i32.const 0 i32.atomic.rmw8.sub_u drop
29    i64.const 0 i32.const 0 i32.atomic.rmw16.sub_u drop
30    i64.const 0 i64.const 0 i64.atomic.rmw8.sub_u drop
31    i64.const 0 i64.const 0 i64.atomic.rmw16.sub_u drop
32    i64.const 0 i64.const 0 i64.atomic.rmw32.sub_u drop
33    i64.const 0 i32.const 0 i32.atomic.rmw.and drop
34    i64.const 0 i64.const 0 i64.atomic.rmw.and drop
35    i64.const 0 i32.const 0 i32.atomic.rmw8.and_u drop
36    i64.const 0 i32.const 0 i32.atomic.rmw16.and_u drop
37    i64.const 0 i64.const 0 i64.atomic.rmw8.and_u drop
38    i64.const 0 i64.const 0 i64.atomic.rmw16.and_u drop
39    i64.const 0 i64.const 0 i64.atomic.rmw32.and_u drop
40    i64.const 0 i32.const 0 i32.atomic.rmw.or drop
41    i64.const 0 i64.const 0 i64.atomic.rmw.or drop
42    i64.const 0 i32.const 0 i32.atomic.rmw8.or_u drop
43    i64.const 0 i32.const 0 i32.atomic.rmw16.or_u drop
44    i64.const 0 i64.const 0 i64.atomic.rmw8.or_u drop
45    i64.const 0 i64.const 0 i64.atomic.rmw16.or_u drop
46    i64.const 0 i64.const 0 i64.atomic.rmw32.or_u drop
47    i64.const 0 i32.const 0 i32.atomic.rmw.xor drop
48    i64.const 0 i64.const 0 i64.atomic.rmw.xor drop
49    i64.const 0 i32.const 0 i32.atomic.rmw8.xor_u drop
50    i64.const 0 i32.const 0 i32.atomic.rmw16.xor_u drop
51    i64.const 0 i64.const 0 i64.atomic.rmw8.xor_u drop
52    i64.const 0 i64.const 0 i64.atomic.rmw16.xor_u drop
53    i64.const 0 i64.const 0 i64.atomic.rmw32.xor_u drop
54    i64.const 0 i32.const 0 i32.atomic.rmw.xchg drop
55    i64.const 0 i64.const 0 i64.atomic.rmw.xchg drop
56    i64.const 0 i32.const 0 i32.atomic.rmw8.xchg_u drop
57    i64.const 0 i32.const 0 i32.atomic.rmw16.xchg_u drop
58    i64.const 0 i64.const 0 i64.atomic.rmw8.xchg_u drop
59    i64.const 0 i64.const 0 i64.atomic.rmw16.xchg_u drop
60    i64.const 0 i64.const 0 i64.atomic.rmw32.xchg_u drop
61    i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw.cmpxchg drop
62    i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw.cmpxchg drop
63    i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw8.cmpxchg_u drop
64    i64.const 0 i32.const 0 i32.const 0 i32.atomic.rmw16.cmpxchg_u drop
65    i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw8.cmpxchg_u drop
66    i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw16.cmpxchg_u drop
67    i64.const 0 i64.const 0 i64.const 0 i64.atomic.rmw32.cmpxchg_u drop
68  )
69
70  ;; these are unimplemented intrinsics that trap at runtime so just make sure
71  ;; we can codegen instead of also testing execution.
72  (func $just_validate_codegen
73    i64.const 0 i32.const 0 memory.atomic.notify drop
74    i64.const 0 i32.const 0 i64.const 0 memory.atomic.wait32 drop
75    i64.const 0 i64.const 0 i64.const 0 memory.atomic.wait64 drop
76  )
77)
78
79(assert_return (invoke "run"))
80