JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

JIT: Ensure edge likelihoods 1/N - #97740

Merged
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1
Feb 1, 2024
Merged

JIT: Ensure edge likelihoods 1/N#97740
AndyAyersMS merged 12 commits into
dotnet:mainfrom
AndyAyersMS:EnsureEdgeLikelihoods_1

Conversation

@AndyAyersMS

@AndyAyersMSAndyAyersMS commented Jan 31, 2024

Copy link
Copy Markdown
Member

Start enforcing that all FlowEdges have likelihoods set (ideally, to the right value).

Update the profile checker to allow checking just for likelihoods. Enable this for all the initial phases up through and including fgAddInternal.

Fix missing flow edge issues by generally having whatever bit of code calls fgAddRef also ensure likelihood is set. For many cases these are unconditional flows so the value is just 1.0. Sometimes we can pass the old edge in and have fgAddRef itself do the work. And in a few cases (switches) things are a bit more subtle.

The general plan is to leave things like this for now until we've fixed likelihoods everywhere and are checking all phases. Then we'll go back and try and refactor fgAddRef to do more of this automatically.

Contributes to #93020

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

null

Author:AndyAyersMS
Assignees:AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone:-

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

So far I am following the rule that the caller of fgAddRefPred is responsible for this... either implicitly via the old edge, or explicitly. If this holds up we can just move the logic inside offgAddRefPred.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Very odd that I didn't see that build error locally.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Am going to make hasLikelihood be available in release to simplify bring-up.

@amanasifkhalid

Copy link
Copy Markdown
Contributor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Thanks for getting started on this! By the way, #97664 will probably conflict with your changes to fgReplaceJumpTarget and fgReplaceSwitchJumpTarget -- sorry about that.

No worries, this is still work in progress. I am going to keep pushing the checkpoint back and see how far I can get easily.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Not surprisingly, x86 is special. Let me clean that up next.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,044-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-452
libraries_tests.run.linux.arm64.Release.mch395,710,340-428
FullOpts (-888 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,260-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-452
libraries_tests.run.linux.arm64.Release.mch180,578,388-428

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,583-4
coreclr_tests.run.linux.x64.checked.mch403,711,931+183
libraries_tests.run.linux.x64.Release.mch337,126,106+405
FullOpts (+584 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,594-4
coreclr_tests.run.linux.x64.checked.mch123,957,229+183
libraries_tests.run.linux.x64.Release.mch153,366,413+405

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,140+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-672
libraries_tests.run.osx.arm64.Release.mch324,596,964-420
FullOpts (-1,088 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,840+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-672
libraries_tests.run.osx.arm64.Release.mch120,881,116-420

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,052-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-684
libraries_tests.run.windows.arm64.Release.mch330,811,772-92
FullOpts (-928 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,656-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-684
libraries_tests.run.windows.arm64.Release.mch127,378,176-92

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,723+51
benchmarks.run_pgo.windows.x64.checked.mch36,232,799-2
coreclr_tests.run.windows.x64.checked.mch393,194,438+34
libraries_tests.run.windows.x64.Release.mch282,129,292+329
FullOpts (+412 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,674+51
benchmarks.run_pgo.windows.x64.checked.mch22,062,143-2
coreclr_tests.run.windows.x64.checked.mch120,405,584+34
libraries_tests.run.windows.x64.Release.mch106,270,974+329

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-168
libraries_tests.run.linux.arm.Release.mch243,880,786-82
FullOpts (-254 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-168
libraries_tests.run.linux.arm.Release.mch122,911,654-82

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,420 contexts (839,658 MinOpts, 1,453,762 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,949,264+66
coreclr_tests.run.windows.x86.checked.mch309,385,112-115
libraries_tests.run.windows.x86.Release.mch186,668,292+196
FullOpts (+147 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,360,633+66
coreclr_tests.run.windows.x86.checked.mch107,596,978-115
libraries_tests.run.windows.x86.Release.mch88,394,592+196

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.01%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch-0.01%
benchmarks.run_tiered.linux.arm64.checked.mch-0.01%
coreclr_tests.run.linux.arm64.checked.mch-0.02%
libraries.crossgen2.linux.arm64.checked.mch-0.01%
libraries.pmi.linux.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch-0.01%
realworld.run.linux.arm64.checked.mch-0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch-0.01%

Throughput diffs for linux/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.01%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.osx.arm64.checked.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch-0.01%
benchmarks.run_tiered.osx.arm64.checked.mch-0.01%
coreclr_tests.run.osx.arm64.checked.mch-0.02%
libraries.crossgen2.osx.arm64.checked.mch-0.01%
libraries.pmi.osx.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch-0.01%
realworld.run.osx.arm64.checked.mch-0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.01% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.01%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (-0.02% to -0.00%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch-0.01%
benchmarks.run_tiered.windows.arm64.checked.mch-0.01%
coreclr_tests.run.windows.arm64.checked.mch-0.02%
libraries.crossgen2.windows.arm64.checked.mch-0.01%
libraries.pmi.windows.arm64.checked.mch-0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch-0.01%
realworld.run.windows.arm64.checked.mch-0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch-0.01%

Throughput diffs for windows/x64 ran on windows/x64

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
FullOpts (-0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
coreclr_tests.run.linux.arm.checked.mch-0.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
MinOpts (-0.16% to +0.00%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
benchmarks.run_pgo.linux.arm.checked.mch+0.01%
benchmarks.run_tiered.linux.arm.checked.mch+0.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Warning: Different compilers used for base and diff JITs. Results may be misleading.
Base JIT's compiler: MSVC 193933218
Diff JIT's compiler: MSVC 193933321

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

about to push a bunch of fixes ... will also merge up.

@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Moved the likelihood checking boundary farther back in the phase list. Next up are the EH opts.

So far most of the fixes are stylized. A few will require revisiting. Still sticking with the plan of not adding any automagic fixups just yet.

@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@ryujit-bot

Copy link
Copy Markdown
Diff results for #97740

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,507,291 contexts (1,007,092 MinOpts, 1,500,199 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 27 (0.00%)

Overall (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch80,093,036-8
coreclr_tests.run.linux.arm64.checked.mch508,732,332-480
libraries_tests.run.linux.arm64.Release.mch395,709,692-500
FullOpts (-988 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch54,158,252-8
coreclr_tests.run.linux.arm64.checked.mch160,584,180-480
libraries_tests.run.linux.arm64.Release.mch180,577,740-500

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,517,881 contexts (991,070 MinOpts, 1,526,811 FullOpts).

MISSED contexts: base: 1 (0.00%), diff: 28 (0.00%)

Overall (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch71,579,613-4
coreclr_tests.run.linux.x64.checked.mch403,711,649+174
libraries_tests.run.linux.x64.Release.mch337,125,087+647
FullOpts (+817 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch47,779,624-4
coreclr_tests.run.linux.x64.checked.mch123,957,189+174
libraries_tests.run.linux.x64.Release.mch153,365,478+647

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,844 contexts (932,669 MinOpts, 1,338,175 FullOpts).

MISSED contexts: base: 2 (0.00%), diff: 26 (0.00%)

Overall (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch34,442,120+4
coreclr_tests.run.osx.arm64.checked.mch486,418,056-704
libraries_tests.run.osx.arm64.Release.mch324,596,696-496
FullOpts (-1,196 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch18,140,820+4
coreclr_tests.run.osx.arm64.checked.mch153,805,132-704
libraries_tests.run.osx.arm64.Release.mch120,880,848-496

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,341,083 contexts (938,449 MinOpts, 1,402,634 FullOpts).

MISSED contexts: base: 9 (0.00%), diff: 34 (0.00%)

Overall (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch45,573,032-152
coreclr_tests.run.windows.arm64.checked.mch495,271,268-700
libraries_tests.run.windows.arm64.Release.mch330,811,128-148
FullOpts (-1,000 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch29,561,636-152
coreclr_tests.run.windows.arm64.checked.mch156,582,164-700
libraries_tests.run.windows.arm64.Release.mch127,377,532-148

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,512,183 contexts (997,391 MinOpts, 1,514,792 FullOpts).

MISSED contexts: base: 3 (0.00%), diff: 29 (0.00%)

Overall (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch47,040,747+54
benchmarks.run_pgo.windows.x64.checked.mch36,232,814-2
coreclr_tests.run.windows.x64.checked.mch393,194,106+72
libraries_tests.run.windows.x64.Release.mch282,128,846+556
FullOpts (+680 bytes)
CollectionBase size (bytes)Diff size (bytes)
aspnet.run.windows.x64.checked.mch28,549,698+54
benchmarks.run_pgo.windows.x64.checked.mch22,062,158-2
coreclr_tests.run.windows.x64.checked.mch120,405,526+72
libraries_tests.run.windows.x64.Release.mch106,270,612+556

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,239,389 contexts (829,328 MinOpts, 1,410,061 FullOpts).

MISSED contexts: base: 71,274 (3.08%), diff: 71,275 (3.08%)

Overall (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch63,958,070-4
coreclr_tests.run.linux.arm.checked.mch321,764,266-192
libraries_tests.run.linux.arm.Release.mch243,880,786-116
FullOpts (-312 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch52,758,104-4
coreclr_tests.run.linux.arm.checked.mch109,286,678-192
libraries_tests.run.linux.arm.Release.mch122,911,654-116

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,449 contexts (839,658 MinOpts, 1,453,791 FullOpts).

MISSED contexts: base: 45 (0.00%), diff: 47 (0.00%)

Overall (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch44,974,365+66
coreclr_tests.run.windows.x86.checked.mch309,384,825-111
libraries_tests.run.windows.x86.Release.mch186,683,192+216
FullOpts (+171 bytes)
CollectionBase size (bytes)Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch38,385,734+66
coreclr_tests.run.windows.x86.checked.mch107,596,927-111
libraries_tests.run.windows.x86.Release.mch88,409,560+216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.arm64.checked.mch+0.01%
benchmarks.run_pgo.linux.arm64.checked.mch+0.02%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%
coreclr_tests.run.linux.arm64.checked.mch+0.01%
libraries.crossgen2.linux.arm64.checked.mch+0.01%
libraries.pmi.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.02%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
coreclr_tests.run.linux.x64.checked.mch+0.01%
libraries.crossgen2.linux.x64.checked.mch+0.01%
libraries.pmi.linux.x64.checked.mch+0.01%
libraries_tests.run.linux.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.02%
FullOpts (+0.01%)
CollectionPDIFF
benchmarks.run.osx.arm64.checked.mch+0.01%
benchmarks.run_pgo.osx.arm64.checked.mch+0.01%
benchmarks.run_tiered.osx.arm64.checked.mch+0.01%
coreclr_tests.run.osx.arm64.checked.mch+0.01%
libraries.crossgen2.osx.arm64.checked.mch+0.01%
libraries.pmi.osx.arm64.checked.mch+0.01%
libraries_tests.run.osx.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch+0.01%
realworld.run.osx.arm64.checked.mch+0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (+0.01%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%
MinOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.windows.arm64.checked.mch+0.01%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
benchmarks.run.windows.arm64.checked.mch+0.01%
benchmarks.run_pgo.windows.arm64.checked.mch+0.02%
benchmarks.run_tiered.windows.arm64.checked.mch+0.01%
coreclr_tests.run.windows.arm64.checked.mch+0.01%
libraries.crossgen2.windows.arm64.checked.mch+0.01%
libraries.pmi.windows.arm64.checked.mch+0.01%
libraries_tests.run.windows.arm64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch+0.01%
realworld.run.windows.arm64.checked.mch+0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch+0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%
MinOpts (+0.00% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.01%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.02%
FullOpts (+0.01% to +0.02%)
CollectionPDIFF
aspnet.run.windows.x64.checked.mch+0.02%
benchmarks.run.windows.x64.checked.mch+0.01%
benchmarks.run_pgo.windows.x64.checked.mch+0.02%
benchmarks.run_tiered.windows.x64.checked.mch+0.01%
coreclr_tests.run.windows.x64.checked.mch+0.01%
libraries.crossgen2.windows.x64.checked.mch+0.01%
libraries.pmi.windows.x64.checked.mch+0.01%
libraries_tests.run.windows.x64.Release.mch+0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch+0.01%
realworld.run.windows.x64.checked.mch+0.01%
smoke_tests.nativeaot.windows.x64.checked.mch+0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.06% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.06%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
MinOpts (-0.16% to +0.01%)
CollectionPDIFF
coreclr_tests.run.linux.arm.checked.mch-0.16%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.linux.arm.checked.mch+0.01%
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.01%
libraries.pmi.linux.arm.checked.mch+0.01%
libraries_tests.run.linux.arm.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch+0.01%
realworld.run.linux.arm.checked.mch+0.01%

Throughput diffs for windows/x86 ran on windows/x86

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%
MinOpts (-0.00% to +0.02%)
CollectionPDIFF
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.02%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run.windows.x86.checked.mch+0.01%
benchmarks.run_pgo.windows.x86.checked.mch+0.01%
benchmarks.run_tiered.windows.x86.checked.mch+0.01%
coreclr_tests.run.windows.x86.checked.mch+0.01%
libraries.pmi.windows.x86.checked.mch+0.01%
libraries_tests.run.windows.x86.Release.mch+0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch+0.01%
realworld.run.windows.x86.checked.mch+0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.arm64.checked.mch+0.01%
realworld.run.linux.arm64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
benchmarks.run_pgo.linux.arm64.checked.mch+0.01%
libraries_tests.run.linux.arm64.Release.mch+0.01%
benchmarks.run_tiered.linux.arm64.checked.mch+0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%
MinOpts (-0.00% to +0.01%)
CollectionPDIFF
libraries.pmi.linux.x64.checked.mch+0.01%
realworld.run.linux.x64.checked.mch+0.01%
FullOpts (+0.00% to +0.01%)
CollectionPDIFF
libraries_tests.run.linux.x64.Release.mch+0.01%
benchmarks.run_tiered.linux.x64.checked.mch+0.01%
smoke_tests.nativeaot.linux.x64.checked.mch+0.01%
benchmarks.run_pgo.linux.x64.checked.mch+0.01%

Details here


@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

Think this is far enough for one PR. Will convert to non-draft.

@AndyAyersMSAndyAyersMS changed the title Ensure edge likelihoods 1JIT: Ensure edge likelihoods 1/NFeb 1, 2024
@AndyAyersMS

Copy link
Copy Markdown
MemberAuthor

FYI @dotnet/jit-contrib

@AndyAyersMS
AndyAyersMS marked this pull request as ready for review February 1, 2024 15:36

@amanasifkhalidamanasifkhalid left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, thanks for getting this started!

Let me know if you'd like me to work on the next few phases. I imagine the bulk of the work will be a repeat of what you did here.

fgRemoveRefPred(oldTarget, block);
fgAddRefPred(newTarget, block);

if (block->TargetIs(oldTarget))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Out of curiosity, did you run into any situations where we call fgReplaceJumpTarget on a block that doesn't have oldTarget as its current target? Or can we get rid of this branch?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

This may have been a merge error -- I was not trying to change behavior.

Will clean it up in the next phase of this work.

}

// checkBlock
// Todo: get likelihoods right

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's not in scope for this PR, but I'm curious what your ideas are for coming up with better guesses for the likelihoods in cases like this one.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

For that specific case the logic is in a base class so we will need the various derived classes to make the right info available.

Generally speaking if you are introducing new conditional flow you should have some idea of the relative frequencies of the different possibilities. If not you can always go off and try and do some custom measurements to see what happens.

One example where I may do that is in the "OSR step block" case -- here I do not know the right answer, my guess would be that it depends on whether the try that encompasses the OSR entry point is itself nested in a loop. But to be sure I'd have to go measure.

@AndyAyersMS
AndyAyersMS merged commit 5cee418 into dotnet:mainFeb 1, 2024
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Mar 3, 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

@AndyAyersMS@amanasifkhalid@ryujit-bot