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: Generalize FlowGraphNaturalLoop::AnalyzeIteration #97327

Merged
merged 1 commit into from
Jan 23, 2024

Conversation

jakobbotsch
Copy link
Member

Consider all exit edges as potential tests on a IV variable, and try to recognize induction from those. Previously we looked only at the lexically bottom most block.

Overall this unlocks only a pretty minor number of new cases which then leads to a bit more cloning. Size regressions are expected because of that.

Based on #97325. Should unblock #97191.

Consider all exit edges as potential tests on a IV variable, and try to
recognize induction from those. Previously we looked only at the
lexically bottom most block.

Overall this unlocks only a pretty minor number of new cases which then
leads to a bit more cloning. Size regressions are expected because of
that.
@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 22, 2024
@ghost ghost assigned jakobbotsch Jan 22, 2024
@ghost
Copy link

ghost commented Jan 22, 2024

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

Issue Details

Consider all exit edges as potential tests on a IV variable, and try to recognize induction from those. Previously we looked only at the lexically bottom most block.

Overall this unlocks only a pretty minor number of new cases which then leads to a bit more cloning. Size regressions are expected because of that.

Based on #97325. Should unblock #97191.

Author: jakobbotsch
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@kunalspathak
Copy link
Member

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,501,261 contexts (1,003,806 MinOpts, 1,497,455 FullOpts).

MISSED contexts: base: 3,546 (0.14%), diff: 3,956 (0.16%)

Overall (+654,368 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch 509,785,008 +3,556
libraries.crossgen2.linux.arm64.checked.mch 55,736,760 -384
libraries.pmi.linux.arm64.checked.mch 75,995,136 +60
libraries_tests.run.linux.arm64.Release.mch 380,612,024 +651,896
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 162,531,948 -888
smoke_tests.nativeaot.linux.arm64.checked.mch 2,948,924 +128
FullOpts (+654,368 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch 160,559,952 +3,556
libraries.crossgen2.linux.arm64.checked.mch 55,735,124 -384
libraries.pmi.linux.arm64.checked.mch 75,875,152 +60
libraries_tests.run.linux.arm64.Release.mch 165,314,884 +651,896
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 149,050,736 -888
smoke_tests.nativeaot.linux.arm64.checked.mch 2,947,976 +128

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,595,036 contexts (1,052,329 MinOpts, 1,542,707 FullOpts).

MISSED contexts: base: 3,596 (0.14%), diff: 3,599 (0.14%)

Overall (+847,760 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch 458,879,057 +28,626
libraries.crossgen2.linux.x64.checked.mch 38,668,832 -380
libraries.pmi.linux.x64.checked.mch 59,972,991 -79
libraries_tests.run.linux.x64.Release.mch 329,976,340 +820,648
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 130,000,373 -1,343
smoke_tests.nativeaot.linux.x64.checked.mch 4,197,516 +288
FullOpts (+847,760 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch 132,320,922 +28,626
libraries.crossgen2.linux.x64.checked.mch 38,667,630 -380
libraries.pmi.linux.x64.checked.mch 59,860,121 -79
libraries_tests.run.linux.x64.Release.mch 145,586,819 +820,648
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 119,341,902 -1,343
smoke_tests.nativeaot.linux.x64.checked.mch 4,196,605 +288

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,262,764 contexts (930,876 MinOpts, 1,331,888 FullOpts).

MISSED contexts: base: 2,925 (0.13%), diff: 3,201 (0.14%)

Overall (+527,124 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.osx.arm64.checked.mch 485,342,836 +2,836
libraries.crossgen2.osx.arm64.checked.mch 55,620,836 -384
libraries.pmi.osx.arm64.checked.mch 79,959,744 -4
libraries_tests.run.osx.arm64.Release.mch 312,234,552 +525,560
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 160,790,848 -884
FullOpts (+527,124 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.osx.arm64.checked.mch 153,036,380 +2,836
libraries.crossgen2.osx.arm64.checked.mch 55,619,208 -384
libraries.pmi.osx.arm64.checked.mch 79,838,616 -4
libraries_tests.run.osx.arm64.Release.mch 108,294,048 +525,560
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 147,653,320 -884

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,318,293 contexts (931,543 MinOpts, 1,386,750 FullOpts).

MISSED contexts: base: 2,587 (0.11%), diff: 2,601 (0.11%)

Overall (+731,948 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 495,323,964 +19,784
libraries.crossgen2.windows.arm64.checked.mch 58,963,476 -384
libraries.pmi.windows.arm64.checked.mch 79,567,996 +60
libraries_tests.run.windows.arm64.Release.mch 309,697,012 +713,120
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 169,004,992 -888
smoke_tests.nativeaot.windows.arm64.checked.mch 3,972,452 +256
FullOpts (+731,948 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 156,232,436 +19,784
libraries.crossgen2.windows.arm64.checked.mch 58,961,840 -384
libraries.pmi.windows.arm64.checked.mch 79,448,012 +60
libraries_tests.run.windows.arm64.Release.mch 108,115,508 +713,120
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 155,867,528 -888
smoke_tests.nativeaot.windows.arm64.checked.mch 3,971,480 +256

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,492,949 contexts (983,689 MinOpts, 1,509,260 FullOpts).

MISSED contexts: base: 3,859 (0.15%), diff: 3,862 (0.15%)

Overall (+879,433 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,762,326 +26,409
coreclr_tests.run.windows.x64.checked.mch 392,865,429 +22,605
libraries.crossgen2.windows.x64.checked.mch 39,442,575 -362
libraries.pmi.windows.x64.checked.mch 61,196,926 -77
libraries_tests.run.windows.x64.Release.mch 279,033,795 +831,714
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 133,435,993 -1,213
smoke_tests.nativeaot.windows.x64.checked.mch 5,091,660 +357
FullOpts (+879,433 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,103,601 +26,409
coreclr_tests.run.windows.x64.checked.mch 119,322,437 +22,605
libraries.crossgen2.windows.x64.checked.mch 39,441,386 -362
libraries.pmi.windows.x64.checked.mch 61,083,407 -77
libraries_tests.run.windows.x64.Release.mch 100,665,479 +831,714
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 123,012,623 -1,213
smoke_tests.nativeaot.windows.x64.checked.mch 5,090,751 +357

Details here

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,237,735 contexts (827,812 MinOpts, 1,409,923 FullOpts).

MISSED contexts: base: 74,052 (3.20%), diff: 74,543 (3.22%)

Overall (+922,034 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,626,918 +4,536
libraries.crossgen2.linux.arm.checked.mch 35,174,904 -364
libraries.pmi.linux.arm.checked.mch 49,554,486 -270
libraries_tests.run.linux.arm.Release.mch 240,953,450 +918,678
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 93,043,072 -546
FullOpts (+922,034 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 108,896,784 +4,536
libraries.crossgen2.linux.arm.checked.mch 35,173,674 -364
libraries.pmi.linux.arm.checked.mch 49,447,982 -270
libraries_tests.run.linux.arm.Release.mch 118,950,506 +918,678
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch 82,959,252 -546

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,299,179 contexts (841,817 MinOpts, 1,457,362 FullOpts).

MISSED contexts: base: 2,090 (0.09%), diff: 2,191 (0.10%)

Overall (+281,351 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 308,813,223 +20,842
libraries.crossgen2.windows.x86.checked.mch 31,665,137 -284
libraries.pmi.windows.x86.checked.mch 48,912,132 -107
libraries_tests.run.windows.x86.Release.mch 185,434,987 +262,163
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 102,172,327 -1,263
FullOpts (+281,351 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 107,141,454 +20,842
libraries.crossgen2.windows.x86.checked.mch 31,664,080 -284
libraries.pmi.windows.x86.checked.mch 48,816,818 -107
libraries_tests.run.windows.x86.Release.mch 87,103,480 +262,163
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 93,502,535 -1,263

Details here

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.37%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.02%
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.37%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%
FullOpts (+0.01% to +0.50%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.02%
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
benchmarks.run_tiered.linux.arm64.checked.mch +0.04%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch +0.50%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.02% to +0.42%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
coreclr_tests.run.linux.x64.checked.mch +0.03%
libraries.crossgen2.linux.x64.checked.mch +0.02%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch +0.42%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.03%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.06%
FullOpts (+0.02% to +0.55%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.04%
coreclr_tests.run.linux.x64.checked.mch +0.05%
libraries.crossgen2.linux.x64.checked.mch +0.02%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch +0.55%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.03%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.06%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01% to +0.40%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.03%
benchmarks.run_pgo.osx.arm64.checked.mch +0.04%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch +0.01%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.02%
libraries_tests.run.osx.arm64.Release.mch +0.40%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.03%
realworld.run.osx.arm64.checked.mch +0.03%
FullOpts (+0.01% to +0.60%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.03%
benchmarks.run_pgo.osx.arm64.checked.mch +0.04%
benchmarks.run_tiered.osx.arm64.checked.mch +0.04%
coreclr_tests.run.osx.arm64.checked.mch +0.03%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.02%
libraries_tests.run.osx.arm64.Release.mch +0.60%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.03%
realworld.run.osx.arm64.checked.mch +0.03%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01% to +0.55%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.03%
benchmarks.run_pgo.windows.arm64.checked.mch +0.04%
benchmarks.run_tiered.windows.arm64.checked.mch +0.03%
coreclr_tests.run.windows.arm64.checked.mch +0.03%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch +0.55%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.03%
realworld.run.windows.arm64.checked.mch +0.03%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.06%
FullOpts (+0.01% to +0.83%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.03%
benchmarks.run_pgo.windows.arm64.checked.mch +0.05%
benchmarks.run_tiered.windows.arm64.checked.mch +0.04%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch +0.83%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.03%
realworld.run.windows.arm64.checked.mch +0.03%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.06%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.02% to +0.53%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.10%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.03%
libraries.crossgen2.windows.x64.checked.mch +0.02%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch +0.53%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch +0.03%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.07%
FullOpts (+0.02% to +0.74%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.11%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.04%
coreclr_tests.run.windows.x64.checked.mch +0.05%
libraries.crossgen2.windows.x64.checked.mch +0.02%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch +0.74%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch +0.03%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.07%

Details here

Throughput diffs for linux/arm ran on windows/x86

Overall (+0.01% to +0.59%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.02%
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.01%
coreclr_tests.run.linux.arm.checked.mch +0.02%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch +0.59%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.02%
realworld.run.linux.arm.checked.mch +0.04%
FullOpts (+0.01% to +0.77%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.02%
benchmarks.run_pgo.linux.arm.checked.mch +0.01%
benchmarks.run_tiered.linux.arm.checked.mch +0.02%
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch +0.77%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.02%
realworld.run.linux.arm.checked.mch +0.04%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.01% to +0.27%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.03%
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.03%
coreclr_tests.run.windows.x86.checked.mch +0.04%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch +0.27%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.02%
realworld.run.windows.x86.checked.mch +0.02%
FullOpts (+0.01% to +0.34%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.03%
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.03%
coreclr_tests.run.windows.x86.checked.mch +0.06%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch +0.34%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.02%
realworld.run.windows.x86.checked.mch +0.02%

Details here

Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.02% to +0.38%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.38%
libraries.crossgen2.linux.arm64.checked.mch +0.02%
libraries.pmi.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.03%
FullOpts (+0.02% to +0.51%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.03%
benchmarks.run.linux.arm64.checked.mch +0.03%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%
benchmarks.run_tiered.linux.arm64.checked.mch +0.04%
coreclr_tests.run.linux.arm64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.51%
libraries.crossgen2.linux.arm64.checked.mch +0.02%
libraries.pmi.linux.arm64.checked.mch +0.02%
realworld.run.linux.arm64.checked.mch +0.03%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.02% to +0.43%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch +0.03%
realworld.run.linux.x64.checked.mch +0.03%
benchmarks.run.linux.x64.checked.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.03%
libraries_tests.run.linux.x64.Release.mch +0.43%
libraries.crossgen2.linux.x64.checked.mch +0.02%
smoke_tests.nativeaot.linux.x64.checked.mch +0.07%
libraries.pmi.linux.x64.checked.mch +0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.03%
FullOpts (+0.02% to +0.56%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch +0.06%
realworld.run.linux.x64.checked.mch +0.03%
benchmarks.run.linux.x64.checked.mch +0.03%
benchmarks.run_tiered.linux.x64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch +0.03%
libraries_tests.run.linux.x64.Release.mch +0.56%
libraries.crossgen2.linux.x64.checked.mch +0.02%
smoke_tests.nativeaot.linux.x64.checked.mch +0.07%
libraries.pmi.linux.x64.checked.mch +0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.03%

Details here

@jakobbotsch
Copy link
Member Author

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress

@jakobbotsch jakobbotsch marked this pull request as ready for review January 22, 2024 22:05
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@jakobbotsch
Copy link
Member Author

cc @dotnet/jit-contrib PTAL @BruceForstall

Should be ready assuming CI looks good.

Diffs are quite substantial due to the new cloning, but it looks like the same methods are repeated a bunch of times if you look at the jit-analyze output, so probably the results are a bit overblown. As usual loop cloning profitability heuristics is probably the right way to deal with this.

@jakobbotsch
Copy link
Member Author

Failures are #97376, #97297, #97049

@jakobbotsch jakobbotsch merged commit c5944d4 into dotnet:main Jan 23, 2024
165 of 174 checks passed
@jakobbotsch jakobbotsch deleted the more-ivs branch January 23, 2024 11:49
tmds pushed a commit to tmds/runtime that referenced this pull request Jan 23, 2024
Consider all exit edges as potential tests on a IV variable, and try to
recognize induction from those. Previously we looked only at the
lexically bottom most block.

Overall this unlocks only a pretty minor number of new cases which then
leads to a bit more cloning. Size regressions are expected because of
that.
@github-actions github-actions bot locked and limited conversation to collaborators Feb 23, 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