Skip to content

JIT: Remove optLoopCompactionFixupFallThrough - #97670

Merged
amanasifkhalid merged 4 commits into
dotnet:mainfrom
amanasifkhalid:optCompactLoops
Jan 30, 2024
Merged

JIT: Remove optLoopCompactionFixupFallThrough#97670
amanasifkhalid merged 4 commits into
dotnet:mainfrom
amanasifkhalid:optCompactLoops

Conversation

@amanasifkhalid

Copy link
Copy Markdown
Contributor

#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.

@ghostghost 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
Copy Markdown

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
Copy Markdown
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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch14,972,964+148
benchmarks.run_pgo.linux.arm64.checked.mch79,903,244-4,288
benchmarks.run_tiered.linux.arm64.checked.mch22,276,872+184
coreclr_tests.run.linux.arm64.checked.mch509,740,232+704
libraries.crossgen2.linux.arm64.checked.mch315,768+0
libraries.pmi.linux.arm64.checked.mch76,281,012+772
libraries_tests.run.linux.arm64.Release.mch400,018,960-4,964
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch165,110,104+308
realworld.run.linux.arm64.checked.mch15,918,288+112
FullOpts (-7,024 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch14,713,212+148
benchmarks.run_pgo.linux.arm64.checked.mch54,354,872-4,288
benchmarks.run_tiered.linux.arm64.checked.mch4,937,908+184
coreclr_tests.run.linux.arm64.checked.mch160,832,376+704
libraries.crossgen2.linux.arm64.checked.mch315,768+0
libraries.pmi.linux.arm64.checked.mch76,161,028+772
libraries_tests.run.linux.arm64.Release.mch183,280,056-4,964
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch151,612,828+308
realworld.run.linux.arm64.checked.mch15,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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.x64.checked.mch13,723,744+124
benchmarks.run_pgo.linux.x64.checked.mch69,144,788-14,029
benchmarks.run_tiered.linux.x64.checked.mch15,897,809+62
coreclr_tests.run.linux.x64.checked.mch403,316,719+982
libraries.crossgen2.linux.x64.checked.mch203,687-1
libraries.pmi.linux.x64.checked.mch60,405,907+582
libraries_tests.run.linux.x64.Release.mch348,249,945-4,058
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch132,684,063+428
realworld.run.linux.x64.checked.mch13,212,110+111
FullOpts (-15,799 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.x64.checked.mch13,459,811+124
benchmarks.run_pgo.linux.x64.checked.mch47,802,743-14,029
benchmarks.run_tiered.linux.x64.checked.mch3,639,425+62
coreclr_tests.run.linux.x64.checked.mch123,825,558+982
libraries.crossgen2.linux.x64.checked.mch203,687-1
libraries.pmi.linux.x64.checked.mch60,293,050+582
libraries_tests.run.linux.x64.Release.mch164,494,781-4,058
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch122,066,277+428
realworld.run.linux.x64.checked.mch12,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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch11,185,284+148
benchmarks.run_pgo.osx.arm64.checked.mch34,533,064+1,584
benchmarks.run_tiered.osx.arm64.checked.mch15,508,464+184
coreclr_tests.run.osx.arm64.checked.mch483,586,020+1,016
libraries.crossgen2.osx.arm64.checked.mch311,684+0
libraries.pmi.osx.arm64.checked.mch80,207,064-24
libraries_tests.run.osx.arm64.Release.mch313,700,576-1,948
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch163,153,084+188
realworld.run.osx.arm64.checked.mch15,075,948+132
FullOpts (+1,280 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch11,184,656+148
benchmarks.run_pgo.osx.arm64.checked.mch18,159,716+1,584
benchmarks.run_tiered.osx.arm64.checked.mch4,004,192+184
coreclr_tests.run.osx.arm64.checked.mch153,413,252+1,016
libraries.crossgen2.osx.arm64.checked.mch311,684+0
libraries.pmi.osx.arm64.checked.mch80,085,936-24
libraries_tests.run.osx.arm64.Release.mch111,962,988-1,948
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch149,999,392+188
realworld.run.osx.arm64.checked.mch14,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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch10,966,596+140
benchmarks.run_pgo.windows.arm64.checked.mch46,609,220-4,076
benchmarks.run_tiered.windows.arm64.checked.mch15,506,140+140
coreclr_tests.run.windows.arm64.checked.mch496,298,628+716
libraries.crossgen2.windows.arm64.checked.mch338,836+0
libraries.pmi.windows.arm64.checked.mch79,834,280+1,412
libraries_tests.run.windows.arm64.Release.mch326,696,628-3,704
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch171,564,828+284
realworld.run.windows.arm64.checked.mch15,891,320+116
FullOpts (-4,972 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch10,966,060+140
benchmarks.run_pgo.windows.arm64.checked.mch30,351,028-4,076
benchmarks.run_tiered.windows.arm64.checked.mch4,328,392+140
coreclr_tests.run.windows.arm64.checked.mch156,624,224+716
libraries.crossgen2.windows.arm64.checked.mch338,836+0
libraries.pmi.windows.arm64.checked.mch79,714,296+1,412
libraries_tests.run.windows.arm64.Release.mch123,222,780-3,704
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch158,411,116+284
realworld.run.windows.arm64.checked.mch15,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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.x64.checked.mch8,737,750-4
benchmarks.run_pgo.windows.x64.checked.mch35,778,033-6,318
benchmarks.run_tiered.windows.x64.checked.mch12,549,088+97
coreclr_tests.run.windows.x64.checked.mch392,964,649-153
libraries.crossgen2.windows.x64.checked.mch214,877-1
libraries.pmi.windows.x64.checked.mch61,646,281+1,038
libraries_tests.run.windows.x64.Release.mch278,843,071-3,828
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch137,561,184-698
realworld.run.windows.x64.checked.mch14,184,922+14
FullOpts (-9,853 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.x64.checked.mch8,737,387-4
benchmarks.run_pgo.windows.x64.checked.mch21,745,952-6,318
benchmarks.run_tiered.windows.x64.checked.mch3,453,351+97
coreclr_tests.run.windows.x64.checked.mch120,242,671-153
libraries.crossgen2.windows.x64.checked.mch214,877-1
libraries.pmi.windows.x64.checked.mch61,532,760+1,038
libraries_tests.run.windows.x64.Release.mch106,668,455-3,828
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch126,635,118-698
realworld.run.windows.x64.checked.mch13,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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.x86.checked.mch7,121,149+163
benchmarks.run_pgo.windows.x86.checked.mch45,137,639-11,164
benchmarks.run_tiered.windows.x86.checked.mch9,473,362+172
coreclr_tests.run.windows.x86.checked.mch309,359,021-436
libraries.crossgen2.windows.x86.checked.mch31,674,254-215
libraries.pmi.windows.x86.checked.mch49,133,274+839
libraries_tests.run.windows.x86.Release.mch184,746,965-2,954
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch103,724,167+293
realworld.run.windows.x86.checked.mch11,283,258+203
FullOpts (-13,099 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.windows.x86.checked.mch7,120,868+163
benchmarks.run_pgo.windows.x86.checked.mch38,525,273-11,164
benchmarks.run_tiered.windows.x86.checked.mch5,203,770+172
coreclr_tests.run.windows.x86.checked.mch107,563,444-436
libraries.crossgen2.windows.x86.checked.mch31,673,194-215
libraries.pmi.windows.x86.checked.mch49,038,041+839
libraries_tests.run.windows.x86.Release.mch87,446,925-2,954
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch95,044,106+293
realworld.run.windows.x86.checked.mch10,987,544+203

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.19% to -0.03%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
libraries.pmi.windows.arm64.checked.mch-0.01%
FullOpts (-0.18% to -0.00%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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
Copy Markdown
ContributorAuthor

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
Copy Markdown
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)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.arm.checked.mch14,773,010-14
benchmarks.run_pgo.linux.arm.checked.mch68,606,114-726
benchmarks.run_tiered.linux.arm.checked.mch18,109,340-14
coreclr_tests.run.linux.arm.checked.mch321,786,766+1,192
libraries.crossgen2.linux.arm.checked.mch213,944+8
libraries.pmi.linux.arm.checked.mch49,829,328+452
libraries_tests.run.linux.arm.Release.mch244,097,424-3,054
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch94,426,298+650
realworld.run.linux.arm.checked.mch13,618,802+24
FullOpts (-1,482 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run.linux.arm.checked.mch14,411,504-14
benchmarks.run_pgo.linux.arm.checked.mch55,932,312-726
benchmarks.run_tiered.linux.arm.checked.mch10,725,358-14
coreclr_tests.run.linux.arm.checked.mch109,314,330+1,192
libraries.crossgen2.linux.arm.checked.mch213,944+8
libraries.pmi.linux.arm.checked.mch49,723,104+452
libraries_tests.run.linux.arm.Release.mch122,244,916-3,054
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch84,355,560+650
realworld.run.linux.arm.checked.mch13,183,502+24

Details here


@jakobbotschjakobbotsch left a comment

Copy link
Copy Markdown
Member

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:mainJan 30, 2024
@amanasifkhalid
amanasifkhalid deleted the optCompactLoops branch January 30, 2024 21:53
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 1, 2024
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-CodeGen-coreclrCLR 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

@amanasifkhalid@ryujit-bot@jakobbotsch