microsoft / microsoft/STL

`<atomic>`: Distinguish load and store fence on ARM64

Open
#1,135 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

ARM64 performance
Dominant language
C++
Stars
11.2k
Forks
1.7k
Avg merge
4d 15h
Merged PRs (30d)
22

Description

arm has different barrier types for load and store barrier, for anything below acq_rel full barrier is superfluous.

Note that is is not fully superseded by #83, since there is atomic_thread_fence:
https://github.com/microsoft/STL/blob/12c684bba78f9b032050526abdebf14f58ca26a3/stl/inc/atomic#L169
https://github.com/microsoft/STL/blob/12c684bba78f9b032050526abdebf14f58ca26a3/stl/inc/atomic#L188-L190

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in stl/inc/atomic at the referenced atomic_thread_fence implementation, then review the ARM64 fence handling and issue #83. Determine how load and store orderings below acq_rel should select their respective barrier types; done means atomic_thread_fence no longer uses a superfluous full barrier for those cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
performance
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.