Skip to content
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: Remove optLoopCompactionFixupFallThrough #97670

Merged
merged 4 commits into from
Jan 30, 2024

Conversation

amanasifkhalid
Copy link
Member

#97488 removed the logic for maintaining implicit fallthrough for BBJ_COND blocks into their false targets via jump insertion, but otherwise left optLoopCompactionFixupFallThrough intact. This method also tries to maintain fallthrough behavior by reversing the conditional, if the next block is the true target; per #93020, we should defer condition reversals until block reordering, so we might as well get rid of optLoopCompactionFixupFallThrough. By removing this method altogether, we don't have to worry about rebuilding the DFS tree due to the flowgraph being modified, improving TP. This removal caused relatively dramatic diffs locally, which are reduced somewhat by reversing branches (when possible) when restoring implicit fallthrough before block reordering.

Thanks @jakobbotsch for pointing out we can remove this.

@ghost ghost assigned amanasifkhalid Jan 29, 2024
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 29, 2024
@ghost
Copy link

ghost commented Jan 29, 2024

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

#97488 removed the logic for maintaining implicit fallthrough for BBJ_COND blocks into their false targets via jump insertion, but otherwise left optLoopCompactionFixupFallThrough intact. This method also tries to maintain fallthrough behavior by reversing the conditional, if the next block is the true target; per #93020, we should defer condition reversals until block reordering, so we might as well get rid of optLoopCompactionFixupFallThrough. By removing this method altogether, we don't have to worry about rebuilding the DFS tree due to the flowgraph being modified, improving TP. This removal caused relatively dramatic diffs locally, which are reduced somewhat by reversing branches (when possible) when restoring implicit fallthrough before block reordering.

Thanks @jakobbotsch for pointing out we can remove this.

Author: amanasifkhalid
Assignees: amanasifkhalid
Labels:

area-CodeGen-coreclr

Milestone: -

@ryujit-bot
Copy link

Diff results for #97670

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,259,470 contexts (1,008,044 MinOpts, 1,251,426 FullOpts).

MISSED contexts: 159 (0.01%)

Overall (-7,024 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,972,964 +148
benchmarks.run_pgo.linux.arm64.checked.mch 79,903,244 -4,288
benchmarks.run_tiered.linux.arm64.checked.mch 22,276,872 +184
coreclr_tests.run.linux.arm64.checked.mch 509,740,232 +704
libraries.crossgen2.linux.arm64.checked.mch 315,768 +0
libraries.pmi.linux.arm64.checked.mch 76,281,012 +772
libraries_tests.run.linux.arm64.Release.mch 400,018,960 -4,964
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 165,110,104 +308
realworld.run.linux.arm64.checked.mch 15,918,288 +112
FullOpts (-7,024 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 14,713,212 +148
benchmarks.run_pgo.linux.arm64.checked.mch 54,354,872 -4,288
benchmarks.run_tiered.linux.arm64.checked.mch 4,937,908 +184
coreclr_tests.run.linux.arm64.checked.mch 160,832,376 +704
libraries.crossgen2.linux.arm64.checked.mch 315,768 +0
libraries.pmi.linux.arm64.checked.mch 76,161,028 +772
libraries_tests.run.linux.arm64.Release.mch 183,280,056 -4,964
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,612,828 +308
realworld.run.linux.arm64.checked.mch 15,336,748 +112

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,249,703 contexts (981,298 MinOpts, 1,268,405 FullOpts).

MISSED contexts: 134 (0.01%)

Overall (-15,799 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,723,744 +124
benchmarks.run_pgo.linux.x64.checked.mch 69,144,788 -14,029
benchmarks.run_tiered.linux.x64.checked.mch 15,897,809 +62
coreclr_tests.run.linux.x64.checked.mch 403,316,719 +982
libraries.crossgen2.linux.x64.checked.mch 203,687 -1
libraries.pmi.linux.x64.checked.mch 60,405,907 +582
libraries_tests.run.linux.x64.Release.mch 348,249,945 -4,058
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,684,063 +428
realworld.run.linux.x64.checked.mch 13,212,110 +111
FullOpts (-15,799 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,459,811 +124
benchmarks.run_pgo.linux.x64.checked.mch 47,802,743 -14,029
benchmarks.run_tiered.linux.x64.checked.mch 3,639,425 +62
coreclr_tests.run.linux.x64.checked.mch 123,825,558 +982
libraries.crossgen2.linux.x64.checked.mch 203,687 -1
libraries.pmi.linux.x64.checked.mch 60,293,050 +582
libraries_tests.run.linux.x64.Release.mch 164,494,781 -4,058
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 122,066,277 +428
realworld.run.linux.x64.checked.mch 12,823,228 +111

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,029,386 contexts (927,368 MinOpts, 1,102,018 FullOpts).

MISSED contexts: 109 (0.01%)

Overall (+1,280 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,185,284 +148
benchmarks.run_pgo.osx.arm64.checked.mch 34,533,064 +1,584
benchmarks.run_tiered.osx.arm64.checked.mch 15,508,464 +184
coreclr_tests.run.osx.arm64.checked.mch 483,586,020 +1,016
libraries.crossgen2.osx.arm64.checked.mch 311,684 +0
libraries.pmi.osx.arm64.checked.mch 80,207,064 -24
libraries_tests.run.osx.arm64.Release.mch 313,700,576 -1,948
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 163,153,084 +188
realworld.run.osx.arm64.checked.mch 15,075,948 +132
FullOpts (+1,280 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,184,656 +148
benchmarks.run_pgo.osx.arm64.checked.mch 18,159,716 +1,584
benchmarks.run_tiered.osx.arm64.checked.mch 4,004,192 +184
coreclr_tests.run.osx.arm64.checked.mch 153,413,252 +1,016
libraries.crossgen2.osx.arm64.checked.mch 311,684 +0
libraries.pmi.osx.arm64.checked.mch 80,085,936 -24
libraries_tests.run.osx.arm64.Release.mch 111,962,988 -1,948
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,999,392 +188
realworld.run.osx.arm64.checked.mch 14,511,996 +132

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,070,850 contexts (937,853 MinOpts, 1,132,997 FullOpts).

MISSED contexts: 139 (0.01%)

Overall (-4,972 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,966,596 +140
benchmarks.run_pgo.windows.arm64.checked.mch 46,609,220 -4,076
benchmarks.run_tiered.windows.arm64.checked.mch 15,506,140 +140
coreclr_tests.run.windows.arm64.checked.mch 496,298,628 +716
libraries.crossgen2.windows.arm64.checked.mch 338,836 +0
libraries.pmi.windows.arm64.checked.mch 79,834,280 +1,412
libraries_tests.run.windows.arm64.Release.mch 326,696,628 -3,704
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,564,828 +284
realworld.run.windows.arm64.checked.mch 15,891,320 +116
FullOpts (-4,972 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,966,060 +140
benchmarks.run_pgo.windows.arm64.checked.mch 30,351,028 -4,076
benchmarks.run_tiered.windows.arm64.checked.mch 4,328,392 +140
coreclr_tests.run.windows.arm64.checked.mch 156,624,224 +716
libraries.crossgen2.windows.arm64.checked.mch 338,836 +0
libraries.pmi.windows.arm64.checked.mch 79,714,296 +1,412
libraries_tests.run.windows.arm64.Release.mch 123,222,780 -3,704
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,411,116 +284
realworld.run.windows.arm64.checked.mch 15,327,340 +116

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,098,526 contexts (926,221 MinOpts, 1,172,305 FullOpts).

MISSED contexts: 138 (0.01%)

Overall (-9,853 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,737,750 -4
benchmarks.run_pgo.windows.x64.checked.mch 35,778,033 -6,318
benchmarks.run_tiered.windows.x64.checked.mch 12,549,088 +97
coreclr_tests.run.windows.x64.checked.mch 392,964,649 -153
libraries.crossgen2.windows.x64.checked.mch 214,877 -1
libraries.pmi.windows.x64.checked.mch 61,646,281 +1,038
libraries_tests.run.windows.x64.Release.mch 278,843,071 -3,828
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 137,561,184 -698
realworld.run.windows.x64.checked.mch 14,184,922 +14
FullOpts (-9,853 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x64.checked.mch 8,737,387 -4
benchmarks.run_pgo.windows.x64.checked.mch 21,745,952 -6,318
benchmarks.run_tiered.windows.x64.checked.mch 3,453,351 +97
coreclr_tests.run.windows.x64.checked.mch 120,242,671 -153
libraries.crossgen2.windows.x64.checked.mch 214,877 -1
libraries.pmi.windows.x64.checked.mch 61,532,760 +1,038
libraries_tests.run.windows.x64.Release.mch 106,668,455 -3,828
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,635,118 -698
realworld.run.windows.x64.checked.mch 13,798,313 +14

Details here


Assembly diffs for windows/x86 ran on linux/x86

Diffs are based on 2,290,733 contexts (838,165 MinOpts, 1,452,568 FullOpts).

MISSED contexts: base: 808 (0.04%), diff: 826 (0.04%)

Overall (-13,099 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,121,149 +163
benchmarks.run_pgo.windows.x86.checked.mch 45,137,639 -11,164
benchmarks.run_tiered.windows.x86.checked.mch 9,473,362 +172
coreclr_tests.run.windows.x86.checked.mch 309,359,021 -436
libraries.crossgen2.windows.x86.checked.mch 31,674,254 -215
libraries.pmi.windows.x86.checked.mch 49,133,274 +839
libraries_tests.run.windows.x86.Release.mch 184,746,965 -2,954
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,724,167 +293
realworld.run.windows.x86.checked.mch 11,283,258 +203
FullOpts (-13,099 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,120,868 +163
benchmarks.run_pgo.windows.x86.checked.mch 38,525,273 -11,164
benchmarks.run_tiered.windows.x86.checked.mch 5,203,770 +172
coreclr_tests.run.windows.x86.checked.mch 107,563,444 -436
libraries.crossgen2.windows.x86.checked.mch 31,673,194 -215
libraries.pmi.windows.x86.checked.mch 49,038,041 +839
libraries_tests.run.windows.x86.Release.mch 87,446,925 -2,954
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 95,044,106 +293
realworld.run.windows.x86.checked.mch 10,987,544 +203

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.19% to -0.03%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.10%
benchmarks.run_pgo.linux.arm64.checked.mch -0.19%
benchmarks.run_tiered.linux.arm64.checked.mch -0.08%
coreclr_tests.run.linux.arm64.checked.mch -0.03%
libraries.crossgen2.linux.arm64.checked.mch -0.03%
libraries.pmi.linux.arm64.checked.mch -0.08%
libraries_tests.run.linux.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.05%
realworld.run.linux.arm64.checked.mch -0.10%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%
FullOpts (-0.21% to -0.03%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch -0.10%
benchmarks.run_pgo.linux.arm64.checked.mch -0.21%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
coreclr_tests.run.linux.arm64.checked.mch -0.04%
libraries.crossgen2.linux.arm64.checked.mch -0.03%
libraries.pmi.linux.arm64.checked.mch -0.08%
libraries_tests.run.linux.arm64.Release.mch -0.14%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.05%
realworld.run.linux.arm64.checked.mch -0.10%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.17% to -0.03%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.10%
benchmarks.run_pgo.linux.x64.checked.mch -0.17%
benchmarks.run_tiered.linux.x64.checked.mch -0.10%
coreclr_tests.run.linux.x64.checked.mch -0.03%
libraries.crossgen2.linux.x64.checked.mch -0.03%
libraries.pmi.linux.x64.checked.mch -0.08%
libraries_tests.run.linux.x64.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch -0.10%
smoke_tests.nativeaot.linux.x64.checked.mch -0.03%
FullOpts (-0.18% to -0.03%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch -0.10%
benchmarks.run_pgo.linux.x64.checked.mch -0.18%
benchmarks.run_tiered.linux.x64.checked.mch -0.17%
coreclr_tests.run.linux.x64.checked.mch -0.04%
libraries.crossgen2.linux.x64.checked.mch -0.03%
libraries.pmi.linux.x64.checked.mch -0.08%
libraries_tests.run.linux.x64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch -0.11%
smoke_tests.nativeaot.linux.x64.checked.mch -0.03%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.14% to -0.02%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.12%
benchmarks.run_pgo.osx.arm64.checked.mch -0.14%
benchmarks.run_tiered.osx.arm64.checked.mch -0.10%
coreclr_tests.run.osx.arm64.checked.mch -0.02%
libraries.crossgen2.osx.arm64.checked.mch -0.03%
libraries.pmi.osx.arm64.checked.mch -0.09%
libraries_tests.run.osx.arm64.Release.mch -0.09%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.05%
realworld.run.osx.arm64.checked.mch -0.10%
FullOpts (-0.17% to -0.03%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch -0.12%
benchmarks.run_pgo.osx.arm64.checked.mch -0.17%
benchmarks.run_tiered.osx.arm64.checked.mch -0.17%
coreclr_tests.run.osx.arm64.checked.mch -0.04%
libraries.crossgen2.osx.arm64.checked.mch -0.03%
libraries.pmi.osx.arm64.checked.mch -0.09%
libraries_tests.run.osx.arm64.Release.mch -0.14%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.05%
realworld.run.osx.arm64.checked.mch -0.10%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.15% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.12%
benchmarks.run_pgo.windows.arm64.checked.mch -0.15%
benchmarks.run_tiered.windows.arm64.checked.mch -0.10%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.crossgen2.windows.arm64.checked.mch -0.03%
libraries.pmi.windows.arm64.checked.mch -0.08%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.05%
realworld.run.windows.arm64.checked.mch -0.10%
MinOpts (-0.01% to +0.00%)
Collection PDIFF
libraries.pmi.windows.arm64.checked.mch -0.01%
FullOpts (-0.18% to -0.00%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch -0.12%
benchmarks.run_pgo.windows.arm64.checked.mch -0.18%
benchmarks.run_tiered.windows.arm64.checked.mch -0.16%
coreclr_tests.run.windows.arm64.checked.mch -0.04%
libraries.crossgen2.windows.arm64.checked.mch -0.03%
libraries.pmi.windows.arm64.checked.mch -0.08%
libraries_tests.run.windows.arm64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.05%
realworld.run.windows.arm64.checked.mch -0.10%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.17% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x64.checked.mch -0.13%
benchmarks.run_pgo.windows.x64.checked.mch -0.17%
benchmarks.run_tiered.windows.x64.checked.mch -0.11%
coreclr_tests.run.windows.x64.checked.mch -0.02%
libraries.crossgen2.windows.x64.checked.mch -0.04%
libraries.pmi.windows.x64.checked.mch -0.08%
libraries_tests.run.windows.x64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.05%
realworld.run.windows.x64.checked.mch -0.11%
FullOpts (-0.19% to -0.00%)
Collection PDIFF
benchmarks.run.windows.x64.checked.mch -0.13%
benchmarks.run_pgo.windows.x64.checked.mch -0.19%
benchmarks.run_tiered.windows.x64.checked.mch -0.18%
coreclr_tests.run.windows.x64.checked.mch -0.04%
libraries.crossgen2.windows.x64.checked.mch -0.04%
libraries.pmi.windows.x64.checked.mch -0.08%
libraries_tests.run.windows.x64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.05%
realworld.run.windows.x64.checked.mch -0.11%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.21% to -0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm64.checked.mch -0.03%
benchmarks.run_tiered.linux.arm64.checked.mch -0.08%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%
libraries.pmi.linux.arm64.checked.mch -0.08%
realworld.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.05%
benchmarks.run_pgo.linux.arm64.checked.mch -0.21%
libraries.crossgen2.linux.arm64.checked.mch -0.03%
libraries_tests.run.linux.arm64.Release.mch -0.14%
benchmarks.run.linux.arm64.checked.mch -0.10%
FullOpts (-0.24% to -0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm64.checked.mch -0.05%
benchmarks.run_tiered.linux.arm64.checked.mch -0.15%
smoke_tests.nativeaot.linux.arm64.checked.mch -0.03%
libraries.pmi.linux.arm64.checked.mch -0.08%
realworld.run.linux.arm64.checked.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.05%
benchmarks.run_pgo.linux.arm64.checked.mch -0.24%
libraries.crossgen2.linux.arm64.checked.mch -0.03%
libraries_tests.run.linux.arm64.Release.mch -0.18%
benchmarks.run.linux.arm64.checked.mch -0.10%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.20% to -0.03%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch -0.10%
coreclr_tests.run.linux.x64.checked.mch -0.03%
libraries_tests.run.linux.x64.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
benchmarks.run.linux.x64.checked.mch -0.10%
realworld.run.linux.x64.checked.mch -0.11%
libraries.crossgen2.linux.x64.checked.mch -0.04%
benchmarks.run_pgo.linux.x64.checked.mch -0.20%
smoke_tests.nativeaot.linux.x64.checked.mch -0.03%
libraries.pmi.linux.x64.checked.mch -0.09%
FullOpts (-0.22% to -0.03%)
Collection PDIFF
benchmarks.run_tiered.linux.x64.checked.mch -0.18%
coreclr_tests.run.linux.x64.checked.mch -0.05%
libraries_tests.run.linux.x64.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
benchmarks.run.linux.x64.checked.mch -0.10%
realworld.run.linux.x64.checked.mch -0.11%
libraries.crossgen2.linux.x64.checked.mch -0.04%
benchmarks.run_pgo.linux.x64.checked.mch -0.22%
smoke_tests.nativeaot.linux.x64.checked.mch -0.03%
libraries.pmi.linux.x64.checked.mch -0.09%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.12% to -0.03%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.06%
benchmarks.run_tiered.linux.arm.checked.mch -0.09%
coreclr_tests.run.linux.arm.checked.mch -0.03%
libraries.crossgen2.linux.arm.checked.mch -0.04%
libraries.pmi.linux.arm.checked.mch -0.09%
libraries_tests.run.linux.arm.Release.mch -0.12%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.06%
realworld.run.linux.arm.checked.mch -0.10%
FullOpts (-0.15% to -0.04%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch -0.08%
benchmarks.run_pgo.linux.arm.checked.mch -0.06%
benchmarks.run_tiered.linux.arm.checked.mch -0.10%
coreclr_tests.run.linux.arm.checked.mch -0.05%
libraries.crossgen2.linux.arm.checked.mch -0.04%
libraries.pmi.linux.arm.checked.mch -0.09%
libraries_tests.run.linux.arm.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.06%
realworld.run.linux.arm.checked.mch -0.10%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.16% to -0.03%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.15%
benchmarks.run_pgo.windows.x86.checked.mch -0.15%
benchmarks.run_tiered.windows.x86.checked.mch -0.16%
coreclr_tests.run.windows.x86.checked.mch -0.03%
libraries.crossgen2.windows.x86.checked.mch -0.05%
libraries.pmi.windows.x86.checked.mch -0.10%
libraries_tests.run.windows.x86.Release.mch -0.15%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.06%
realworld.run.windows.x86.checked.mch -0.12%
FullOpts (-0.19% to -0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch -0.15%
benchmarks.run_pgo.windows.x86.checked.mch -0.16%
benchmarks.run_tiered.windows.x86.checked.mch -0.19%
coreclr_tests.run.windows.x86.checked.mch -0.05%
libraries.crossgen2.windows.x86.checked.mch -0.05%
libraries.pmi.windows.x86.checked.mch -0.10%
libraries_tests.run.windows.x86.Release.mch -0.19%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.06%
realworld.run.windows.x86.checked.mch -0.12%

Details here


@amanasifkhalid
Copy link
Member Author

cc @dotnet/jit-contrib, @AndyAyersMS PTAL. Some size improvements/regressions likely stemming from the removed branch reversal. We get a nice TP win from this.

@ryujit-bot
Copy link

Diff results for #97670

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,053,507 contexts (830,101 MinOpts, 1,223,406 FullOpts).

MISSED contexts: 71,368 (3.36%)

Overall (-1,482 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,773,010 -14
benchmarks.run_pgo.linux.arm.checked.mch 68,606,114 -726
benchmarks.run_tiered.linux.arm.checked.mch 18,109,340 -14
coreclr_tests.run.linux.arm.checked.mch 321,786,766 +1,192
libraries.crossgen2.linux.arm.checked.mch 213,944 +8
libraries.pmi.linux.arm.checked.mch 49,829,328 +452
libraries_tests.run.linux.arm.Release.mch 244,097,424 -3,054
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 94,426,298 +650
realworld.run.linux.arm.checked.mch 13,618,802 +24
FullOpts (-1,482 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,411,504 -14
benchmarks.run_pgo.linux.arm.checked.mch 55,932,312 -726
benchmarks.run_tiered.linux.arm.checked.mch 10,725,358 -14
coreclr_tests.run.linux.arm.checked.mch 109,314,330 +1,192
libraries.crossgen2.linux.arm.checked.mch 213,944 +8
libraries.pmi.linux.arm.checked.mch 49,723,104 +452
libraries_tests.run.linux.arm.Release.mch 122,244,916 -3,054
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 84,355,560 +650
realworld.run.linux.arm.checked.mch 13,183,502 +24

Details here


Copy link
Member

@jakobbotsch jakobbotsch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice cleanup.

@amanasifkhalid amanasifkhalid merged commit 01bf90c into dotnet:main Jan 30, 2024
125 of 128 checks passed
@amanasifkhalid amanasifkhalid deleted the optCompactLoops branch January 30, 2024 21:53
@github-actions github-actions bot locked and limited conversation to collaborators Mar 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants