Commit 203ba23
authored
[LoongArch] Improve codegen for atomic ops (#67391)
This PR improves memory barriers generated by atomic operations.
Memory barrier semantics of LL/SC:
```
LL: <memory-barrier> + <load-exclusive>
SC: <store-conditional> + <memory-barrier>
```
Changes:
* Remove unnecessary memory barriers before LL and between LL/SC.
* Fix acquire semantics. (If the SC instruction is not executed, then
the guarantee of acquiring semantics cannot be ensured. Therefore, an
acquire barrier needs to be generated when memory ordering includes an
acquire operation.)1 parent a157e79 commit 203ba23
File tree
8 files changed
+401
-152
lines changed- llvm
- lib/Target/LoongArch
- test/CodeGen/LoongArch
- ir-instruction
- unittests/Target/LoongArch
8 files changed
+401
-152
lines changedLines changed: 19 additions & 31 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
156 | | - | |
157 | | - | |
158 | 156 | | |
159 | 157 | | |
160 | | - | |
161 | | - | |
162 | 158 | | |
163 | 159 | | |
164 | 160 | | |
165 | 161 | | |
166 | | - | |
167 | | - | |
168 | 162 | | |
169 | 163 | | |
170 | 164 | | |
| |||
251 | 245 | | |
252 | 246 | | |
253 | 247 | | |
254 | | - | |
255 | | - | |
256 | 248 | | |
257 | 249 | | |
258 | | - | |
259 | | - | |
260 | 250 | | |
261 | 251 | | |
262 | 252 | | |
263 | 253 | | |
264 | 254 | | |
265 | 255 | | |
266 | 256 | | |
267 | | - | |
268 | | - | |
269 | 257 | | |
270 | 258 | | |
271 | 259 | | |
| |||
372 | 360 | | |
373 | 361 | | |
374 | 362 | | |
375 | | - | |
376 | 363 | | |
377 | 364 | | |
378 | 365 | | |
379 | 366 | | |
380 | 367 | | |
381 | 368 | | |
382 | | - | |
383 | | - | |
| 369 | + | |
384 | 370 | | |
385 | 371 | | |
386 | 372 | | |
387 | 373 | | |
388 | 374 | | |
389 | 375 | | |
390 | | - | |
391 | | - | |
| 376 | + | |
392 | 377 | | |
393 | 378 | | |
394 | 379 | | |
| |||
402 | 387 | | |
403 | 388 | | |
404 | 389 | | |
405 | | - | |
406 | 390 | | |
407 | 391 | | |
408 | 392 | | |
409 | | - | |
410 | 393 | | |
411 | 394 | | |
412 | 395 | | |
| |||
463 | 446 | | |
464 | 447 | | |
465 | 448 | | |
466 | | - | |
467 | 449 | | |
468 | 450 | | |
469 | 451 | | |
| |||
472 | 454 | | |
473 | 455 | | |
474 | 456 | | |
475 | | - | |
476 | | - | |
477 | | - | |
478 | | - | |
479 | 457 | | |
480 | 458 | | |
481 | 459 | | |
482 | 460 | | |
483 | 461 | | |
484 | 462 | | |
485 | 463 | | |
486 | | - | |
487 | 464 | | |
488 | 465 | | |
489 | 466 | | |
| |||
535 | 512 | | |
536 | 513 | | |
537 | 514 | | |
538 | | - | |
539 | 515 | | |
540 | 516 | | |
541 | 517 | | |
542 | 518 | | |
543 | | - | |
544 | 519 | | |
545 | 520 | | |
546 | 521 | | |
| |||
573 | 548 | | |
574 | 549 | | |
575 | 550 | | |
576 | | - | |
577 | 551 | | |
578 | 552 | | |
579 | 553 | | |
580 | 554 | | |
581 | 555 | | |
582 | | - | |
583 | 556 | | |
584 | 557 | | |
585 | 558 | | |
| |||
598 | 571 | | |
599 | 572 | | |
600 | 573 | | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
601 | 589 | | |
602 | | - | |
603 | | - | |
| 590 | + | |
| 591 | + | |
604 | 592 | | |
605 | 593 | | |
606 | 594 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1792 | 1792 | | |
1793 | 1793 | | |
1794 | 1794 | | |
1795 | | - | |
| 1795 | + | |
1796 | 1796 | | |
1797 | 1797 | | |
1798 | 1798 | | |
| |||
1882 | 1882 | | |
1883 | 1883 | | |
1884 | 1884 | | |
1885 | | - | |
1886 | | - | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
| 1896 | + | |
| 1897 | + | |
| 1898 | + | |
| 1899 | + | |
| 1900 | + | |
| 1901 | + | |
| 1902 | + | |
1887 | 1903 | | |
1888 | 1904 | | |
1889 | 1905 | | |
1890 | 1906 | | |
1891 | | - | |
1892 | | - | |
1893 | 1907 | | |
1894 | 1908 | | |
1895 | 1909 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
37 | 36 | | |
38 | 37 | | |
39 | 38 | | |
40 | 39 | | |
41 | 40 | | |
42 | 41 | | |
43 | | - | |
| 42 | + | |
44 | 43 | | |
45 | 44 | | |
46 | 45 | | |
| |||
86 | 85 | | |
87 | 86 | | |
88 | 87 | | |
89 | | - | |
90 | 88 | | |
91 | 89 | | |
92 | 90 | | |
93 | 91 | | |
94 | 92 | | |
95 | 93 | | |
96 | | - | |
| 94 | + | |
97 | 95 | | |
98 | 96 | | |
99 | 97 | | |
| |||
127 | 125 | | |
128 | 126 | | |
129 | 127 | | |
130 | | - | |
131 | 128 | | |
132 | 129 | | |
133 | 130 | | |
134 | 131 | | |
135 | 132 | | |
136 | 133 | | |
137 | | - | |
| 134 | + | |
138 | 135 | | |
139 | 136 | | |
140 | 137 | | |
| |||
166 | 163 | | |
167 | 164 | | |
168 | 165 | | |
169 | | - | |
170 | 166 | | |
171 | 167 | | |
172 | 168 | | |
173 | 169 | | |
174 | 170 | | |
175 | 171 | | |
176 | | - | |
| 172 | + | |
177 | 173 | | |
178 | 174 | | |
179 | 175 | | |
| |||
221 | 217 | | |
222 | 218 | | |
223 | 219 | | |
224 | | - | |
225 | 220 | | |
226 | 221 | | |
227 | 222 | | |
228 | 223 | | |
229 | 224 | | |
230 | 225 | | |
231 | | - | |
| 226 | + | |
232 | 227 | | |
233 | 228 | | |
234 | 229 | | |
| |||
279 | 274 | | |
280 | 275 | | |
281 | 276 | | |
282 | | - | |
283 | 277 | | |
284 | 278 | | |
285 | 279 | | |
286 | 280 | | |
287 | 281 | | |
288 | 282 | | |
289 | | - | |
| 283 | + | |
290 | 284 | | |
291 | 285 | | |
292 | 286 | | |
| |||
325 | 319 | | |
326 | 320 | | |
327 | 321 | | |
328 | | - | |
329 | 322 | | |
330 | 323 | | |
331 | 324 | | |
332 | 325 | | |
333 | 326 | | |
334 | 327 | | |
335 | | - | |
| 328 | + | |
336 | 329 | | |
337 | 330 | | |
338 | 331 | | |
| |||
369 | 362 | | |
370 | 363 | | |
371 | 364 | | |
372 | | - | |
373 | 365 | | |
374 | 366 | | |
375 | 367 | | |
376 | 368 | | |
377 | 369 | | |
378 | 370 | | |
379 | | - | |
| 371 | + | |
380 | 372 | | |
381 | 373 | | |
382 | 374 | | |
| |||
0 commit comments