Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT: Ensure edge likelihoods 1/N #97740

Merged
merged 12 commits into from
Feb 1, 2024

Conversation

AndyAyersMS
Copy link
Member

@AndyAyersMS AndyAyersMS commented Jan 31, 2024

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

@ghost ghost assigned AndyAyersMS Jan 31, 2024
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jan 31, 2024
@ghost
Copy link

ghost commented Jan 31, 2024

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
Member Author

@amanasifkhalid FYI -- starting to chip away here.

@AndyAyersMS
Copy link
Member Author

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
Member Author

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

@AndyAyersMS
Copy link
Member Author

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

@amanasifkhalid
Copy link
Member

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
Member Author

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
Member Author

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

@ryujit-bot
Copy link

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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,093,044 -8
coreclr_tests.run.linux.arm64.checked.mch 508,732,332 -452
libraries_tests.run.linux.arm64.Release.mch 395,710,340 -428
FullOpts (-888 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 54,158,260 -8
coreclr_tests.run.linux.arm64.checked.mch 160,584,180 -452
libraries_tests.run.linux.arm64.Release.mch 180,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,579,583 -4
coreclr_tests.run.linux.x64.checked.mch 403,711,931 +183
libraries_tests.run.linux.x64.Release.mch 337,126,106 +405
FullOpts (+584 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 47,779,594 -4
coreclr_tests.run.linux.x64.checked.mch 123,957,229 +183
libraries_tests.run.linux.x64.Release.mch 153,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,442,140 +4
coreclr_tests.run.osx.arm64.checked.mch 486,418,056 -672
libraries_tests.run.osx.arm64.Release.mch 324,596,964 -420
FullOpts (-1,088 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,140,840 +4
coreclr_tests.run.osx.arm64.checked.mch 153,805,132 -672
libraries_tests.run.osx.arm64.Release.mch 120,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,573,052 -152
coreclr_tests.run.windows.arm64.checked.mch 495,271,268 -684
libraries_tests.run.windows.arm64.Release.mch 330,811,772 -92
FullOpts (-928 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,561,656 -152
coreclr_tests.run.windows.arm64.checked.mch 156,582,164 -684
libraries_tests.run.windows.arm64.Release.mch 127,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)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,040,723 +51
benchmarks.run_pgo.windows.x64.checked.mch 36,232,799 -2
coreclr_tests.run.windows.x64.checked.mch 393,194,438 +34
libraries_tests.run.windows.x64.Release.mch 282,129,292 +329
FullOpts (+412 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,549,674 +51
benchmarks.run_pgo.windows.x64.checked.mch 22,062,143 -2
coreclr_tests.run.windows.x64.checked.mch 120,405,584 +34
libraries_tests.run.windows.x64.Release.mch 106,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 63,958,070 -4
coreclr_tests.run.linux.arm.checked.mch 321,764,266 -168
libraries_tests.run.linux.arm.Release.mch 243,880,786 -82
FullOpts (-254 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 52,758,104 -4
coreclr_tests.run.linux.arm.checked.mch 109,286,678 -168
libraries_tests.run.linux.arm.Release.mch 122,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 44,949,264 +66
coreclr_tests.run.windows.x86.checked.mch 309,385,112 -115
libraries_tests.run.windows.x86.Release.mch 186,668,292 +196
FullOpts (+147 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 38,360,633 +66
coreclr_tests.run.windows.x86.checked.mch 107,596,978 -115
libraries_tests.run.windows.x86.Release.mch 88,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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
FullOpts (-0.00% to +0.01%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
libraries.pmi.osx.arm64.checked.mch +0.01%
realworld.run.osx.arm64.checked.mch +0.01%
FullOpts (-0.02% to -0.00%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
realworld.run.windows.arm64.checked.mch +0.01%
FullOpts (-0.02% to -0.00%)
Collection PDIFF
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%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch +0.01%
FullOpts (-0.00% to +0.01%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch -0.16%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%

Throughput diffs for linux/x64 ran on linux/x64

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

Details here


@AndyAyersMS
Copy link
Member Author

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

@AndyAyersMS
Copy link
Member Author

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

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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,442,120 +4
coreclr_tests.run.osx.arm64.checked.mch 486,418,056 -704
libraries_tests.run.osx.arm64.Release.mch 324,596,696 -496
FullOpts (-1,196 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,140,820 +4
coreclr_tests.run.osx.arm64.checked.mch 153,805,132 -704
libraries_tests.run.osx.arm64.Release.mch 120,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,573,032 -152
coreclr_tests.run.windows.arm64.checked.mch 495,271,268 -700
libraries_tests.run.windows.arm64.Release.mch 330,811,128 -148
FullOpts (-1,000 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,561,636 -152
coreclr_tests.run.windows.arm64.checked.mch 156,582,164 -700
libraries_tests.run.windows.arm64.Release.mch 127,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)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,040,747 +54
benchmarks.run_pgo.windows.x64.checked.mch 36,232,814 -2
coreclr_tests.run.windows.x64.checked.mch 393,194,106 +72
libraries_tests.run.windows.x64.Release.mch 282,128,846 +556
FullOpts (+680 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,549,698 +54
benchmarks.run_pgo.windows.x64.checked.mch 22,062,158 -2
coreclr_tests.run.windows.x64.checked.mch 120,405,526 +72
libraries_tests.run.windows.x64.Release.mch 106,270,612 +556

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch +0.01%
realworld.run.linux.x64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
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

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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,093,036 -8
coreclr_tests.run.linux.arm64.checked.mch 508,732,332 -480
libraries_tests.run.linux.arm64.Release.mch 395,709,692 -500
FullOpts (-988 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 54,158,252 -8
coreclr_tests.run.linux.arm64.checked.mch 160,584,180 -480
libraries_tests.run.linux.arm64.Release.mch 180,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,579,613 -4
coreclr_tests.run.linux.x64.checked.mch 403,711,649 +174
libraries_tests.run.linux.x64.Release.mch 337,125,087 +647
FullOpts (+817 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 47,779,624 -4
coreclr_tests.run.linux.x64.checked.mch 123,957,189 +174
libraries_tests.run.linux.x64.Release.mch 153,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,442,120 +4
coreclr_tests.run.osx.arm64.checked.mch 486,418,056 -704
libraries_tests.run.osx.arm64.Release.mch 324,596,696 -496
FullOpts (-1,196 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,140,820 +4
coreclr_tests.run.osx.arm64.checked.mch 153,805,132 -704
libraries_tests.run.osx.arm64.Release.mch 120,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 45,573,032 -152
coreclr_tests.run.windows.arm64.checked.mch 495,271,268 -700
libraries_tests.run.windows.arm64.Release.mch 330,811,128 -148
FullOpts (-1,000 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 29,561,636 -152
coreclr_tests.run.windows.arm64.checked.mch 156,582,164 -700
libraries_tests.run.windows.arm64.Release.mch 127,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)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 47,040,747 +54
benchmarks.run_pgo.windows.x64.checked.mch 36,232,814 -2
coreclr_tests.run.windows.x64.checked.mch 393,194,106 +72
libraries_tests.run.windows.x64.Release.mch 282,128,846 +556
FullOpts (+680 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,549,698 +54
benchmarks.run_pgo.windows.x64.checked.mch 22,062,158 -2
coreclr_tests.run.windows.x64.checked.mch 120,405,526 +72
libraries_tests.run.windows.x64.Release.mch 106,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 63,958,070 -4
coreclr_tests.run.linux.arm.checked.mch 321,764,266 -192
libraries_tests.run.linux.arm.Release.mch 243,880,786 -116
FullOpts (-312 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm.checked.mch 52,758,104 -4
coreclr_tests.run.linux.arm.checked.mch 109,286,678 -192
libraries_tests.run.linux.arm.Release.mch 122,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)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 44,974,365 +66
coreclr_tests.run.windows.x86.checked.mch 309,384,825 -111
libraries_tests.run.windows.x86.Release.mch 186,683,192 +216
FullOpts (+171 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 38,385,734 +66
coreclr_tests.run.windows.x86.checked.mch 107,596,927 -111
libraries_tests.run.windows.x86.Release.mch 88,409,560 +216

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (+0.01% to +0.02%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch +0.01%
MinOpts (-0.00% to +0.01%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
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%)
Collection PDIFF
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%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch +0.01%
realworld.run.linux.x64.checked.mch +0.01%
FullOpts (+0.00% to +0.01%)
Collection PDIFF
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
Member Author

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

@AndyAyersMS AndyAyersMS changed the title Ensure edge likelihoods 1 JIT: Ensure edge likelihoods 1/N Feb 1, 2024
@AndyAyersMS
Copy link
Member Author

FYI @dotnet/jit-contrib

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

@amanasifkhalid amanasifkhalid left a comment

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
Member

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
Member Author

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
Member

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
Member Author

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:main Feb 1, 2024
125 of 127 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Mar 3, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants