Skip to content

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.
@ghost ghost 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
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)
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
@azure-pipelines
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
@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