-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
codegen: add a pass for late conversion of known modify ops to call atomicrmw #57010
base: master
Are you sure you want to change the base?
Conversation
Why is there such a large aotcompile.cpp diff? Looks unrelated |
It is mostly support code for this, since if you don't have the IR emitted for the target, then it has to use a loop&call, which isn't want people want to see, so we need to make sure to emit the target code too into all of the correct compile units. We could land some of it separately, but it wouldn't do anything (be mostly untested) until this landed |
8cd489b
to
666985c
Compare
…tomicrmw The ExpandAtomicModify can recognize our pseudo-intrinsic julia.atomicmodify and convert it into some of known atomicrmw expressions, or simplify it with more inlining, as applicable. This ensures that now our `@atomic` modify is as fast as `Threads.Atomic` for the cases we implement now.
666985c
to
c98b43f
Compare
Is this ready to merge? Edit: no. CI seems pretty unhappy with this currently. |
Also there's a merge conflict. |
Please review, but hold off on merging. I think there might be one other PR I try to merge first |
CI failures look real: Specifically the following seems to be a multithreading test that breaks with this PR:
|
The ExpandAtomicModify can recognize our pseudo-intrinsic julia.atomicmodify and convert it into some of known atomicrmw expressions, or simplify it with more inlining, as applicable. Ideally we could get this pass upstreamed, since there's nothing specific to julia about this pass, and LLVM's IR cannot express this quite correctly without making it a new intrinsic.
This ensures that now our
@atomic
modify is as fast asThreads.Atomic
!