-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Generalize Arm64 ldr/str to ldp/stp optimization #81278
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue Details#77540 introduced a JIT peephole optimization to convert consecutive ldr/str instructions to ldp/stp. It was limited to avoiding this optimization when either of the two ldr/str represented lclvar, which requires more work to properly handle the GC effects. See #77540 (review) for more discussion. This issue tracks generalizing the optimization to handle the lclvar cases.
|
Regarding the lclvar case, |
#85032 fixes the general code except prolog/epilog and unwind code. I will leave this issue open. |
Just to experiment, I tried to comment below lines and see lot of methods improved for benchmarks collection. runtime/src/coreclr/jit/emitarm64.cpp Lines 16648 to 16653 in 049acec
|
#77540 introduced a JIT peephole optimization to convert consecutive ldr/str instructions to ldp/stp. It was limited to avoiding this optimization when either of the two ldr/str represented lclvar, which requires more work to properly handle the GC effects.
See #77540 (review) for more discussion.
This issue tracks generalizing the optimization to handle the lclvar cases.
Also, the optimization was restricted to not work in prologs or epilogs, to avoid affecting unwind codes. There are two potential improvements here:
The text was updated successfully, but these errors were encountered: