Skip to content

JIT: Generalize FlowGraphNaturalLoop::AnalyzeIteration - #97327

Merged
jakobbotsch merged 1 commit into
dotnet:mainfrom
jakobbotsch:more-ivs
Jan 23, 2024
Merged

JIT: Generalize FlowGraphNaturalLoop::AnalyzeIteration#97327
jakobbotsch merged 1 commit into
dotnet:mainfrom
jakobbotsch:more-ivs

Conversation

@jakobbotsch

Copy link
Copy Markdown
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.
@ghostghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 22, 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

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
Copy Markdown
Contributor

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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch509,785,008+3,556
libraries.crossgen2.linux.arm64.checked.mch55,736,760-384
libraries.pmi.linux.arm64.checked.mch75,995,136+60
libraries_tests.run.linux.arm64.Release.mch380,612,024+651,896
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch162,531,948-888
smoke_tests.nativeaot.linux.arm64.checked.mch2,948,924+128
FullOpts (+654,368 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch160,559,952+3,556
libraries.crossgen2.linux.arm64.checked.mch55,735,124-384
libraries.pmi.linux.arm64.checked.mch75,875,152+60
libraries_tests.run.linux.arm64.Release.mch165,314,884+651,896
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch149,050,736-888
smoke_tests.nativeaot.linux.arm64.checked.mch2,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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch458,879,057+28,626
libraries.crossgen2.linux.x64.checked.mch38,668,832-380
libraries.pmi.linux.x64.checked.mch59,972,991-79
libraries_tests.run.linux.x64.Release.mch329,976,340+820,648
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch130,000,373-1,343
smoke_tests.nativeaot.linux.x64.checked.mch4,197,516+288
FullOpts (+847,760 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch132,320,922+28,626
libraries.crossgen2.linux.x64.checked.mch38,667,630-380
libraries.pmi.linux.x64.checked.mch59,860,121-79
libraries_tests.run.linux.x64.Release.mch145,586,819+820,648
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch119,341,902-1,343
smoke_tests.nativeaot.linux.x64.checked.mch4,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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.osx.arm64.checked.mch485,342,836+2,836
libraries.crossgen2.osx.arm64.checked.mch55,620,836-384
libraries.pmi.osx.arm64.checked.mch79,959,744-4
libraries_tests.run.osx.arm64.Release.mch312,234,552+525,560
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch160,790,848-884
FullOpts (+527,124 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.osx.arm64.checked.mch153,036,380+2,836
libraries.crossgen2.osx.arm64.checked.mch55,619,208-384
libraries.pmi.osx.arm64.checked.mch79,838,616-4
libraries_tests.run.osx.arm64.Release.mch108,294,048+525,560
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch147,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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch495,323,964+19,784
libraries.crossgen2.windows.arm64.checked.mch58,963,476-384
libraries.pmi.windows.arm64.checked.mch79,567,996+60
libraries_tests.run.windows.arm64.Release.mch309,697,012+713,120
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch169,004,992-888
smoke_tests.nativeaot.windows.arm64.checked.mch3,972,452+256
FullOpts (+731,948 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch156,232,436+19,784
libraries.crossgen2.windows.arm64.checked.mch58,961,840-384
libraries.pmi.windows.arm64.checked.mch79,448,012+60
libraries_tests.run.windows.arm64.Release.mch108,115,508+713,120
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch155,867,528-888
smoke_tests.nativeaot.windows.arm64.checked.mch3,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)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch41,762,326+26,409
coreclr_tests.run.windows.x64.checked.mch392,865,429+22,605
libraries.crossgen2.windows.x64.checked.mch39,442,575-362
libraries.pmi.windows.x64.checked.mch61,196,926-77
libraries_tests.run.windows.x64.Release.mch279,033,795+831,714
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch133,435,993-1,213
smoke_tests.nativeaot.windows.x64.checked.mch5,091,660+357
FullOpts (+879,433 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch27,103,601+26,409
coreclr_tests.run.windows.x64.checked.mch119,322,437+22,605
libraries.crossgen2.windows.x64.checked.mch39,441,386-362
libraries.pmi.windows.x64.checked.mch61,083,407-77
libraries_tests.run.windows.x64.Release.mch100,665,479+831,714
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch123,012,623-1,213
smoke_tests.nativeaot.windows.x64.checked.mch5,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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch321,626,918+4,536
libraries.crossgen2.linux.arm.checked.mch35,174,904-364
libraries.pmi.linux.arm.checked.mch49,554,486-270
libraries_tests.run.linux.arm.Release.mch240,953,450+918,678
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch93,043,072-546
FullOpts (+922,034 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch108,896,784+4,536
libraries.crossgen2.linux.arm.checked.mch35,173,674-364
libraries.pmi.linux.arm.checked.mch49,447,982-270
libraries_tests.run.linux.arm.Release.mch118,950,506+918,678
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch82,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)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch308,813,223+20,842
libraries.crossgen2.windows.x86.checked.mch31,665,137-284
libraries.pmi.windows.x86.checked.mch48,912,132-107
libraries_tests.run.windows.x86.Release.mch185,434,987+262,163
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch102,172,327-1,263
FullOpts (+281,351 bytes)
CollectionBase size (bytes)Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch107,141,454+20,842
libraries.crossgen2.windows.x86.checked.mch31,664,080-284
libraries.pmi.windows.x86.checked.mch48,816,818-107
libraries_tests.run.windows.x86.Release.mch87,103,480+262,163
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch93,502,535-1,263

Details here

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.37%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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%)
CollectionPDIFF
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
Copy Markdown
MemberAuthor

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

@jakobbotsch
jakobbotsch marked this pull request as ready for review January 22, 2024 22:05
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 2 pipeline(s).

@jakobbotsch

Copy link
Copy Markdown
MemberAuthor

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
Copy Markdown
MemberAuthor

Failures are #97376, #97297, #97049

@jakobbotsch
jakobbotsch merged commit c5944d4 into dotnet:mainJan 23, 2024
@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-actionsgithub-actionsBot locked and limited conversation to collaborators Feb 23, 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

@jakobbotsch@kunalspathak@BruceForstall