-
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: Generalize jump threading very slightly #98107
Conversation
If the dominator is a direct predecessor then it should be ok to jump thread its direct edge, even if the other edge also reaches.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsIf the dominator is a direct predecessor then it should be ok to jump thread its direct edge, even if the other edge also reaches. I think.
|
Diff results for #98107Assembly diffsAssembly diffs for linux/x64 ran on windows/x64Diffs are based on 1,621,200 contexts (360,162 MinOpts, 1,261,038 FullOpts). MISSED contexts: base: 2,647 (0.16%), diff: 2,650 (0.16%) Overall (-742 bytes)
FullOpts (-742 bytes)
Assembly diffs for osx/arm64 ran on windows/x64Diffs are based on 1,733,615 contexts (561,303 MinOpts, 1,172,312 FullOpts). MISSED contexts: base: 2,902 (0.17%), diff: 2,906 (0.17%) Overall (-6,596 bytes)
FullOpts (-6,596 bytes)
Assembly diffs for windows/x64 ran on windows/x64Diffs are based on 1,999,660 contexts (587,594 MinOpts, 1,412,066 FullOpts). MISSED contexts: base: 3,225 (0.16%), diff: 3,228 (0.16%) Overall (-4,484 bytes)
FullOpts (-4,484 bytes)
Details here Assembly diffs for linux/arm ran on windows/x86Diffs are based on 1,449,677 contexts (345,734 MinOpts, 1,103,943 FullOpts). MISSED contexts: 55,309 (3.68%) Overall (-2,852 bytes)
FullOpts (-2,852 bytes)
Assembly diffs for windows/x86 ran on windows/x86Diffs are based on 1,625,054 contexts (327,626 MinOpts, 1,297,428 FullOpts). MISSED contexts: base: 4,647 (0.29%), diff: 4,685 (0.29%) Overall (-2,380 bytes)
FullOpts (-2,380 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64Overall (-0.04% to -0.00%)
FullOpts (-0.05% to -0.00%)
Throughput diffs for linux/x64 ran on windows/x64Overall (-0.06% to -0.00%)
FullOpts (-0.07% to -0.00%)
Throughput diffs for osx/arm64 ran on windows/x64Overall (-0.02% to -0.00%)
FullOpts (-0.04% to -0.00%)
Throughput diffs for windows/arm64 ran on windows/x64Overall (-0.05% to -0.00%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.06% to -0.00%)
Throughput diffs for windows/x64 ran on windows/x64Overall (-0.03% to -0.00%)
FullOpts (-0.03% to -0.00%)
Details here Throughput diffs for linux/arm ran on windows/x86Overall (-0.04% to -0.00%)
FullOpts (-0.04% to -0.00%)
Throughput diffs for windows/x86 ran on windows/x86Overall (-0.05% to -0.00%)
FullOpts (-0.06% to -0.00%)
Details here Throughput diffs for linux/arm64 ran on linux/x64Overall (-0.03% to -0.00%)
FullOpts (-0.03% to -0.00%)
Throughput diffs for linux/x64 ran on linux/x64Overall (-0.05% to -0.00%)
FullOpts (-0.06% to -0.00%)
Details here |
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn |
Azure Pipelines successfully started running 3 pipeline(s). |
cc @dotnet/jit-contrib PTAL @AndyAyersMS. Should be ready, pending CI. Just something minor I noticed while looking at the other example. Diffs are somewhat mixed, though a lot of the benchmarks.run_pgo regressions look to be a repeated one in the same function. |
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.
Thanks for spotting this!
Failures look to be known. |
If the dominator is a direct predecessor then it should be ok to jump thread its direct edge, even if the other edge also reaches. I think.
(Noticed this while looking at the case in #98096 (comment), where we considered
BB33
to be an ambiguous pred ofBB38
, but it seems we should be able to consider it to be a "true" pred.)