|
1 | | -function assert(x) { |
2 | | - if (!x) throw 'error!'; |
3 | | -} |
4 | | - |
5 | 1 | var wast = ` |
6 | 2 | (module |
7 | 3 | (memory $0 (shared 1 1)) |
8 | 4 | ) |
9 | 5 | `; |
10 | 6 |
|
11 | | -function test() { |
12 | | - var module = Binaryen.parseText(wast); |
| 7 | +var module = binaryen.parseText(wast); |
13 | 8 |
|
14 | | - // i32/i64.atomic.load/store |
15 | | - module.addFunction("main", Binaryen.none, Binaryen.none, [], module.block("", [ |
16 | | - // i32 |
17 | | - module.i32.atomic.store(0, |
18 | | - module.i32.const(0), |
19 | | - module.i32.atomic.load(0, |
20 | | - module.i32.const(0) |
21 | | - ) |
22 | | - ), |
23 | | - // i32 as u8 |
24 | | - module.i32.atomic.store8(0, |
25 | | - module.i32.const(0), |
26 | | - module.i32.atomic.load8_u(0, |
27 | | - module.i32.const(0) |
28 | | - ) |
29 | | - ), |
30 | | - // i32 as u16 |
31 | | - module.i32.atomic.store16(0, |
| 9 | +// i32/i64.atomic.load/store |
| 10 | +module.addFunction("main", binaryen.none, binaryen.none, [], module.block("", [ |
| 11 | + // i32 |
| 12 | + module.i32.atomic.store(0, |
| 13 | + module.i32.const(0), |
| 14 | + module.i32.atomic.load(0, |
| 15 | + module.i32.const(0) |
| 16 | + ) |
| 17 | + ), |
| 18 | + // i32 as u8 |
| 19 | + module.i32.atomic.store8(0, |
| 20 | + module.i32.const(0), |
| 21 | + module.i32.atomic.load8_u(0, |
| 22 | + module.i32.const(0) |
| 23 | + ) |
| 24 | + ), |
| 25 | + // i32 as u16 |
| 26 | + module.i32.atomic.store16(0, |
| 27 | + module.i32.const(0), |
| 28 | + module.i32.atomic.load16_u(0, |
| 29 | + module.i32.const(0) |
| 30 | + ) |
| 31 | + ), |
| 32 | + // i64 |
| 33 | + module.i64.atomic.store(0, |
| 34 | + module.i32.const(0), |
| 35 | + module.i64.atomic.load(0, |
| 36 | + module.i32.const(0) |
| 37 | + ) |
| 38 | + ), |
| 39 | + // i64 as u8 |
| 40 | + module.i64.atomic.store8(0, |
| 41 | + module.i32.const(0), |
| 42 | + module.i64.atomic.load8_u(0, |
| 43 | + module.i32.const(0) |
| 44 | + ) |
| 45 | + ), |
| 46 | + // i64 as u16 |
| 47 | + module.i64.atomic.store16(0, |
| 48 | + module.i32.const(0), |
| 49 | + module.i64.atomic.load16_u(0, |
| 50 | + module.i32.const(0) |
| 51 | + ) |
| 52 | + ), |
| 53 | + // i64 as u32 |
| 54 | + module.i64.atomic.store32(0, |
| 55 | + module.i32.const(0), |
| 56 | + module.i64.atomic.load32_u(0, |
| 57 | + module.i32.const(0) |
| 58 | + ) |
| 59 | + ), |
| 60 | + // wait and notify |
| 61 | + module.drop( |
| 62 | + module.i32.atomic.wait( |
32 | 63 | module.i32.const(0), |
33 | | - module.i32.atomic.load16_u(0, |
34 | | - module.i32.const(0) |
35 | | - ) |
36 | | - ), |
37 | | - // i64 |
38 | | - module.i64.atomic.store(0, |
39 | 64 | module.i32.const(0), |
40 | | - module.i64.atomic.load(0, |
41 | | - module.i32.const(0) |
42 | | - ) |
43 | | - ), |
44 | | - // i64 as u8 |
45 | | - module.i64.atomic.store8(0, |
| 65 | + module.i64.const(0) |
| 66 | + ) |
| 67 | + ), |
| 68 | + module.drop( |
| 69 | + module.i64.atomic.wait( |
46 | 70 | module.i32.const(0), |
47 | | - module.i64.atomic.load8_u(0, |
48 | | - module.i32.const(0) |
49 | | - ) |
50 | | - ), |
51 | | - // i64 as u16 |
52 | | - module.i64.atomic.store16(0, |
| 71 | + module.i64.const(0), |
| 72 | + module.i64.const(0) |
| 73 | + ) |
| 74 | + ), |
| 75 | + module.drop( |
| 76 | + module.atomic.notify( |
53 | 77 | module.i32.const(0), |
54 | | - module.i64.atomic.load16_u(0, |
55 | | - module.i32.const(0) |
56 | | - ) |
57 | | - ), |
58 | | - // i64 as u32 |
59 | | - module.i64.atomic.store32(0, |
60 | | - module.i32.const(0), |
61 | | - module.i64.atomic.load32_u(0, |
62 | | - module.i32.const(0) |
63 | | - ) |
64 | | - ), |
65 | | - // wait and notify |
66 | | - module.drop( |
67 | | - module.i32.atomic.wait( |
68 | | - module.i32.const(0), |
69 | | - module.i32.const(0), |
70 | | - module.i64.const(0) |
71 | | - ) |
72 | | - ), |
73 | | - module.drop( |
74 | | - module.i64.atomic.wait( |
75 | | - module.i32.const(0), |
76 | | - module.i64.const(0), |
77 | | - module.i64.const(0) |
78 | | - ) |
79 | | - ), |
80 | | - module.drop( |
81 | | - module.atomic.notify( |
82 | | - module.i32.const(0), |
83 | | - module.i32.const(0) |
84 | | - ) |
85 | | - ), |
86 | | - // fence |
87 | | - module.atomic.fence() |
88 | | - ])); |
89 | | - |
90 | | - module.setFeatures(Binaryen.Features.Atomics); |
91 | | - assert(module.validate()); |
92 | | - console.log(module.emitText()); |
93 | | -} |
| 78 | + module.i32.const(0) |
| 79 | + ) |
| 80 | + ), |
| 81 | + // fence |
| 82 | + module.atomic.fence() |
| 83 | +])); |
94 | 84 |
|
95 | | -Binaryen.ready.then(test); |
| 85 | +module.setFeatures(binaryen.Features.Atomics); |
| 86 | +assert(module.validate()); |
| 87 | +console.log(module.emitText()); |
0 commit comments