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. |
AndyAyersMS
left a comment
There was a problem hiding this comment.
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
BB33to be an ambiguous pred ofBB38, but it seems we should be able to consider it to be a "true" pred.)