-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Rewrite InterlockedExchange128_nf with intrinsics on clang #1509
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
Conversation
|
Maybe fixes #1491 |
Co-authored-by: Casey Carter <cartec69@gmail.com>
|
Okay went through all the steps of actually compiling the STL and then a test program and testing it on the Surface Pro X again. I also looked at the new codegen and it seems right. |
... and make `_Dest` be `const` while I'm here.
CaseyCarter
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
FYI: I wanted to apply a small refactor to reduce duplication in the not-clang and not-ARM64 cases, which quickly turned into restoring the original code on the #else branch. I also made _Dest be const in the workaround path.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Thanks for fixing and validating this! 🛠️ 😸 |
I'm not sure the
alignas(16)on the__int128is strictly necessary.I'm also not 100% sure this is correct, though all the tests I ran on my Surface Pro X passed.
@BillyONeal @AlexGuteniev bat signals.
The codegen also seems right:
https://godbolt.org/z/1d8MnT vs