-
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
JIT: Don't use addressing modes for volatile loads for gc types #70794
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Detailsnull
|
/azp run runtime-coreclr outerloop, runtime-coreclr jitstress, runtime-coreclr jitstressregs, runtime-coreclr gcstress0x3-gcstress0xc |
Azure Pipelines successfully started running 4 pipeline(s). |
/azp run runtime-coreclr outerloop, runtime-coreclr jitstress, runtime-coreclr jitstressregs, runtime-coreclr gcstress0x3-gcstress0xc |
Azure Pipelines successfully started running 4 pipeline(s). |
…ldar # Conflicts: # src/coreclr/scripts/superpmi_diffs.py
/azp run runtime-coreclr outerloop, runtime-coreclr jitstress, runtime-coreclr jitstressregs, runtime-coreclr gcstress0x3-gcstress0xc |
Diff is a size regression as expected: https://dev.azure.com/dnceng-public/public/_build/results?buildId=355867&view=ms.vss-build-web.run-extensions-tab E.g. - mov w2, #0xD1FFAB1E
- dmb ish
- stp w2, w1, [x0, #0x34]
+ add x2, x0, #52
+ mov w3, #0xD1FFAB1E
+ stlr w3, [x2]
+ str w1, [x0, #0x38]
ldp fp, lr, [sp], #0x10
ret lr
-;Total bytes of code 28
+;Total bytes of code 32 We no longer can merge two stores with Another kind of size regressions where no longer can use addressing modes becuase But overall it should be a perf win because memory barriers are heavy. PTAL @AndyAyersMS |
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.
Did you get a chance to try it out on this case where it should help perf? #87194 (comment)
If not, I can do it.
so 11% improvement on |
Lots of benchmarks regressed because of this PR, but that is expected - it was a BDN issue: BDN uses volatile to store results of benchmarks in a loop so we optimized the "overhead" part of benchmarks, there was an thread discussing it somewhere.. |
No description provided.