https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95751
Bug ID: 95751 Summary: [aarch64] Consider using ldapr for __atomic_load_n(acquire) on ARMv8.3-RCPC Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: andysem at mail dot ru Target Milestone: --- ARMv8.3-RCPC extension adds new ldapr[b/h] instructions for Load-AcquirePC semantics that better matches C++ memory order semantics. In particular, the core ldar instructions will wait until the previous stlr, even on another address, completes on the same thread. The newer ldapr does not wait for the previous stlr to complete, unless it is performed on the same address. Consider using these new instructions in __atomic_load_n(consume/acquire) when -march=armv8.3 or higher is specified. Note that __atomic_load_n(relaxed) and __atomic_load_n(seq_cst) should stay unchanged.