-
-
Notifications
You must be signed in to change notification settings - Fork 491
Add lockfree atomic uint128_type CAS for x86 #6521
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add lockfree atomic uint128_type CAS for x86 #6521
Conversation
|
Can one of the admins verify this patch? |
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesCodacy stopped sending the deprecated coverage status on June 5th, 2024. Learn more |
|
Thanks for working on this! There are some compilation and inspect/formatting problems reported by the CIs. Would you be able to address those? |
|
The Windows CI's are unhappy for some reason (even the one using the Clang frontend). Could you please have a look? |
|
The macOS CI tests seem to be failing after running Error for quick reference: I was able to run the same command locally on my Macbook and it completed without error. I currently have it running |
|
@Dysrhythmic I think the solution to the compilation problem would be to create a new type while derving from |
|
@Dysrhythmic I still believe that the new |
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesFootnotes
|
df6852a to
aba5847
Compare
|
@Dysrhythmic I have squashed your commits and rebased the PR onto current top of master. This should resolve many of the CI issues reported before. |
|
@Dysrhythmic I still believe that the new type |
It looks like the Ideally I would be able to replace that with the new type like so: However, this will throw a compiler error due to a direct assignment to an atomic type at line 110: To bypass this issue my initial thought was to specialize So if I use this implementation then I believe I would need to rewrite many functions to use and expect references rather than values, which could get pretty messy and seems like the wrong path to take. |

Fixes #
Proposed Changes
HPX_HAVE_CXX11_STD_ATOMIC_128BIT_LOCKFREEuint128_typestruct fromtagged_ptr_pair.hppinto its own header fileuint128_type.hppfor increased modularityHPX_HAVE_CXX11_STD_ATOMIC_128BIT_LOCKFREEisn't defined, use specialized methods inlockfree_uint128_type.hpphpx/libs/core/concurrency/tests/unit/lockfree_128uint.cppctest --output-on-failure -R tests.unit.modules.concurrency.lockfree_128uint./bin/lockfree_128uint_testindicates the implementation is working as expectedAny background context you want to provide?
Next steps will be:
Checklist
Not all points below apply to all pull requests.