|
1 | 1 | ;; Interleaving stores |
2 | | -(module $Mem |
| 2 | +(module $Mem1 |
3 | 3 | (memory (export "shared") 1 1 shared) |
4 | 4 | ) |
5 | | -(register "mem" $Mem) |
| 5 | +(register "mem" $Mem1) |
6 | 6 |
|
7 | | -(thread $T1 (shared (module $Mem)) |
| 7 | +(thread $T1 (shared (module $Mem1)) |
| 8 | + (register "mem" $Mem1) |
8 | 9 | (module |
9 | 10 | (memory (import "mem" "shared") 1 1 shared) |
10 | 11 | (func (export "run") |
|
17 | 18 | (invoke "run") |
18 | 19 | ) |
19 | 20 |
|
20 | | -(thread $T2 (shared (module $Mem)) |
| 21 | +(thread $T2 (shared (module $Mem1)) |
| 22 | + (register "mem" $Mem1) |
21 | 23 | (module |
22 | 24 | (memory (import "mem" "shared") 1 1 shared) |
23 | 25 | (func (export "run") |
|
51 | 53 | ) |
52 | 54 |
|
53 | 55 | ;; Critical section guarding an unordered memory access |
54 | | -(module $Mem |
| 56 | +(module $Mem2 |
55 | 57 | (memory (export "shared") 1 1 shared) |
56 | 58 | ) |
57 | | -(register "mem" $Mem) |
| 59 | +(register "mem" $Mem2) |
| 60 | + |
| 61 | +(thread $write (shared (module $Mem2)) |
| 62 | + (register "mem" $Mem2) |
58 | 63 |
|
59 | | -(thread $writer (shared (module $Mem)) |
60 | 64 | (module |
61 | 65 | (memory (import "mem" "shared") 1 1 shared) |
62 | 66 | (func (export "run") |
|
69 | 73 | (invoke "run") |
70 | 74 | ) |
71 | 75 |
|
72 | | -(thread $reader (shared (module $Mem)) |
| 76 | +(thread $read (shared (module $Mem2)) |
| 77 | + (register "mem" $Mem2) |
| 78 | + |
73 | 79 | (module |
74 | 80 | (memory (import "mem" "shared") 1 1 shared) |
75 | 81 | (func (export "run") |
|
83 | 89 | (invoke "run") |
84 | 90 | ) |
85 | 91 |
|
86 | | -(wait $writer) |
87 | | -(wait $reader) |
| 92 | +(wait $write) |
| 93 | +(wait $read) |
88 | 94 |
|
89 | 95 | (module |
90 | 96 | (memory (import "mem" "shared") 1 1 shared) |
|
104 | 110 | ) |
105 | 111 |
|
106 | 112 | ;; Similar to above, critical section guarding a flag |
107 | | -(module $Mem |
| 113 | +(module $Mem3 |
108 | 114 | (memory (export "shared") 1 1 shared) |
109 | 115 | ) |
110 | | -(register "mem" $Mem) |
| 116 | +(register "mem" $Mem3) |
| 117 | + |
| 118 | +(thread $write_flag (shared (module $Mem3)) |
| 119 | + (register "mem" $Mem3) |
111 | 120 |
|
112 | | -(thread $writer (shared (module $Mem)) |
113 | 121 | (module |
114 | 122 | (memory (import "mem" "shared") 1 1 shared) |
115 | 123 | (func (export "run") |
|
130 | 138 | (invoke "run") |
131 | 139 | ) |
132 | 140 |
|
133 | | -(thread $reader (shared (module $Mem)) |
| 141 | +(thread $read_flag (shared (module $Mem3)) |
| 142 | + (register "mem" $Mem3) |
| 143 | + |
134 | 144 | (module |
135 | 145 | (memory (import "mem" "shared") 1 1 shared) |
136 | 146 | (func (export "run") |
|
149 | 159 | (invoke "run") |
150 | 160 | ) |
151 | 161 |
|
152 | | -(wait $writer) |
153 | | -(wait $reader) |
| 162 | +(wait $write_flag) |
| 163 | +(wait $read_flag) |
154 | 164 |
|
155 | 165 | (module |
156 | 166 | (memory (import "mem" "shared") 1 1 shared) |
|
170 | 180 | ) |
171 | 181 |
|
172 | 182 | ;; Spinlock |
173 | | -(module $Mem |
| 183 | +(module $Mem4 |
174 | 184 | ;; Address 0 - lock |
175 | 185 | ;; Address 4 - payload |
176 | 186 | (memory (export "shared") 1 1 shared) |
177 | 187 | ) |
178 | | -(register "mem" $Mem) |
| 188 | +(register "mem" $Mem4) |
179 | 189 |
|
180 | 190 | ;; Add 1 to the counter atomically |
181 | | -(thread $addOne (shared (module $Mem)) |
| 191 | +(thread $addOne (shared (module $Mem4)) |
| 192 | + (register "mem" $Mem4) |
| 193 | + |
182 | 194 | (module |
183 | 195 | (memory (import "mem" "shared") 1 1 shared) |
184 | 196 |
|
|
213 | 225 | ) |
214 | 226 |
|
215 | 227 | ;; Add 10 to the counter atomically |
216 | | -(thread $addTen (shared (module $Mem)) |
| 228 | +(thread $addTen (shared (module $Mem4)) |
| 229 | + (register "mem" $Mem4) |
| 230 | + |
217 | 231 | (module |
218 | 232 | (memory (import "mem" "shared") 1 1 shared) |
219 | 233 |
|
|
267 | 281 | ) |
268 | 282 |
|
269 | 283 | ;; independent reads of independent writes |
270 | | -(module $Mem |
| 284 | +(module $Mem5 |
271 | 285 | (memory (export "shared") 1 1 shared) |
272 | 286 | ) |
273 | | -(register "mem" $Mem) |
| 287 | +(register "mem" $Mem5) |
| 288 | + |
| 289 | +(thread $writeX (shared (module $Mem5)) |
| 290 | + (register "mem" $Mem5) |
274 | 291 |
|
275 | | -(thread $writerX (shared (module $Mem)) |
276 | 292 | (module |
277 | 293 | (memory (import "mem" "shared") 1 1 shared) |
278 | 294 | (func (export "run") |
|
283 | 299 | (invoke "run") |
284 | 300 | ) |
285 | 301 |
|
286 | | -(thread $writerY (shared (module $Mem)) |
| 302 | +(thread $writeY (shared (module $Mem5)) |
| 303 | + (register "mem" $Mem5) |
| 304 | + |
287 | 305 | (module |
288 | 306 | (memory (import "mem" "shared") 1 1 shared) |
289 | 307 | (func (export "run") |
|
294 | 312 | (invoke "run") |
295 | 313 | ) |
296 | 314 |
|
297 | | -(thread $reader1 (shared (module $Mem)) |
| 315 | +(thread $read1 (shared (module $Mem5)) |
| 316 | + (register "mem" $Mem5) |
| 317 | + |
298 | 318 | (module |
299 | 319 | (memory (import "mem" "shared") 1 1 shared) |
300 | 320 | (func (export "run") |
|
307 | 327 | (invoke "run") |
308 | 328 | ) |
309 | 329 |
|
310 | | -(thread $reader2 (shared (module $Mem)) |
| 330 | +(thread $read2 (shared (module $Mem5)) |
| 331 | + (register "mem" $Mem5) |
| 332 | + |
311 | 333 | (module |
312 | 334 | (memory (import "mem" "shared") 1 1 shared) |
313 | 335 | (func (export "run") |
|
320 | 342 | (invoke "run") |
321 | 343 | ) |
322 | 344 |
|
323 | | -(wait $writerX) |
324 | | -(wait $writerY) |
325 | | -(wait $reader1) |
326 | | -(wait $reader2) |
| 345 | +(wait $writeX) |
| 346 | +(wait $writeY) |
| 347 | +(wait $read1) |
| 348 | +(wait $read2) |
327 | 349 |
|
328 | 350 | (module |
329 | 351 | (memory (import "mem" "shared") 1 1 shared) |
|
0 commit comments