Skip to content

Try to fold basic arithmetic operations as part of import #97901

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

Merged
merged 8 commits into from
Feb 4, 2024

Conversation

tannergooding
Copy link
Member

This resolves a user reported issue where despite inlining, the JIT may not see that a given value is constant during import due to these operations not getting folded: SixLabors/ImageSharp#2654 (comment)

This resulted in massively pessimized codegen since hardware intrinsics have to fallback to a call and a very large jump table instead to ensure the right behavior is executed.

The fix was simple and just involves calling gtFoldExpr before pushing the resulting node on the stack, as we're already doing for several other scenarios such as comparisons and similar cases.

It is not a "complete" fix and there may still be other places where something becomes a constant after importation. That fix, however, is much more involved and requires us transforming an intrinsic node back into a call to managed fairly late (rationalization or lowering).

@ghost ghost assigned tannergooding Feb 2, 2024
@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Feb 2, 2024
@ghost
Copy link

ghost commented Feb 2, 2024

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

Issue Details

This resolves a user reported issue where despite inlining, the JIT may not see that a given value is constant during import due to these operations not getting folded: SixLabors/ImageSharp#2654 (comment)

This resulted in massively pessimized codegen since hardware intrinsics have to fallback to a call and a very large jump table instead to ensure the right behavior is executed.

The fix was simple and just involves calling gtFoldExpr before pushing the resulting node on the stack, as we're already doing for several other scenarios such as comparisons and similar cases.

It is not a "complete" fix and there may still be other places where something becomes a constant after importation. That fix, however, is much more involved and requires us transforming an intrinsic node back into a call to managed fairly late (rationalization or lowering).

Author: tannergooding
Assignees: tannergooding
Labels:

area-CodeGen-coreclr

Milestone: -

Comment on lines +7206 to +7207
// Fold result, if possible.
op1 = gtFoldExpr(op1);
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 one is hit for MATH_OP2, so cases like ADD, SUB, MUL, DIV, REM, AND, OR, XOR

Comment on lines +7231 to +7232
// Fold result, if possible.
op1 = gtFoldExpr(op1);
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 one is hit for SH_OP2, so cases like SHL, SHR, SHR_UN

Comment on lines +7244 to +7245
// Fold result, if possible.
op1 = gtFoldExpr(op1);
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 one is hit for NOT

Comment on lines +7977 to +7978
// Fold result, if possible.
op1 = gtFoldExpr(op1);
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 one is hit for NEG

@tannergooding
Copy link
Member Author

tannergooding commented Feb 2, 2024

If the TP impact of this is bad or unacceptable, an alternative would be to have the HWIntrinsic import logic call gtFoldExpr on values it needs to be constant, which would make it more pay for play, adjusting gtFoldExpr so that the early exit checks can be inlined, or directly calling gtFoldExprConst instead.

However, doing it here is going to catch more cases and enable more early optimization opportunities, so I thought it the better approach to try first.

Notably gtFoldExpr only looks 1 level deep today, so it doesn't catch cases like ADD(ADD(CNS, CNS), CNS). This means this PR may also find some additional branch elimination opportunities which would be nice.

@ryujit-bot
Copy link

Diff results for #97901

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.13% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.08%
realworld.run.linux.arm64.checked.mch +0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.25% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.25%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.06%
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.12% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.12%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.09%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
MinOpts (-1.05% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.06%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.24% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.24%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%

Throughput diffs for osx/arm64 ran on windows/x64

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

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.06% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.06%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (-0.04% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
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.13% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.13%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.09%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.26% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.26%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,506,606 contexts (1,007,092 MinOpts, 1,499,514 FullOpts).

MISSED contexts: base: 258 (0.01%), diff: 712 (0.03%)

Overall (-477,608 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,544,288 -192
benchmarks.run_pgo.linux.arm64.checked.mch 80,065,512 -2,200
benchmarks.run_tiered.linux.arm64.checked.mch 24,588,280 -1,508
coreclr_tests.run.linux.arm64.checked.mch 508,077,808 -118,216
libraries.crossgen2.linux.arm64.checked.mch 55,844,436 -416
libraries.pmi.linux.arm64.checked.mch 76,132,168 +13,896
libraries_tests.run.linux.arm64.Release.mch 395,282,448 -240,652
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,682,828 -128,904
realworld.run.linux.arm64.checked.mch 15,897,044 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,830,580 -84
MinOpts (-487,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -2,264
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -1,480
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -110,752
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -241,596
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 13,497,464 -131,072
FullOpts (+9,556 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,239,360 -192
benchmarks.run_pgo.linux.arm64.checked.mch 54,130,728 +64
benchmarks.run_tiered.linux.arm64.checked.mch 4,849,844 -28
coreclr_tests.run.linux.arm64.checked.mch 159,929,656 -7,464
libraries.crossgen2.linux.arm64.checked.mch 55,842,800 -416
libraries.pmi.linux.arm64.checked.mch 76,012,184 +13,896
libraries_tests.run.linux.arm64.Release.mch 180,150,496 +944
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,185,364 +2,168
realworld.run.linux.arm64.checked.mch 15,316,120 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,592 -84

Assembly diffs for linux/x64 ran on windows/x64

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

MISSED contexts: base: 389 (0.02%), diff: 803 (0.03%)

Overall (-297,323 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,324,040 +34
benchmarks.run_pgo.linux.x64.checked.mch 71,543,293 -2,069
benchmarks.run_tiered.linux.x64.checked.mch 21,423,888 -1,575
coreclr_tests.run.linux.x64.checked.mch 403,358,568 -124,022
libraries.crossgen2.linux.x64.checked.mch 38,727,480 -245
libraries.pmi.linux.x64.checked.mch 60,296,613 +10,311
libraries_tests.run.linux.x64.Release.mch 336,741,912 -115,547
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,296,201 -64,666
realworld.run.linux.x64.checked.mch 13,168,575 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,067,946 -146
MinOpts (-310,501 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 23,799,989 -2,568
benchmarks.run_tiered.linux.x64.checked.mch 17,740,780 -1,663
coreclr_tests.run.linux.x64.checked.mch 279,754,460 -124,548
libraries_tests.run.linux.x64.Release.mch 183,759,609 -116,186
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 10,617,768 -65,536
FullOpts (+13,178 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,024,737 +34
benchmarks.run_pgo.linux.x64.checked.mch 47,743,304 +499
benchmarks.run_tiered.linux.x64.checked.mch 3,683,108 +88
coreclr_tests.run.linux.x64.checked.mch 123,604,108 +526
libraries.crossgen2.linux.x64.checked.mch 38,726,282 -245
libraries.pmi.linux.x64.checked.mch 60,183,756 +10,311
libraries_tests.run.linux.x64.Release.mch 152,982,303 +639
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,678,433 +870
realworld.run.linux.x64.checked.mch 12,782,691 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,066,997 -146

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,270,502 contexts (932,669 MinOpts, 1,337,833 FullOpts).

MISSED contexts: base: 26 (0.00%), diff: 368 (0.02%)

Overall (-474,772 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,173,068 -140
benchmarks.run_pgo.osx.arm64.checked.mch 34,426,604 -4,868
benchmarks.run_tiered.osx.arm64.checked.mch 15,500,708 -1,484
coreclr_tests.run.osx.arm64.checked.mch 486,244,460 -111,348
libraries.crossgen2.osx.arm64.checked.mch 55,725,900 -420
libraries.pmi.osx.arm64.checked.mch 80,156,664 +12,424
libraries_tests.run.osx.arm64.Release.mch 324,305,936 -242,572
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,361,664 -126,996
realworld.run.osx.arm64.checked.mch 15,054,404 +632
MinOpts (-486,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -2,056
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -1,436
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -110,376
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -241,764
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 13,153,728 -131,072
FullOpts (+11,932 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,172,532 -140
benchmarks.run_pgo.osx.arm64.checked.mch 18,125,304 -2,812
benchmarks.run_tiered.osx.arm64.checked.mch 3,996,224 -48
coreclr_tests.run.osx.arm64.checked.mch 153,631,536 -972
libraries.crossgen2.osx.arm64.checked.mch 55,724,272 -420
libraries.pmi.osx.arm64.checked.mch 80,035,536 +12,424
libraries_tests.run.osx.arm64.Release.mch 120,590,088 -808
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,207,936 +4,076
realworld.run.osx.arm64.checked.mch 14,490,448 +632

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,340,391 contexts (938,449 MinOpts, 1,401,942 FullOpts).

MISSED contexts: base: 365 (0.02%), diff: 726 (0.03%)

Overall (-477,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,952,576 -132
benchmarks.run_pgo.windows.arm64.checked.mch 45,548,636 -2,144
benchmarks.run_tiered.windows.arm64.checked.mch 15,574,332 -1,616
coreclr_tests.run.windows.arm64.checked.mch 495,064,652 -116,332
libraries.crossgen2.windows.arm64.checked.mch 59,069,640 -488
libraries.pmi.windows.arm64.checked.mch 79,743,716 +12,420
libraries_tests.run.windows.arm64.Release.mch 330,523,528 -243,320
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,356,388 -126,656
realworld.run.windows.arm64.checked.mch 15,898,132 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,800,188 -152
MinOpts (-487,284 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -2,244
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -1,612
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -110,364
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -241,992
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 13,153,748 -131,072
FullOpts (+9,580 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,952,040 -132
benchmarks.run_pgo.windows.arm64.checked.mch 29,537,240 +100
benchmarks.run_tiered.windows.arm64.checked.mch 4,397,144 -4
coreclr_tests.run.windows.arm64.checked.mch 156,375,548 -5,968
libraries.crossgen2.windows.arm64.checked.mch 59,068,004 -488
libraries.pmi.windows.arm64.checked.mch 79,623,732 +12,420
libraries_tests.run.windows.arm64.Release.mch 127,089,932 -1,328
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,202,640 +4,416
realworld.run.windows.arm64.checked.mch 15,334,152 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,799,176 -152

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,511,270 contexts (997,391 MinOpts, 1,513,879 FullOpts).

MISSED contexts: base: 478 (0.02%), diff: 942 (0.04%)

Overall (-301,848 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,998,136 -1,860
benchmarks.run.windows.x64.checked.mch 8,730,179 -41
benchmarks.run_pgo.windows.x64.checked.mch 36,208,402 -2,680
benchmarks.run_tiered.windows.x64.checked.mch 12,404,635 -1,741
coreclr_tests.run.windows.x64.checked.mch 392,842,774 -137,001
libraries.crossgen2.windows.x64.checked.mch 39,486,541 -309
libraries.pmi.windows.x64.checked.mch 61,521,230 +11,270
libraries_tests.run.windows.x64.Release.mch 281,823,883 -106,160
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 136,767,094 -63,799
realworld.run.windows.x64.checked.mch 14,124,685 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,884,417 -137
MinOpts (-303,461 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,491,049 -2,309
benchmarks.run_pgo.windows.x64.checked.mch 14,170,656 -2,618
benchmarks.run_tiered.windows.x64.checked.mch 9,099,239 -1,740
coreclr_tests.run.windows.x64.checked.mch 272,788,580 -123,764
libraries_tests.run.windows.x64.Release.mch 175,858,234 -107,494
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,619,106 -65,536
FullOpts (+1,613 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,507,087 +449
benchmarks.run.windows.x64.checked.mch 8,729,816 -41
benchmarks.run_pgo.windows.x64.checked.mch 22,037,746 -62
benchmarks.run_tiered.windows.x64.checked.mch 3,305,396 -1
coreclr_tests.run.windows.x64.checked.mch 120,054,194 -13,237
libraries.crossgen2.windows.x64.checked.mch 39,485,354 -309
libraries.pmi.windows.x64.checked.mch 61,407,709 +11,270
libraries_tests.run.windows.x64.Release.mch 105,965,649 +1,334
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,147,988 +1,737
realworld.run.windows.x64.checked.mch 13,738,076 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,883,470 -137

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,125 contexts (839,657 MinOpts, 1,453,468 FullOpts).

MISSED contexts: base: 47 (0.00%), diff: 369 (0.02%)

Overall (-134,970 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,468 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,954,112 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,456,972 -657
coreclr_tests.run.windows.x86.checked.mch 309,306,753 -73,049
libraries.crossgen2.windows.x86.checked.mch 31,715,821 -44
libraries.pmi.windows.x86.checked.mch 49,209,656 +8,800
libraries_tests.run.windows.x86.Release.mch 186,454,825 -37,182
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,643,834 -32,634
realworld.run.windows.x86.checked.mch 11,348,723 +697
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,888 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,340 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,187 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,365,481 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,187,151 +70
coreclr_tests.run.windows.x86.checked.mch 107,518,865 +4,304
libraries.crossgen2.windows.x86.checked.mch 31,714,761 -44
libraries.pmi.windows.x86.checked.mch 49,114,423 +8,800
libraries_tests.run.windows.x86.Release.mch 88,181,193 +410
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,963,770 +134
realworld.run.windows.x86.checked.mch 11,053,009 +697

Details here


Throughput diffs

Throughput diffs for linux/arm ran on windows/x86

Overall (-0.04% to +0.02%)
Collection PDIFF
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.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.04%
realworld.run.linux.arm.checked.mch +0.02%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.04% to +0.02%)
Collection PDIFF
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.04%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
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.02%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.03%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests.run.windows.x86.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch +0.01%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.06% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.06%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.04%
realworld.run.windows.x86.checked.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
libraries.pmi.linux.arm64.checked.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.14%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.09%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.05%
MinOpts (-1.02% to +0.03%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.02%
libraries_tests.run.linux.arm64.Release.mch -0.11%
FullOpts (-0.27% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.27%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.07%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.10%
libraries.pmi.linux.x64.checked.mch -0.03%
coreclr_tests.run.linux.x64.checked.mch -0.14%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries.crossgen2.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
realworld.run.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.02%
FullOpts (-0.26% to +0.01%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.07%
libraries.pmi.linux.x64.checked.mch -0.03%
coreclr_tests.run.linux.x64.checked.mch -0.26%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries.crossgen2.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,293,125 contexts (839,657 MinOpts, 1,453,468 FullOpts).

MISSED contexts: base: 47 (0.00%), diff: 369 (0.02%)

Overall (-134,970 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,468 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,954,112 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,456,972 -657
coreclr_tests.run.windows.x86.checked.mch 309,306,753 -73,049
libraries.crossgen2.windows.x86.checked.mch 31,715,821 -44
libraries.pmi.windows.x86.checked.mch 49,209,656 +8,800
libraries_tests.run.windows.x86.Release.mch 186,454,825 -37,182
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,643,834 -32,634
realworld.run.windows.x86.checked.mch 11,348,723 +697
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,888 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,340 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,107,187 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,365,481 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,187,151 +70
coreclr_tests.run.windows.x86.checked.mch 107,518,865 +4,304
libraries.crossgen2.windows.x86.checked.mch 31,714,761 -44
libraries.pmi.windows.x86.checked.mch 49,114,423 +8,800
libraries_tests.run.windows.x86.Release.mch 88,181,193 +410
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,963,770 +134
realworld.run.windows.x86.checked.mch 11,053,009 +697

Details here


@ryujit-bot
Copy link

Diff results for #97901

Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.13% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.08%
realworld.run.linux.arm64.checked.mch +0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.25% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.25%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.06%
realworld.run.linux.arm64.checked.mch +0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.12% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.12%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.09%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
MinOpts (-1.05% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.06%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.24% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.24%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%

Throughput diffs for osx/arm64 ran on linux/x64

Overall (-0.06% to +0.03%)
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.02%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.06%
realworld.run.osx.arm64.checked.mch +0.01%
MinOpts (-1.00% to +0.04%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.01%
benchmarks.run_pgo.osx.arm64.checked.mch +0.02%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch +0.04%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.02%
libraries_tests.run.osx.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.00%
realworld.run.osx.arm64.checked.mch +0.02%
FullOpts (-0.04% to +0.03%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.01%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch -0.02%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.03%
libraries_tests.run.osx.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -0.04%
realworld.run.osx.arm64.checked.mch +0.01%

Throughput diffs for windows/arm64 ran on linux/x64

Overall (-0.06% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.06%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.01%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (-0.04% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%

Throughput diffs for windows/x64 ran on linux/x64

Overall (-0.13% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.13%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.09%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.26% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.26%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,505,432 contexts (1,007,092 MinOpts, 1,498,340 FullOpts).

MISSED contexts: base: 1,433 (0.06%), diff: 1,886 (0.08%)

Overall (-477,640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,531,664 -192
benchmarks.run_pgo.linux.arm64.checked.mch 79,703,964 -2,200
benchmarks.run_tiered.linux.arm64.checked.mch 24,584,308 -1,508
coreclr_tests.run.linux.arm64.checked.mch 507,869,544 -118,224
libraries.crossgen2.linux.arm64.checked.mch 55,843,068 -416
libraries.pmi.linux.arm64.checked.mch 76,112,184 +13,896
libraries_tests.run.linux.arm64.Release.mch 393,594,124 -240,668
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,661,116 -128,912
realworld.run.linux.arm64.checked.mch 15,892,888 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 -84
MinOpts (-487,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -2,264
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -1,480
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -110,752
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -241,596
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 13,497,464 -131,072
FullOpts (+9,524 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,226,736 -192
benchmarks.run_pgo.linux.arm64.checked.mch 53,769,180 +64
benchmarks.run_tiered.linux.arm64.checked.mch 4,845,872 -28
coreclr_tests.run.linux.arm64.checked.mch 159,721,392 -7,472
libraries.crossgen2.linux.arm64.checked.mch 55,841,432 -416
libraries.pmi.linux.arm64.checked.mch 75,992,200 +13,896
libraries_tests.run.linux.arm64.Release.mch 178,462,172 +928
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,163,652 +2,160
realworld.run.linux.arm64.checked.mch 15,311,964 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 -84

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,515,914 contexts (991,070 MinOpts, 1,524,844 FullOpts).

MISSED contexts: base: 1,584 (0.06%), diff: 1,995 (0.08%)

Overall (-297,309 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,323,346 +34
benchmarks.run_pgo.linux.x64.checked.mch 71,225,423 -2,069
benchmarks.run_tiered.linux.x64.checked.mch 21,423,742 -1,575
coreclr_tests.run.linux.x64.checked.mch 403,160,942 -124,017
libraries.crossgen2.linux.x64.checked.mch 38,726,572 -245
libraries.pmi.linux.x64.checked.mch 60,294,308 +10,312
libraries_tests.run.linux.x64.Release.mch 335,310,491 -115,530
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,293,350 -64,675
realworld.run.linux.x64.checked.mch 13,168,403 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,064,942 -146
MinOpts (-310,501 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 23,799,989 -2,568
benchmarks.run_tiered.linux.x64.checked.mch 17,740,780 -1,663
coreclr_tests.run.linux.x64.checked.mch 279,754,460 -124,548
libraries_tests.run.linux.x64.Release.mch 183,759,609 -116,186
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 10,617,768 -65,536
FullOpts (+13,192 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,024,043 +34
benchmarks.run_pgo.linux.x64.checked.mch 47,425,434 +499
benchmarks.run_tiered.linux.x64.checked.mch 3,682,962 +88
coreclr_tests.run.linux.x64.checked.mch 123,406,482 +531
libraries.crossgen2.linux.x64.checked.mch 38,725,374 -245
libraries.pmi.linux.x64.checked.mch 60,181,451 +10,312
libraries_tests.run.linux.x64.Release.mch 151,550,882 +656
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,675,582 +861
realworld.run.linux.x64.checked.mch 12,782,519 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,063,993 -146

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,269,757 contexts (932,669 MinOpts, 1,337,088 FullOpts).

MISSED contexts: base: 772 (0.03%), diff: 1,113 (0.05%)

Overall (-474,764 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,160,132 -140
benchmarks.run_pgo.osx.arm64.checked.mch 34,330,056 -4,868
benchmarks.run_tiered.osx.arm64.checked.mch 15,496,344 -1,484
coreclr_tests.run.osx.arm64.checked.mch 486,098,552 -111,356
libraries.crossgen2.osx.arm64.checked.mch 55,724,572 -420
libraries.pmi.osx.arm64.checked.mch 80,133,124 +12,424
libraries_tests.run.osx.arm64.Release.mch 323,089,700 -242,556
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,339,072 -126,996
realworld.run.osx.arm64.checked.mch 15,051,672 +632
MinOpts (-486,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -2,056
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -1,436
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -110,376
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -241,764
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 13,153,728 -131,072
FullOpts (+11,940 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,159,596 -140
benchmarks.run_pgo.osx.arm64.checked.mch 18,028,756 -2,812
benchmarks.run_tiered.osx.arm64.checked.mch 3,991,860 -48
coreclr_tests.run.osx.arm64.checked.mch 153,485,628 -980
libraries.crossgen2.osx.arm64.checked.mch 55,722,944 -420
libraries.pmi.osx.arm64.checked.mch 80,011,996 +12,424
libraries_tests.run.osx.arm64.Release.mch 119,373,852 -792
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,185,344 +4,076
realworld.run.osx.arm64.checked.mch 14,487,716 +632

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,339,448 contexts (938,449 MinOpts, 1,400,999 FullOpts).

MISSED contexts: base: 1,309 (0.06%), diff: 1,669 (0.07%)

Overall (-477,696 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,920 -132
benchmarks.run_pgo.windows.arm64.checked.mch 45,415,036 -2,144
benchmarks.run_tiered.windows.arm64.checked.mch 15,572,852 -1,616
coreclr_tests.run.windows.arm64.checked.mch 494,876,668 -116,340
libraries.crossgen2.windows.arm64.checked.mch 59,068,308 -488
libraries.pmi.windows.arm64.checked.mch 79,724,924 +12,420
libraries_tests.run.windows.arm64.Release.mch 329,166,036 -243,304
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,336,032 -126,656
realworld.run.windows.arm64.checked.mch 15,895,404 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 -152
MinOpts (-487,284 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -2,244
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -1,612
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -110,364
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -241,992
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 13,153,748 -131,072
FullOpts (+9,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,384 -132
benchmarks.run_pgo.windows.arm64.checked.mch 29,403,640 +100
benchmarks.run_tiered.windows.arm64.checked.mch 4,395,664 -4
coreclr_tests.run.windows.arm64.checked.mch 156,187,564 -5,976
libraries.crossgen2.windows.arm64.checked.mch 59,066,672 -488
libraries.pmi.windows.arm64.checked.mch 79,604,940 +12,420
libraries_tests.run.windows.arm64.Release.mch 125,732,440 -1,312
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,182,284 +4,416
realworld.run.windows.arm64.checked.mch 15,331,424 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 -152

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,510,378 contexts (997,391 MinOpts, 1,512,987 FullOpts).

MISSED contexts: base: 1,370 (0.05%), diff: 1,834 (0.07%)

Overall (-301,854 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,974,011 -1,860
benchmarks.run.windows.x64.checked.mch 8,729,507 -41
benchmarks.run_pgo.windows.x64.checked.mch 36,109,508 -2,680
benchmarks.run_tiered.windows.x64.checked.mch 12,404,420 -1,741
coreclr_tests.run.windows.x64.checked.mch 392,683,922 -136,997
libraries.crossgen2.windows.x64.checked.mch 39,485,796 -309
libraries.pmi.windows.x64.checked.mch 61,518,188 +11,246
libraries_tests.run.windows.x64.Release.mch 280,541,334 -106,156
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 136,764,896 -63,789
realworld.run.windows.x64.checked.mch 14,124,383 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,880,142 -137
MinOpts (-303,461 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,491,049 -2,309
benchmarks.run_pgo.windows.x64.checked.mch 14,170,656 -2,618
benchmarks.run_tiered.windows.x64.checked.mch 9,099,239 -1,740
coreclr_tests.run.windows.x64.checked.mch 272,788,580 -123,764
libraries_tests.run.windows.x64.Release.mch 175,858,234 -107,494
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,619,106 -65,536
FullOpts (+1,607 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,482,962 +449
benchmarks.run.windows.x64.checked.mch 8,729,144 -41
benchmarks.run_pgo.windows.x64.checked.mch 21,938,852 -62
benchmarks.run_tiered.windows.x64.checked.mch 3,305,181 -1
coreclr_tests.run.windows.x64.checked.mch 119,895,342 -13,233
libraries.crossgen2.windows.x64.checked.mch 39,484,609 -309
libraries.pmi.windows.x64.checked.mch 61,404,667 +11,246
libraries_tests.run.windows.x64.Release.mch 104,683,100 +1,338
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,145,790 +1,747
realworld.run.windows.x64.checked.mch 13,737,774 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,879,195 -137

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,291,724 contexts (839,657 MinOpts, 1,452,067 FullOpts).

MISSED contexts: base: 1,452 (0.06%), diff: 1,770 (0.08%)

Overall (-134,992 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,594 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,920,659 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,455,009 -657
coreclr_tests.run.windows.x86.checked.mch 309,112,939 -73,057
libraries.crossgen2.windows.x86.checked.mch 31,712,132 -44
libraries.pmi.windows.x86.checked.mch 49,172,068 +8,800
libraries_tests.run.windows.x86.Release.mch 185,275,035 -37,197
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,601,231 -32,634
realworld.run.windows.x86.checked.mch 11,340,931 +698
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,888 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,318 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,313 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,332,028 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,185,188 +70
coreclr_tests.run.windows.x86.checked.mch 107,325,051 +4,296
libraries.crossgen2.windows.x86.checked.mch 31,711,072 -44
libraries.pmi.windows.x86.checked.mch 49,076,835 +8,800
libraries_tests.run.windows.x86.Release.mch 87,001,403 +395
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,921,167 +134
realworld.run.windows.x86.checked.mch 11,045,217 +698

Details here


Throughput diffs

Throughput diffs for linux/arm ran on windows/x86

Overall (-0.04% to +0.02%)
Collection PDIFF
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.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.04%
realworld.run.linux.arm.checked.mch +0.02%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.04% to +0.02%)
Collection PDIFF
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.04%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
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.02%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.03%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests.run.windows.x86.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch +0.01%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.06% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.06%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.04%
realworld.run.windows.x86.checked.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.09%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.05%
coreclr_tests.run.linux.arm64.checked.mch -0.14%
libraries.pmi.linux.arm64.checked.mch -0.03%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
MinOpts (-1.02% to +0.03%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.02%
libraries_tests.run.linux.arm64.Release.mch -0.11%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
realworld.run.linux.arm64.checked.mch +0.01%
FullOpts (-0.27% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.07%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.27%
libraries.pmi.linux.arm64.checked.mch -0.03%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch -0.03%
coreclr_tests.run.linux.x64.checked.mch -0.14%
libraries.crossgen2.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.10%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch +0.02%
realworld.run.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
FullOpts (-0.26% to +0.01%)
Collection PDIFF
libraries.pmi.linux.x64.checked.mch -0.03%
coreclr_tests.run.linux.x64.checked.mch -0.26%
libraries.crossgen2.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.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.07%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.13% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.08%
realworld.run.linux.arm64.checked.mch +0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.25% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.25%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.06%
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.12% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.12%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.09%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
MinOpts (-1.05% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.06%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.24% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.24%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%

Throughput diffs for osx/arm64 ran on windows/x64

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

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.06% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.06%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (-0.04% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
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.13% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.13%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.09%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.26% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.26%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.05%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.14%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.09%
MinOpts (-1.02% to +0.03%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.11%
realworld.run.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.02%
FullOpts (-0.27% to +0.01%)
Collection PDIFF
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries.pmi.linux.arm64.checked.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.27%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.07%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.03%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.10%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.04%
coreclr_tests.run.linux.x64.checked.mch -0.14%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
libraries_tests.run.linux.x64.Release.mch -0.11%
realworld.run.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.02%
FullOpts (-0.26% to +0.01%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.03%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.07%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
libraries_tests.run.linux.x64.Release.mch -0.02%
coreclr_tests.run.linux.x64.checked.mch -0.26%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.04% to +0.02%)
Collection PDIFF
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.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.04%
realworld.run.linux.arm.checked.mch +0.02%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.04% to +0.02%)
Collection PDIFF
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.04%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
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.02%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.03%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests.run.windows.x86.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch +0.01%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.07%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.04%
realworld.run.windows.x86.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Throughput diffs

Throughput diffs for windows/x64 ran on linux/x64

Overall (-0.13% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.13%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.09%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.26% 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.02%
coreclr_tests.run.windows.x64.checked.mch -0.26%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch -0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.01%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%

Details here


Throughput diffs for windows/x86 ran on linux/x86

Overall (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.03%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests.run.windows.x86.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.07%
realworld.run.windows.x86.checked.mch +0.01%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.07% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.01%
coreclr_tests.run.windows.x86.checked.mch -0.07%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.04%
realworld.run.windows.x86.checked.mch +0.01%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,505,432 contexts (1,007,092 MinOpts, 1,498,340 FullOpts).

MISSED contexts: base: 1,433 (0.06%), diff: 1,886 (0.08%)

Overall (-477,640 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,531,664 -192
benchmarks.run_pgo.linux.arm64.checked.mch 79,703,964 -2,200
benchmarks.run_tiered.linux.arm64.checked.mch 24,584,308 -1,508
coreclr_tests.run.linux.arm64.checked.mch 507,869,544 -118,224
libraries.crossgen2.linux.arm64.checked.mch 55,843,068 -416
libraries.pmi.linux.arm64.checked.mch 76,112,184 +13,896
libraries_tests.run.linux.arm64.Release.mch 393,594,124 -240,668
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,661,116 -128,912
realworld.run.linux.arm64.checked.mch 15,892,888 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 -84
MinOpts (-487,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -2,264
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -1,480
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -110,752
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -241,596
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 13,497,464 -131,072
FullOpts (+9,524 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,226,736 -192
benchmarks.run_pgo.linux.arm64.checked.mch 53,769,180 +64
benchmarks.run_tiered.linux.arm64.checked.mch 4,845,872 -28
coreclr_tests.run.linux.arm64.checked.mch 159,721,392 -7,472
libraries.crossgen2.linux.arm64.checked.mch 55,841,432 -416
libraries.pmi.linux.arm64.checked.mch 75,992,200 +13,896
libraries_tests.run.linux.arm64.Release.mch 178,462,172 +928
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,163,652 +2,160
realworld.run.linux.arm64.checked.mch 15,311,964 +668
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 -84

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,515,914 contexts (991,070 MinOpts, 1,524,844 FullOpts).

MISSED contexts: base: 1,584 (0.06%), diff: 1,995 (0.08%)

Overall (-297,309 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,323,346 +34
benchmarks.run_pgo.linux.x64.checked.mch 71,225,423 -2,069
benchmarks.run_tiered.linux.x64.checked.mch 21,423,742 -1,575
coreclr_tests.run.linux.x64.checked.mch 403,160,942 -124,017
libraries.crossgen2.linux.x64.checked.mch 38,726,572 -245
libraries.pmi.linux.x64.checked.mch 60,294,308 +10,312
libraries_tests.run.linux.x64.Release.mch 335,310,491 -115,530
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,293,350 -64,675
realworld.run.linux.x64.checked.mch 13,168,403 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,064,942 -146
MinOpts (-310,501 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 23,799,989 -2,568
benchmarks.run_tiered.linux.x64.checked.mch 17,740,780 -1,663
coreclr_tests.run.linux.x64.checked.mch 279,754,460 -124,548
libraries_tests.run.linux.x64.Release.mch 183,759,609 -116,186
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 10,617,768 -65,536
FullOpts (+13,192 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,024,043 +34
benchmarks.run_pgo.linux.x64.checked.mch 47,425,434 +499
benchmarks.run_tiered.linux.x64.checked.mch 3,682,962 +88
coreclr_tests.run.linux.x64.checked.mch 123,406,482 +531
libraries.crossgen2.linux.x64.checked.mch 38,725,374 -245
libraries.pmi.linux.x64.checked.mch 60,181,451 +10,312
libraries_tests.run.linux.x64.Release.mch 151,550,882 +656
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,675,582 +861
realworld.run.linux.x64.checked.mch 12,782,519 +602
smoke_tests.nativeaot.linux.x64.checked.mch 4,063,993 -146

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,269,757 contexts (932,669 MinOpts, 1,337,088 FullOpts).

MISSED contexts: base: 772 (0.03%), diff: 1,113 (0.05%)

Overall (-474,764 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,160,132 -140
benchmarks.run_pgo.osx.arm64.checked.mch 34,330,056 -4,868
benchmarks.run_tiered.osx.arm64.checked.mch 15,496,344 -1,484
coreclr_tests.run.osx.arm64.checked.mch 486,098,552 -111,356
libraries.crossgen2.osx.arm64.checked.mch 55,724,572 -420
libraries.pmi.osx.arm64.checked.mch 80,133,124 +12,424
libraries_tests.run.osx.arm64.Release.mch 323,089,700 -242,556
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,339,072 -126,996
realworld.run.osx.arm64.checked.mch 15,051,672 +632
MinOpts (-486,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -2,056
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -1,436
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -110,376
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -241,764
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 13,153,728 -131,072
FullOpts (+11,940 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,159,596 -140
benchmarks.run_pgo.osx.arm64.checked.mch 18,028,756 -2,812
benchmarks.run_tiered.osx.arm64.checked.mch 3,991,860 -48
coreclr_tests.run.osx.arm64.checked.mch 153,485,628 -980
libraries.crossgen2.osx.arm64.checked.mch 55,722,944 -420
libraries.pmi.osx.arm64.checked.mch 80,011,996 +12,424
libraries_tests.run.osx.arm64.Release.mch 119,373,852 -792
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,185,344 +4,076
realworld.run.osx.arm64.checked.mch 14,487,716 +632

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,339,448 contexts (938,449 MinOpts, 1,400,999 FullOpts).

MISSED contexts: base: 1,309 (0.06%), diff: 1,669 (0.07%)

Overall (-477,696 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,920 -132
benchmarks.run_pgo.windows.arm64.checked.mch 45,415,036 -2,144
benchmarks.run_tiered.windows.arm64.checked.mch 15,572,852 -1,616
coreclr_tests.run.windows.arm64.checked.mch 494,876,668 -116,340
libraries.crossgen2.windows.arm64.checked.mch 59,068,308 -488
libraries.pmi.windows.arm64.checked.mch 79,724,924 +12,420
libraries_tests.run.windows.arm64.Release.mch 329,166,036 -243,304
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,336,032 -126,656
realworld.run.windows.arm64.checked.mch 15,895,404 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 -152
MinOpts (-487,284 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -2,244
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -1,612
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -110,364
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -241,992
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 13,153,748 -131,072
FullOpts (+9,588 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,384 -132
benchmarks.run_pgo.windows.arm64.checked.mch 29,403,640 +100
benchmarks.run_tiered.windows.arm64.checked.mch 4,395,664 -4
coreclr_tests.run.windows.arm64.checked.mch 156,187,564 -5,976
libraries.crossgen2.windows.arm64.checked.mch 59,066,672 -488
libraries.pmi.windows.arm64.checked.mch 79,604,940 +12,420
libraries_tests.run.windows.arm64.Release.mch 125,732,440 -1,312
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,182,284 +4,416
realworld.run.windows.arm64.checked.mch 15,331,424 +716
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 -152

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,510,378 contexts (997,391 MinOpts, 1,512,987 FullOpts).

MISSED contexts: base: 1,370 (0.05%), diff: 1,834 (0.07%)

Overall (-301,854 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,974,011 -1,860
benchmarks.run.windows.x64.checked.mch 8,729,507 -41
benchmarks.run_pgo.windows.x64.checked.mch 36,109,508 -2,680
benchmarks.run_tiered.windows.x64.checked.mch 12,404,420 -1,741
coreclr_tests.run.windows.x64.checked.mch 392,683,922 -136,997
libraries.crossgen2.windows.x64.checked.mch 39,485,796 -309
libraries.pmi.windows.x64.checked.mch 61,518,188 +11,246
libraries_tests.run.windows.x64.Release.mch 280,541,334 -106,156
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 136,764,896 -63,789
realworld.run.windows.x64.checked.mch 14,124,383 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,880,142 -137
MinOpts (-303,461 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,491,049 -2,309
benchmarks.run_pgo.windows.x64.checked.mch 14,170,656 -2,618
benchmarks.run_tiered.windows.x64.checked.mch 9,099,239 -1,740
coreclr_tests.run.windows.x64.checked.mch 272,788,580 -123,764
libraries_tests.run.windows.x64.Release.mch 175,858,234 -107,494
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,619,106 -65,536
FullOpts (+1,607 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,482,962 +449
benchmarks.run.windows.x64.checked.mch 8,729,144 -41
benchmarks.run_pgo.windows.x64.checked.mch 21,938,852 -62
benchmarks.run_tiered.windows.x64.checked.mch 3,305,181 -1
coreclr_tests.run.windows.x64.checked.mch 119,895,342 -13,233
libraries.crossgen2.windows.x64.checked.mch 39,484,609 -309
libraries.pmi.windows.x64.checked.mch 61,404,667 +11,246
libraries_tests.run.windows.x64.Release.mch 104,683,100 +1,338
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,145,790 +1,747
realworld.run.windows.x64.checked.mch 13,737,774 +610
smoke_tests.nativeaot.windows.x64.checked.mch 4,879,195 -137

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,291,726 contexts (839,658 MinOpts, 1,452,068 FullOpts).

MISSED contexts: base: 1,452 (0.06%), diff: 1,770 (0.08%)

Overall (-134,992 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,594 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,920,659 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,455,009 -657
coreclr_tests.run.windows.x86.checked.mch 309,112,955 -73,057
libraries.crossgen2.windows.x86.checked.mch 31,712,132 -44
libraries.pmi.windows.x86.checked.mch 49,172,068 +8,800
libraries_tests.run.windows.x86.Release.mch 185,275,035 -37,197
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,601,231 -32,634
realworld.run.windows.x86.checked.mch 11,340,931 +698
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,898 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,318 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,313 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,332,028 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,185,188 +70
coreclr_tests.run.windows.x86.checked.mch 107,325,057 +4,296
libraries.crossgen2.windows.x86.checked.mch 31,711,072 -44
libraries.pmi.windows.x86.checked.mch 49,076,835 +8,800
libraries_tests.run.windows.x86.Release.mch 87,001,403 +395
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,921,167 +134
realworld.run.windows.x86.checked.mch 11,045,217 +698

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.13% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.13%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.04%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.08%
realworld.run.linux.arm64.checked.mch +0.01%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.25% to +0.02%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.02%
benchmarks.run_tiered.linux.arm64.checked.mch +0.02%
coreclr_tests.run.linux.arm64.checked.mch -0.25%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch -0.02%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.06%
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.12% 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.02%
coreclr_tests.run.linux.x64.checked.mch -0.12%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.09%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%
MinOpts (-1.05% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.06%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.24% to +0.03%)
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.03%
coreclr_tests.run.linux.x64.checked.mch -0.24%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch -0.02%
libraries_tests.run.linux.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
realworld.run.linux.x64.checked.mch +0.01%
smoke_tests.nativeaot.linux.x64.checked.mch +0.02%

Throughput diffs for osx/arm64 ran on windows/x64

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

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.06% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.01%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.06%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (-0.04% to +0.03%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch -0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.03%
libraries_tests.run.windows.arm64.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -0.04%
realworld.run.windows.arm64.checked.mch +0.01%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (-0.04% to +0.02%)
Collection PDIFF
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.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
libraries_tests.run.linux.arm.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.04%
realworld.run.linux.arm.checked.mch +0.02%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.04% to +0.02%)
Collection PDIFF
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.04%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries.pmi.linux.arm.checked.mch +0.02%
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.02%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.05%
coreclr_tests.run.linux.arm64.checked.mch -0.14%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.09%
libraries.pmi.linux.arm64.checked.mch -0.03%
MinOpts (-1.02% to +0.03%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.11%
coreclr_tests.run.linux.arm64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -1.02%
realworld.run.linux.arm64.checked.mch +0.01%
FullOpts (-0.27% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
libraries_tests.run.linux.arm64.Release.mch -0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.27%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
benchmarks.run.linux.arm64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.07%
libraries.pmi.linux.arm64.checked.mch -0.03%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.14% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch -0.14%
libraries_tests.run.linux.x64.Release.mch -0.04%
libraries.pmi.linux.x64.checked.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.10%
libraries.crossgen2.linux.x64.checked.mch +0.01%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
realworld.run.linux.x64.checked.mch +0.01%
FullOpts (-0.26% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch -0.26%
libraries_tests.run.linux.x64.Release.mch -0.02%
libraries.pmi.linux.x64.checked.mch -0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.07%
libraries.crossgen2.linux.x64.checked.mch +0.01%

Details here


@tannergooding
Copy link
Member Author

Looks like this particularly helps inlining eliminate dead branches and that in turn allows forward sub to do more. Without it, for a case like V7TarEntry(TarEntryType, string) (https://source.dot.net/#System.Formats.Tar/System/Formats/Tar/V7TarEntry.cs,5ad85c231090b5ad,references), we end up with trees like the following persisting up until fgMorphTree can fold them:

               [######] -----------                         *  JTRUE     void
               [######] N--------U-                         \--*  GT        int
               [######] -----------                            +--*  SUB       int
               [######] -----------                            |  +--*  CNS_INT   int    1
               [######] -----------                            |  \--*  CNS_INT   int    2
               [######] -----------                            \--*  CNS_INT   int    1

The fact that we couldn't remove it earlier means we missed opportunities like the following:

                [######] hA-XG------                         *  STOREIND  ref
                [######] ---X-------                         +--*  FIELD_ADDR byref  System.Formats.Tar.TarHeader:_magic
                [######] -----------                         |  \--*  LCL_VAR   ref    V05 tmp2
-               [######] -----------                         \--*  LCL_VAR   ref    V10 tmp7          (last use)
+               [######] -----------                         \--*  CNS_STR   ref   <string constant>

and

                [######] hA-XG+-----                         *  STOREIND  ref
                [######] -----+-----                         +--*  ADD       byref
                [######] -----+-----                         |  +--*  LCL_VAR   ref    V05 tmp2
                [######] -----+-----                         |  \--*  CNS_INT   long   32 Fseq[_magic]
-               [######] -----+-----                         \--*  LCL_VAR   ref    V10 tmp7          (last use)
+               [######] H----+-----                         \--*  CNS_INT(h) ref     ''

This also means, in this particular case, we're tracking 6 additional basic blocks all the way up through fgUpdateFlowGraph, at which point we get the same number, but we still have 2 extra local variables since they weren't handled by forward sub.

In both cases, we end up with CSE deciding to CSE CNS_INT(h) ref ''.

Before this PR we get (noting it looks like handle constants have an extra newline putting disconnecting the $207):

- N002 (  7, 13)              [000152] DA---------                         *  STORE_LCL_VAR ref    V12 tmp9         d:1 $VN.Void
- N001 (  3, 10) CSE #02 (use)[000182] H----------                         \--*  CNS_INT(h) ref     ''

+ N005 (  8, 14) [000133] DA---------                         *  STORE_LCL_VAR ref    V10 tmp7         d:1 $VN.Void
+ N004 (  4, 11) [000207] -A---------                         \--*  COMMA     ref    $207
+ N002 (  3, 10) [000205] DA---------                            +--*  STORE_LCL_VAR ref    V17 cse1         d:1 $VN.Void
+ N001 (  3, 10) [000178] H----------                            |  \--*  CNS_INT(h) ref     ''
+  $207
+ N003 (  1,  1) [000206] -----------                            \--*  LCL_VAR   ref    V17 cse1         u:1 $207

After this PR we instead get:

-N005 (  8, 15)              [000115] hA-XG------                         *  STOREIND  ref    $VN.Void
-N003 (  2,  2)              [000176] -------N---                         +--*  ADD       byref  $2c7
-N001 (  1,  1)              [000110] -----------                         |  +--*  LCL_VAR   ref    V05 tmp2         u:1 $1c2
-N002 (  1,  1)              [000175] -----------                         |  \--*  CNS_INT   long   40 Fseq[_version] $289
-N004 (  3, 10) CSE #02 (use)[000177] H----------                         \--*  CNS_INT(h) ref     ''

+N008 (  9, 16) [000109] hA-XG---R--                         *  STOREIND  ref    $VN.Void
+N007 (  2,  2) [000173] -------N---                         +--*  ADD       byref  $2c6
+N005 (  1,  1) [000104] -----------                         |  +--*  LCL_VAR   ref    V05 tmp2         u:1 $1c2
+N006 (  1,  1) [000172] -----------                         |  \--*  CNS_INT   long   32 Fseq[_magic] $288
+N004 (  4, 11) [000199] -A---------                         \--*  COMMA     ref    $207
+N002 (  3, 10) [000197] DA---------                            +--*  STORE_LCL_VAR ref    V17 cse1         d:1 $VN.Void
+N001 (  3, 10) [000174] H----------                            |  \--*  CNS_INT(h) ref     ''
+ $207
+N003 (  1,  1) [000198] -----------                            \--*  LCL_VAR   ref    V17 cse1         u:1 $207

We then hit Assertion prop where before the PR we get:

 N005 (  8,  7) [000109] hA-XG------                         *  STOREIND  ref    $VN.Void
 N003 (  2,  2) [000181] -------N---                         +--*  ADD       byref  $2c6
 N001 (  1,  1) [000104] -----------                         |  +--*  LCL_VAR   ref    V05 tmp2         u:1 $1c2
 N002 (  1,  1) [000180] -----------                         |  \--*  CNS_INT   long   32 Fseq[_magic] $288
-N004 (  3,  2) [000126] -----------                         \--*  LCL_VAR   ref    V10 tmp7         u:1 (last use) $207
+               [000209] H----------                         \--*  CNS_INT(h) long    ''
+ $207

but where we don't get the same with the PR, presumably because of the COMMA and because it might be viewed as "fighting" CSE. It's a bit awkward, because it appears that the user manually declaring a local, and the handle getting CSE'd into that, allows assertion prop to still propagate the constant out of that local.

This then causes us to emit additional CORINFO_HELP_ASSIGN_REF because we no longer see GTF_ICON_OBJ_HDL and must assume the store might not be frozen

Comment on lines 4867 to 4883
if (indir->OperIs(GT_STOREIND))
{
return false;
// We like CSE to happen for handles, as the codegen for loading a 64-bit constant can be pretty heavy
// and this is particularly true on platforms with a fixed-width instruction encoding. However, this
// pessimizes stores as we can no longer optimize around some object handles that would allow us to
// bypass the write barrier.
//
// In order to handle that, we'll propagate the IND_TGT_NOT_HEAP flag onto the store if the handle is
// directly or if the underlying value number is an applicable object handle.

const GenTree* data = indir->AsIndir()->Data();
if (data->IsIconHandle(GTF_ICON_OBJ_HDL) || vnStore->IsVNObjHandle(data->gtVNPair.GetConservative()))
{
indir->gtFlags |= GTF_IND_TGT_NOT_HEAP;
updated = true;
}
}
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 ended up being a simple workaround to the issue described above using the existing flag.

It even fixes some cases that we weren't handling today and ensures that we can continue using the CSE, without relying on LSRA making propagated constants reused itself.

Copy link
Member Author

@tannergooding tannergooding Feb 4, 2024

Choose a reason for hiding this comment

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

(actually change is courtesy EgorBo, from a discussion on Discord)

@tannergooding tannergooding force-pushed the fold-basic-arith branch 2 times, most recently from a97584e to 0236d0b Compare February 4, 2024 03:46
@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/arm64 ran on linux/x64

Diffs are based on 2,505,433 contexts (1,007,092 MinOpts, 1,498,341 FullOpts).

MISSED contexts: base: 1,433 (0.06%), diff: 1,885 (0.08%)

Overall (-941,616 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,531,664 -12,080
benchmarks.run_pgo.linux.arm64.checked.mch 79,703,964 -2,524
benchmarks.run_tiered.linux.arm64.checked.mch 24,584,308 -1,560
coreclr_tests.run.linux.arm64.checked.mch 507,869,544 -191,904
libraries.crossgen2.linux.arm64.checked.mch 55,843,068 -416
libraries.pmi.linux.arm64.checked.mch 76,112,184 -14,592
libraries_tests.run.linux.arm64.Release.mch 393,594,124 -262,436
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,662,880 -440,692
realworld.run.linux.arm64.checked.mch 15,892,888 -11,732
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 -3,680
MinOpts (-487,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -2,264
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -1,480
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -110,752
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -241,596
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 13,497,464 -131,072
FullOpts (-454,452 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,226,736 -12,080
benchmarks.run_pgo.linux.arm64.checked.mch 53,769,180 -260
benchmarks.run_tiered.linux.arm64.checked.mch 4,845,872 -80
coreclr_tests.run.linux.arm64.checked.mch 159,721,392 -81,152
libraries.crossgen2.linux.arm64.checked.mch 55,841,432 -416
libraries.pmi.linux.arm64.checked.mch 75,992,200 -14,592
libraries_tests.run.linux.arm64.Release.mch 178,462,172 -20,840
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,165,416 -309,620
realworld.run.linux.arm64.checked.mch 15,311,964 -11,732
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 -3,680

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,269,758 contexts (932,669 MinOpts, 1,337,089 FullOpts).

MISSED contexts: base: 772 (0.03%), diff: 1,112 (0.05%)

Overall (-923,512 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,160,132 -11,256
benchmarks.run_pgo.osx.arm64.checked.mch 34,330,056 -5,184
benchmarks.run_tiered.osx.arm64.checked.mch 15,496,344 -1,552
coreclr_tests.run.osx.arm64.checked.mch 486,098,552 -184,796
libraries.crossgen2.osx.arm64.checked.mch 55,724,572 -420
libraries.pmi.osx.arm64.checked.mch 80,133,124 -17,236
libraries_tests.run.osx.arm64.Release.mch 323,089,700 -254,160
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,340,828 -438,160
realworld.run.osx.arm64.checked.mch 15,051,672 -10,748
MinOpts (-486,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -2,056
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -1,436
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -110,376
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -241,764
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 13,153,728 -131,072
FullOpts (-436,808 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,159,596 -11,256
benchmarks.run_pgo.osx.arm64.checked.mch 18,028,756 -3,128
benchmarks.run_tiered.osx.arm64.checked.mch 3,991,860 -116
coreclr_tests.run.osx.arm64.checked.mch 153,485,628 -74,420
libraries.crossgen2.osx.arm64.checked.mch 55,722,944 -420
libraries.pmi.osx.arm64.checked.mch 80,011,996 -17,236
libraries_tests.run.osx.arm64.Release.mch 119,373,852 -12,396
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,187,100 -307,088
realworld.run.osx.arm64.checked.mch 14,487,716 -10,748

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,339,449 contexts (938,449 MinOpts, 1,401,000 FullOpts).

MISSED contexts: base: 1,309 (0.06%), diff: 1,668 (0.07%)

Overall (-949,664 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,920 -11,340
benchmarks.run_pgo.windows.arm64.checked.mch 45,415,036 -2,460
benchmarks.run_tiered.windows.arm64.checked.mch 15,572,852 -2,228
coreclr_tests.run.windows.arm64.checked.mch 494,876,668 -189,744
libraries.crossgen2.windows.arm64.checked.mch 59,068,308 -488
libraries.pmi.windows.arm64.checked.mch 79,724,924 -18,796
libraries_tests.run.windows.arm64.Release.mch 329,166,036 -254,648
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,337,788 -454,088
realworld.run.windows.arm64.checked.mch 15,895,404 -11,936
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 -3,936
MinOpts (-487,284 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -2,244
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -1,612
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -110,364
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -241,992
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 13,153,748 -131,072
FullOpts (-462,380 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,384 -11,340
benchmarks.run_pgo.windows.arm64.checked.mch 29,403,640 -216
benchmarks.run_tiered.windows.arm64.checked.mch 4,395,664 -616
coreclr_tests.run.windows.arm64.checked.mch 156,187,564 -79,380
libraries.crossgen2.windows.arm64.checked.mch 59,066,672 -488
libraries.pmi.windows.arm64.checked.mch 79,604,940 -18,796
libraries_tests.run.windows.arm64.Release.mch 125,732,440 -12,656
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,184,040 -323,016
realworld.run.windows.arm64.checked.mch 15,331,424 -11,936
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 -3,936

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,510,378 contexts (997,391 MinOpts, 1,512,987 FullOpts).

MISSED contexts: base: 1,370 (0.05%), diff: 1,834 (0.07%)

Overall (-741,486 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,974,011 -9,865
benchmarks.run.windows.x64.checked.mch 8,729,507 -12,984
benchmarks.run_pgo.windows.x64.checked.mch 36,109,508 -3,063
benchmarks.run_tiered.windows.x64.checked.mch 12,404,420 -1,799
coreclr_tests.run.windows.x64.checked.mch 392,683,922 -198,593
libraries.crossgen2.windows.x64.checked.mch 39,485,796 -309
libraries.pmi.windows.x64.checked.mch 61,518,188 -23,966
libraries_tests.run.windows.x64.Release.mch 280,541,334 -120,079
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 136,764,896 -354,630
realworld.run.windows.x64.checked.mch 14,124,383 -13,007
smoke_tests.nativeaot.windows.x64.checked.mch 4,880,142 -3,191
MinOpts (-303,461 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,491,049 -2,309
benchmarks.run_pgo.windows.x64.checked.mch 14,170,656 -2,618
benchmarks.run_tiered.windows.x64.checked.mch 9,099,239 -1,740
coreclr_tests.run.windows.x64.checked.mch 272,788,580 -123,764
libraries_tests.run.windows.x64.Release.mch 175,858,234 -107,494
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,619,106 -65,536
FullOpts (-438,025 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,482,962 -7,556
benchmarks.run.windows.x64.checked.mch 8,729,144 -12,984
benchmarks.run_pgo.windows.x64.checked.mch 21,938,852 -445
benchmarks.run_tiered.windows.x64.checked.mch 3,305,181 -59
coreclr_tests.run.windows.x64.checked.mch 119,895,342 -74,829
libraries.crossgen2.windows.x64.checked.mch 39,484,609 -309
libraries.pmi.windows.x64.checked.mch 61,404,667 -23,966
libraries_tests.run.windows.x64.Release.mch 104,683,100 -12,585
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,145,790 -289,094
realworld.run.windows.x64.checked.mch 13,737,774 -13,007
smoke_tests.nativeaot.windows.x64.checked.mch 4,879,195 -3,191

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.12% to +0.06%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.06%
benchmarks.run_pgo.linux.arm64.checked.mch +0.04%
benchmarks.run_tiered.linux.arm64.checked.mch +0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch +0.05%
libraries.pmi.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
realworld.run.linux.arm64.checked.mch +0.06%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.23% to +0.06%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.06%
benchmarks.run_pgo.linux.arm64.checked.mch +0.04%
benchmarks.run_tiered.linux.arm64.checked.mch +0.05%
coreclr_tests.run.linux.arm64.checked.mch -0.23%
libraries.crossgen2.linux.arm64.checked.mch +0.05%
libraries.pmi.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.06%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.11% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.04%
benchmarks.run_pgo.linux.x64.checked.mch +0.04%
benchmarks.run_tiered.linux.x64.checked.mch +0.03%
coreclr_tests.run.linux.x64.checked.mch -0.11%
libraries.crossgen2.linux.x64.checked.mch +0.06%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.07%
realworld.run.linux.x64.checked.mch +0.04%
smoke_tests.nativeaot.linux.x64.checked.mch +0.05%
MinOpts (-1.05% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.06%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.23% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.04%
benchmarks.run_pgo.linux.x64.checked.mch +0.04%
benchmarks.run_tiered.linux.x64.checked.mch +0.05%
coreclr_tests.run.linux.x64.checked.mch -0.23%
libraries.crossgen2.linux.x64.checked.mch +0.06%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch +0.04%
smoke_tests.nativeaot.linux.x64.checked.mch +0.05%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.08%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.05%
benchmarks.run_pgo.osx.arm64.checked.mch +0.02%
benchmarks.run_tiered.osx.arm64.checked.mch +0.03%
coreclr_tests.run.osx.arm64.checked.mch +0.01%
libraries.crossgen2.osx.arm64.checked.mch +0.05%
libraries.pmi.osx.arm64.checked.mch +0.08%
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.06%
MinOpts (-1.00% to +0.04%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.01%
benchmarks.run_pgo.osx.arm64.checked.mch +0.02%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch +0.04%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.02%
libraries_tests.run.osx.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.00%
realworld.run.osx.arm64.checked.mch +0.02%
FullOpts (-0.00% to +0.08%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.05%
benchmarks.run_pgo.osx.arm64.checked.mch +0.03%
benchmarks.run_tiered.osx.arm64.checked.mch +0.05%
libraries.crossgen2.osx.arm64.checked.mch +0.05%
libraries.pmi.osx.arm64.checked.mch +0.08%
libraries_tests.run.osx.arm64.Release.mch +0.04%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.02%
realworld.run.osx.arm64.checked.mch +0.06%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.00% to +0.08%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.05%
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
benchmarks.run_tiered.windows.arm64.checked.mch +0.04%
coreclr_tests.run.windows.arm64.checked.mch +0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.05%
libraries.pmi.windows.arm64.checked.mch +0.08%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.05%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.02%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.08%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.05%
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
benchmarks.run_tiered.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.05%
libraries.pmi.windows.arm64.checked.mch +0.08%
libraries_tests.run.windows.arm64.Release.mch +0.04%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.02%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.05%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.12% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.04%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.04%
coreclr_tests.run.windows.x64.checked.mch -0.12%
libraries.crossgen2.windows.x64.checked.mch +0.06%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.04%
smoke_tests.nativeaot.windows.x64.checked.mch +0.05%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.24% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.05%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.05%
coreclr_tests.run.windows.x64.checked.mch -0.24%
libraries.crossgen2.windows.x64.checked.mch +0.06%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.04%
realworld.run.windows.x64.checked.mch +0.04%
smoke_tests.nativeaot.windows.x64.checked.mch +0.05%

Details here


Throughput diffs for windows/x86 ran on linux/x86

Overall (-0.02% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.04%
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.02%
coreclr_tests.run.windows.x86.checked.mch -0.02%
libraries.crossgen2.windows.x86.checked.mch +0.03%
libraries.pmi.windows.x86.checked.mch +0.05%
libraries_tests.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.04%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.06% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.04%
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.02%
coreclr_tests.run.windows.x86.checked.mch -0.06%
libraries.crossgen2.windows.x86.checked.mch +0.03%
libraries.pmi.windows.x86.checked.mch +0.05%
libraries_tests.run.windows.x86.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.02%
realworld.run.windows.x86.checked.mch +0.04%

Details here


@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,515,915 contexts (991,070 MinOpts, 1,524,845 FullOpts).

MISSED contexts: base: 1,584 (0.06%), diff: 1,994 (0.08%)

Overall (-706,269 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,323,346 -12,894
benchmarks.run_pgo.linux.x64.checked.mch 71,225,423 -2,464
benchmarks.run_tiered.linux.x64.checked.mch 21,423,742 -1,702
coreclr_tests.run.linux.x64.checked.mch 403,160,942 -180,795
libraries.crossgen2.linux.x64.checked.mch 38,726,572 -245
libraries.pmi.linux.x64.checked.mch 60,294,308 -23,684
libraries_tests.run.linux.x64.Release.mch 335,310,491 -143,099
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,294,648 -325,386
realworld.run.linux.x64.checked.mch 13,168,403 -12,658
smoke_tests.nativeaot.linux.x64.checked.mch 4,064,942 -3,342
MinOpts (-310,501 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 23,799,989 -2,568
benchmarks.run_tiered.linux.x64.checked.mch 17,740,780 -1,663
coreclr_tests.run.linux.x64.checked.mch 279,754,460 -124,548
libraries_tests.run.linux.x64.Release.mch 183,759,609 -116,186
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 10,617,768 -65,536
FullOpts (-395,768 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,024,043 -12,894
benchmarks.run_pgo.linux.x64.checked.mch 47,425,434 +104
benchmarks.run_tiered.linux.x64.checked.mch 3,682,962 -39
coreclr_tests.run.linux.x64.checked.mch 123,406,482 -56,247
libraries.crossgen2.linux.x64.checked.mch 38,725,374 -245
libraries.pmi.linux.x64.checked.mch 60,181,451 -23,684
libraries_tests.run.linux.x64.Release.mch 151,550,882 -26,913
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,676,880 -259,850
realworld.run.linux.x64.checked.mch 12,782,519 -12,658
smoke_tests.nativeaot.linux.x64.checked.mch 4,063,993 -3,342

Details here


Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,291,726 contexts (839,658 MinOpts, 1,452,068 FullOpts).

MISSED contexts: base: 1,452 (0.06%), diff: 1,770 (0.08%)

Overall (-134,992 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,594 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,920,659 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,455,009 -657
coreclr_tests.run.windows.x86.checked.mch 309,112,955 -73,057
libraries.crossgen2.windows.x86.checked.mch 31,712,132 -44
libraries.pmi.windows.x86.checked.mch 49,172,068 +8,800
libraries_tests.run.windows.x86.Release.mch 185,275,035 -37,197
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,601,231 -32,634
realworld.run.windows.x86.checked.mch 11,340,931 +698
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,898 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,318 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,313 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,332,028 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,185,188 +70
coreclr_tests.run.windows.x86.checked.mch 107,325,057 +4,296
libraries.crossgen2.windows.x86.checked.mch 31,711,072 -44
libraries.pmi.windows.x86.checked.mch 49,076,835 +8,800
libraries_tests.run.windows.x86.Release.mch 87,001,403 +395
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,921,167 +134
realworld.run.windows.x86.checked.mch 11,045,217 +698

Details here


Throughput diffs

Throughput diffs for linux/arm ran on windows/x86

Overall (+0.00% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.05%
benchmarks.run_pgo.linux.arm.checked.mch +0.05%
benchmarks.run_tiered.linux.arm.checked.mch +0.05%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.crossgen2.linux.arm.checked.mch +0.06%
libraries.pmi.linux.arm.checked.mch +0.07%
libraries_tests.run.linux.arm.Release.mch +0.02%
realworld.run.linux.arm.checked.mch +0.06%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.01% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.05%
benchmarks.run_pgo.linux.arm.checked.mch +0.05%
benchmarks.run_tiered.linux.arm.checked.mch +0.06%
coreclr_tests.run.linux.arm.checked.mch -0.01%
libraries.crossgen2.linux.arm.checked.mch +0.06%
libraries.pmi.linux.arm.checked.mch +0.07%
libraries_tests.run.linux.arm.Release.mch +0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.03%
realworld.run.linux.arm.checked.mch +0.06%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

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

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.13% to +0.04%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch +0.04%
libraries_tests.run.linux.x64.Release.mch -0.02%
coreclr_tests.run.linux.x64.checked.mch -0.13%
smoke_tests.nativeaot.linux.x64.checked.mch +0.03%
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run.linux.x64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.08%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
realworld.run.linux.x64.checked.mch +0.03%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.11%
coreclr_tests.run.linux.x64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
realworld.run.linux.x64.checked.mch +0.01%
FullOpts (-0.25% to +0.04%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch +0.04%
coreclr_tests.run.linux.x64.checked.mch -0.25%
smoke_tests.nativeaot.linux.x64.checked.mch +0.03%
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
benchmarks.run.linux.x64.checked.mch +0.03%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
benchmarks.run_tiered.linux.x64.checked.mch +0.03%
realworld.run.linux.x64.checked.mch +0.03%

Details here


@tannergooding
Copy link
Member Author

CC. @dotnet/jit-contrib This should be ready for review now.

For MinOpts, we see up to a -1.10% improvement to TP (libraries_tests), with the worst case being a +0.06% regression (coreclr_tests).

For FullOpts, we see up to a -0.25% improvement to TP (coreclr_tests), with the worst case being a +0.08% regression (libraries.pmi).

For the size, we between -689.7KB and -927.4KB for x64/Arm64 overall. The improvements tend to be split about 50/50 between minopts and fullopts. For arm32 we see fewer improvements, but still land -230KB` of improvements with about 77% of those in minopts. -- There are still some regressions of course, but they are diminishingly few, mostly appearing to be edge cases caused by register selection or slightly different values getting optimized for large functions where we near the JIT limits.

For the size on x86 we see around -131.8KB of improvements, with all of them being in minopts; fullopts actually shows some size regressions for x86 to the tune of about +13.9KB. At a glance, it looks related to casts and sign/zero-extension, as we have many places with new movzx/movsx or where containment failed. -- We notably don't do costing consistently in gtSetEvalOrder for x86 and some of the numbers are very outdated (back from when we used the x87 FPU, not allowing CSE of some nodes that would be CSE'd on x64, etc).

@jakobbotsch
Copy link
Member

jakobbotsch commented Feb 4, 2024

Can you characterize the C# code that leads to new folding in MinOpts code? We need to make sure we do not regress the ability to set breakpoints (probably not if this is just folding trees only, but it would be good to double check).

// nullptr here, but the more conservative assert can help avoid JIT bugs

assert(a->GetKind() == FieldSeq::FieldKind::SimpleStaticKnownAddress);
assert(b->GetKind() == FieldSeq::FieldKind::SimpleStaticKnownAddress);
Copy link
Member

Choose a reason for hiding this comment

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

Did you hit that assert?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, its what was discussed further up in #97901 (comment)

Basically, we have an IL test that explicitly adds two ldsflda. It does so after a conv.i4, but that is a nop on 32-bit and a user can write such IL without the conv.i4 as well, so the assert was already somewhat incorrect just not hit due to us not constant folding this early.

Copy link
Member

Choose a reason for hiding this comment

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

Ok. Yeah I think we discussed it with SingleAccretion at some point

Copy link
Member

@EgorBo EgorBo left a comment

Choose a reason for hiding this comment

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

LGTM with a couple of nits and Jakob's request

@EgorBo
Copy link
Member

EgorBo commented Feb 4, 2024

Can you characterize the C# code that leads to new folding in MinOpts code? We need to make sure we do not regress the ability to set breakpoints (probably not if this is just folding trees only, but it would be good to double check).

My understanding that this should not affect debuggability because:

image

@tannergooding
Copy link
Member Author

tannergooding commented Feb 4, 2024

My understanding that this should not affect debuggability because:

This is my understanding as well. We explicitly avoid constant folding like this in true MinOpts (different from T0) or if generating DbgCode.


To give some explicit examples, however:

[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static nint GetCharVector256SpanLength(nint offset, nint length)
    => (length - offset) & ~(Vector256<ushort>.Count - 1);

Gets the following:

-       mov      ecx, 16
-       dec      ecx
-       not      ecx
-       movsxd   rcx, ecx
-       and      rax, rcx
-						;; size=23 bbWeight=1 PerfScore 4.25
+       and      rax, -16
+						;; size=12 bbWeight=1 PerfScore 3.25

It happens because Vector256<ushort>.Count is always a constant, you already can't "step into" it. Likewise, a breakpoint is always over the entire expression here, not any individual arithmetic operation.


There is maybe an interesting case with https://github.com/dotnet/runtime/blob/main/src/tests/JIT/Regression/VS-ia64-JIT/M00/b85316/b85316_M00.il where the diff is as follows:

-G_M4754_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M4754_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
-       vzeroupper 
        mov      rbp, rsp
-						;; size=7 bbWeight=1 PerfScore 2.25
-G_M4754_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-       vmovsd   xmm0, qword ptr [reloc @RWD00]
-       vxorps   xmm0, xmm0, xmmword ptr [reloc @RWD16]
-       vucomisd xmm0, qword ptr [reloc @RWD32]
-       jp       SHORT G_M4754_IG03
-       je       SHORT G_M4754_IG05
-						;; size=28 bbWeight=1 PerfScore 11.00
-G_M4754_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      eax, 5
-						;; size=5 bbWeight=1 PerfScore 0.25
-G_M4754_IG04:        ; bbWeight=1, epilog, nogc, extend
-       pop      rbp
-       ret      
-						;; size=2 bbWeight=1 PerfScore 1.50
-G_M4754_IG05:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+						;; size=4 bbWeight=1 PerfScore 1.25
+G_M4754_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      eax, 100
 						;; size=5 bbWeight=1 PerfScore 0.25
-G_M4754_IG06:        ; bbWeight=1, epilog, nogc, extend
+G_M4754_IG03:        ; bbWeight=1, epilog, nogc, extend
        pop      rbp
        ret      
 						;; size=2 bbWeight=1 PerfScore 1.50
-RWD00  	dq	4058C66666666666h	;         99.1
-RWD08  	dd	00000000h, 00000000h
-RWD16  	dq	8000000000000000h, 8000000000000000h
-RWD32  	dq	C058C66666666666h	;        -99.1
 
-
-; Total bytes of code 49, prolog size 7, PerfScore 16.75, instruction count 14, allocated bytes for code 49 (MethodHash=9460ed6d) for method _n:main():int (Tier0)
+; Total bytes of code 11, prolog size 4, PerfScore 3.00, instruction count 5, allocated bytes for code 11 (MethodHash=9460ed6d) for method _n:main():int (Tier0)

In this scenario, the JIT is able to constant fold the comparison between the two doubles and treat it as constant true. This even allows it to eliminate a dead branch in T0, but that is pre-existing and the same would happen if the user had done something that didn't involve neg (that is, if they had done ldc.r8 99.1; ldc.r8 99.1; ceq; brtrue PASS)

All the examples I'm finding are pretty similar, where its just trivial arithmetic involving constants that can now be folded.

@jakobbotsch
Copy link
Member

Thanks for checking.

@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,505,433 contexts (1,007,092 MinOpts, 1,498,341 FullOpts).

MISSED contexts: base: 1,433 (0.06%), diff: 1,885 (0.08%)

Overall (-941,616 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,531,664 -12,080
benchmarks.run_pgo.linux.arm64.checked.mch 79,703,964 -2,524
benchmarks.run_tiered.linux.arm64.checked.mch 24,584,308 -1,560
coreclr_tests.run.linux.arm64.checked.mch 507,869,544 -191,904
libraries.crossgen2.linux.arm64.checked.mch 55,843,068 -416
libraries.pmi.linux.arm64.checked.mch 76,112,184 -14,592
libraries_tests.run.linux.arm64.Release.mch 393,594,124 -262,436
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 164,662,880 -440,692
realworld.run.linux.arm64.checked.mch 15,892,888 -11,732
smoke_tests.nativeaot.linux.arm64.checked.mch 2,829,664 -3,680
MinOpts (-487,164 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 25,934,784 -2,264
benchmarks.run_tiered.linux.arm64.checked.mch 19,738,436 -1,480
coreclr_tests.run.linux.arm64.checked.mch 348,148,152 -110,752
libraries_tests.run.linux.arm64.Release.mch 215,131,952 -241,596
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 13,497,464 -131,072
FullOpts (-454,452 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,226,736 -12,080
benchmarks.run_pgo.linux.arm64.checked.mch 53,769,180 -260
benchmarks.run_tiered.linux.arm64.checked.mch 4,845,872 -80
coreclr_tests.run.linux.arm64.checked.mch 159,721,392 -81,152
libraries.crossgen2.linux.arm64.checked.mch 55,841,432 -416
libraries.pmi.linux.arm64.checked.mch 75,992,200 -14,592
libraries_tests.run.linux.arm64.Release.mch 178,462,172 -20,840
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch 151,165,416 -309,620
realworld.run.linux.arm64.checked.mch 15,311,964 -11,732
smoke_tests.nativeaot.linux.arm64.checked.mch 2,828,676 -3,680

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,515,915 contexts (991,070 MinOpts, 1,524,845 FullOpts).

MISSED contexts: base: 1,584 (0.06%), diff: 1,994 (0.08%)

Overall (-706,269 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,323,346 -12,894
benchmarks.run_pgo.linux.x64.checked.mch 71,225,423 -2,464
benchmarks.run_tiered.linux.x64.checked.mch 21,423,742 -1,702
coreclr_tests.run.linux.x64.checked.mch 403,160,942 -180,795
libraries.crossgen2.linux.x64.checked.mch 38,726,572 -245
libraries.pmi.linux.x64.checked.mch 60,294,308 -23,684
libraries_tests.run.linux.x64.Release.mch 335,310,491 -143,099
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 132,294,648 -325,386
realworld.run.linux.x64.checked.mch 13,168,403 -12,658
smoke_tests.nativeaot.linux.x64.checked.mch 4,064,942 -3,342
MinOpts (-310,501 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 23,799,989 -2,568
benchmarks.run_tiered.linux.x64.checked.mch 17,740,780 -1,663
coreclr_tests.run.linux.x64.checked.mch 279,754,460 -124,548
libraries_tests.run.linux.x64.Release.mch 183,759,609 -116,186
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 10,617,768 -65,536
FullOpts (-395,768 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 14,024,043 -12,894
benchmarks.run_pgo.linux.x64.checked.mch 47,425,434 +104
benchmarks.run_tiered.linux.x64.checked.mch 3,682,962 -39
coreclr_tests.run.linux.x64.checked.mch 123,406,482 -56,247
libraries.crossgen2.linux.x64.checked.mch 38,725,374 -245
libraries.pmi.linux.x64.checked.mch 60,181,451 -23,684
libraries_tests.run.linux.x64.Release.mch 151,550,882 -26,913
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch 121,676,880 -259,850
realworld.run.linux.x64.checked.mch 12,782,519 -12,658
smoke_tests.nativeaot.linux.x64.checked.mch 4,063,993 -3,342

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,269,758 contexts (932,669 MinOpts, 1,337,089 FullOpts).

MISSED contexts: base: 772 (0.03%), diff: 1,112 (0.05%)

Overall (-923,512 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,160,132 -11,256
benchmarks.run_pgo.osx.arm64.checked.mch 34,330,056 -5,184
benchmarks.run_tiered.osx.arm64.checked.mch 15,496,344 -1,552
coreclr_tests.run.osx.arm64.checked.mch 486,098,552 -184,796
libraries.crossgen2.osx.arm64.checked.mch 55,724,572 -420
libraries.pmi.osx.arm64.checked.mch 80,133,124 -17,236
libraries_tests.run.osx.arm64.Release.mch 323,089,700 -254,160
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 162,340,828 -438,160
realworld.run.osx.arm64.checked.mch 15,051,672 -10,748
MinOpts (-486,704 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 16,301,300 -2,056
benchmarks.run_tiered.osx.arm64.checked.mch 11,504,484 -1,436
coreclr_tests.run.osx.arm64.checked.mch 332,612,924 -110,376
libraries_tests.run.osx.arm64.Release.mch 203,715,848 -241,764
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 13,153,728 -131,072
FullOpts (-436,808 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,159,596 -11,256
benchmarks.run_pgo.osx.arm64.checked.mch 18,028,756 -3,128
benchmarks.run_tiered.osx.arm64.checked.mch 3,991,860 -116
coreclr_tests.run.osx.arm64.checked.mch 153,485,628 -74,420
libraries.crossgen2.osx.arm64.checked.mch 55,722,944 -420
libraries.pmi.osx.arm64.checked.mch 80,011,996 -17,236
libraries_tests.run.osx.arm64.Release.mch 119,373,852 -12,396
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch 149,187,100 -307,088
realworld.run.osx.arm64.checked.mch 14,487,716 -10,748

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,339,449 contexts (938,449 MinOpts, 1,401,000 FullOpts).

MISSED contexts: base: 1,309 (0.06%), diff: 1,668 (0.07%)

Overall (-949,664 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,920 -11,340
benchmarks.run_pgo.windows.arm64.checked.mch 45,415,036 -2,460
benchmarks.run_tiered.windows.arm64.checked.mch 15,572,852 -2,228
coreclr_tests.run.windows.arm64.checked.mch 494,876,668 -189,744
libraries.crossgen2.windows.arm64.checked.mch 59,068,308 -488
libraries.pmi.windows.arm64.checked.mch 79,724,924 -18,796
libraries_tests.run.windows.arm64.Release.mch 329,166,036 -254,648
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 171,337,788 -454,088
realworld.run.windows.arm64.checked.mch 15,895,404 -11,936
smoke_tests.nativeaot.windows.arm64.checked.mch 3,798,548 -3,936
MinOpts (-487,284 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 16,011,396 -2,244
benchmarks.run_tiered.windows.arm64.checked.mch 11,177,188 -1,612
coreclr_tests.run.windows.arm64.checked.mch 338,689,104 -110,364
libraries_tests.run.windows.arm64.Release.mch 203,433,596 -241,992
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 13,153,748 -131,072
FullOpts (-462,380 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,943,384 -11,340
benchmarks.run_pgo.windows.arm64.checked.mch 29,403,640 -216
benchmarks.run_tiered.windows.arm64.checked.mch 4,395,664 -616
coreclr_tests.run.windows.arm64.checked.mch 156,187,564 -79,380
libraries.crossgen2.windows.arm64.checked.mch 59,066,672 -488
libraries.pmi.windows.arm64.checked.mch 79,604,940 -18,796
libraries_tests.run.windows.arm64.Release.mch 125,732,440 -12,656
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch 158,184,040 -323,016
realworld.run.windows.arm64.checked.mch 15,331,424 -11,936
smoke_tests.nativeaot.windows.arm64.checked.mch 3,797,536 -3,936

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,510,378 contexts (997,391 MinOpts, 1,512,987 FullOpts).

MISSED contexts: base: 1,370 (0.05%), diff: 1,834 (0.07%)

Overall (-741,486 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,974,011 -9,865
benchmarks.run.windows.x64.checked.mch 8,729,507 -12,984
benchmarks.run_pgo.windows.x64.checked.mch 36,109,508 -3,063
benchmarks.run_tiered.windows.x64.checked.mch 12,404,420 -1,799
coreclr_tests.run.windows.x64.checked.mch 392,683,922 -198,593
libraries.crossgen2.windows.x64.checked.mch 39,485,796 -309
libraries.pmi.windows.x64.checked.mch 61,518,188 -23,966
libraries_tests.run.windows.x64.Release.mch 280,541,334 -120,079
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 136,764,896 -354,630
realworld.run.windows.x64.checked.mch 14,124,383 -13,007
smoke_tests.nativeaot.windows.x64.checked.mch 4,880,142 -3,191
MinOpts (-303,461 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,491,049 -2,309
benchmarks.run_pgo.windows.x64.checked.mch 14,170,656 -2,618
benchmarks.run_tiered.windows.x64.checked.mch 9,099,239 -1,740
coreclr_tests.run.windows.x64.checked.mch 272,788,580 -123,764
libraries_tests.run.windows.x64.Release.mch 175,858,234 -107,494
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 10,619,106 -65,536
FullOpts (-438,025 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,482,962 -7,556
benchmarks.run.windows.x64.checked.mch 8,729,144 -12,984
benchmarks.run_pgo.windows.x64.checked.mch 21,938,852 -445
benchmarks.run_tiered.windows.x64.checked.mch 3,305,181 -59
coreclr_tests.run.windows.x64.checked.mch 119,895,342 -74,829
libraries.crossgen2.windows.x64.checked.mch 39,484,609 -309
libraries.pmi.windows.x64.checked.mch 61,404,667 -23,966
libraries_tests.run.windows.x64.Release.mch 104,683,100 -12,585
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 126,145,790 -289,094
realworld.run.windows.x64.checked.mch 13,737,774 -13,007
smoke_tests.nativeaot.windows.x64.checked.mch 4,879,195 -3,191

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

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

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.13% to +0.04%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.13%
libraries_tests.run.linux.x64.Release.mch -0.02%
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
libraries.crossgen2.linux.x64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.08%
benchmarks.run_tiered.linux.x64.checked.mch +0.02%
smoke_tests.nativeaot.linux.x64.checked.mch +0.03%
realworld.run.linux.x64.checked.mch +0.02%
benchmarks.run.linux.x64.checked.mch +0.03%
MinOpts (-1.10% to +0.02%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.10%
realworld.run.linux.x64.checked.mch +0.01%
FullOpts (-0.25% to +0.04%)
Collection PDIFF
coreclr_tests.run.linux.x64.checked.mch -0.25%
benchmarks.run_pgo.linux.x64.checked.mch +0.02%
libraries.crossgen2.linux.x64.checked.mch +0.04%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.06%
benchmarks.run_tiered.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.03%
realworld.run.linux.x64.checked.mch +0.03%
benchmarks.run.linux.x64.checked.mch +0.03%

Details here


Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.12% to +0.06%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.06%
benchmarks.run_pgo.linux.arm64.checked.mch +0.04%
benchmarks.run_tiered.linux.arm64.checked.mch +0.03%
coreclr_tests.run.linux.arm64.checked.mch -0.12%
libraries.crossgen2.linux.arm64.checked.mch +0.05%
libraries.pmi.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.03%
realworld.run.linux.arm64.checked.mch +0.06%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%
MinOpts (-0.98% to +0.05%)
Collection PDIFF
benchmarks.run_pgo.linux.arm64.checked.mch +0.01%
benchmarks.run_tiered.linux.arm64.checked.mch +0.01%
coreclr_tests.run.linux.arm64.checked.mch +0.05%
libraries.crossgen2.linux.arm64.checked.mch +0.01%
libraries.pmi.linux.arm64.checked.mch +0.02%
libraries_tests.run.linux.arm64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.98%
realworld.run.linux.arm64.checked.mch +0.02%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.01%
FullOpts (-0.23% to +0.06%)
Collection PDIFF
benchmarks.run.linux.arm64.checked.mch +0.06%
benchmarks.run_pgo.linux.arm64.checked.mch +0.04%
benchmarks.run_tiered.linux.arm64.checked.mch +0.05%
coreclr_tests.run.linux.arm64.checked.mch -0.23%
libraries.crossgen2.linux.arm64.checked.mch +0.05%
libraries.pmi.linux.arm64.checked.mch +0.03%
libraries_tests.run.linux.arm64.Release.mch +0.01%
realworld.run.linux.arm64.checked.mch +0.06%
smoke_tests.nativeaot.linux.arm64.checked.mch +0.05%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.11% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.04%
benchmarks.run_pgo.linux.x64.checked.mch +0.04%
benchmarks.run_tiered.linux.x64.checked.mch +0.03%
coreclr_tests.run.linux.x64.checked.mch -0.11%
libraries.crossgen2.linux.x64.checked.mch +0.06%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.07%
realworld.run.linux.x64.checked.mch +0.04%
smoke_tests.nativeaot.linux.x64.checked.mch +0.05%
MinOpts (-1.05% to +0.05%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.01%
benchmarks.run_pgo.linux.x64.checked.mch +0.01%
benchmarks.run_tiered.linux.x64.checked.mch +0.01%
coreclr_tests.run.linux.x64.checked.mch +0.05%
libraries.crossgen2.linux.x64.checked.mch +0.01%
libraries.pmi.linux.x64.checked.mch +0.03%
libraries_tests.run.linux.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -1.05%
realworld.run.linux.x64.checked.mch +0.03%
smoke_tests.nativeaot.linux.x64.checked.mch +0.01%
FullOpts (-0.23% to +0.06%)
Collection PDIFF
benchmarks.run.linux.x64.checked.mch +0.04%
benchmarks.run_pgo.linux.x64.checked.mch +0.04%
benchmarks.run_tiered.linux.x64.checked.mch +0.05%
coreclr_tests.run.linux.x64.checked.mch -0.23%
libraries.crossgen2.linux.x64.checked.mch +0.06%
libraries.pmi.linux.x64.checked.mch +0.02%
libraries_tests.run.linux.x64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.05%
realworld.run.linux.x64.checked.mch +0.04%
smoke_tests.nativeaot.linux.x64.checked.mch +0.05%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.08%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.05%
benchmarks.run_pgo.osx.arm64.checked.mch +0.03%
benchmarks.run_tiered.osx.arm64.checked.mch +0.04%
coreclr_tests.run.osx.arm64.checked.mch +0.01%
libraries.crossgen2.osx.arm64.checked.mch +0.05%
libraries.pmi.osx.arm64.checked.mch +0.08%
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.06%
MinOpts (-1.00% to +0.04%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.01%
benchmarks.run_pgo.osx.arm64.checked.mch +0.02%
benchmarks.run_tiered.osx.arm64.checked.mch +0.02%
coreclr_tests.run.osx.arm64.checked.mch +0.04%
libraries.crossgen2.osx.arm64.checked.mch +0.01%
libraries.pmi.osx.arm64.checked.mch +0.02%
libraries_tests.run.osx.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch -1.00%
realworld.run.osx.arm64.checked.mch +0.02%
FullOpts (-0.00% to +0.08%)
Collection PDIFF
benchmarks.run.osx.arm64.checked.mch +0.05%
benchmarks.run_pgo.osx.arm64.checked.mch +0.03%
benchmarks.run_tiered.osx.arm64.checked.mch +0.05%
libraries.crossgen2.osx.arm64.checked.mch +0.05%
libraries.pmi.osx.arm64.checked.mch +0.08%
libraries_tests.run.osx.arm64.Release.mch +0.04%
libraries_tests_no_tiered_compilation.run.osx.arm64.Release.mch +0.02%
realworld.run.osx.arm64.checked.mch +0.06%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.00% to +0.08%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.05%
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
benchmarks.run_tiered.windows.arm64.checked.mch +0.04%
coreclr_tests.run.windows.arm64.checked.mch +0.02%
libraries.crossgen2.windows.arm64.checked.mch +0.05%
libraries.pmi.windows.arm64.checked.mch +0.08%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.05%
MinOpts (-1.00% to +0.05%)
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.02%
coreclr_tests.run.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.01%
libraries.pmi.windows.arm64.checked.mch +0.01%
libraries_tests.run.windows.arm64.Release.mch -0.11%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch -1.00%
realworld.run.windows.arm64.checked.mch +0.02%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.01%
FullOpts (+0.00% to +0.08%)
Collection PDIFF
benchmarks.run.windows.arm64.checked.mch +0.05%
benchmarks.run_pgo.windows.arm64.checked.mch +0.03%
benchmarks.run_tiered.windows.arm64.checked.mch +0.05%
libraries.crossgen2.windows.arm64.checked.mch +0.05%
libraries.pmi.windows.arm64.checked.mch +0.08%
libraries_tests.run.windows.arm64.Release.mch +0.04%
libraries_tests_no_tiered_compilation.run.windows.arm64.Release.mch +0.02%
realworld.run.windows.arm64.checked.mch +0.06%
smoke_tests.nativeaot.windows.arm64.checked.mch +0.05%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.12% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.04%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.04%
coreclr_tests.run.windows.x64.checked.mch -0.12%
libraries.crossgen2.windows.x64.checked.mch +0.06%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.07%
realworld.run.windows.x64.checked.mch +0.04%
smoke_tests.nativeaot.windows.x64.checked.mch +0.05%
MinOpts (-1.08% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.01%
benchmarks.run.windows.x64.checked.mch +0.02%
benchmarks.run_pgo.windows.x64.checked.mch +0.02%
benchmarks.run_tiered.windows.x64.checked.mch +0.02%
coreclr_tests.run.windows.x64.checked.mch +0.06%
libraries.crossgen2.windows.x64.checked.mch +0.01%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -1.08%
realworld.run.windows.x64.checked.mch +0.03%
smoke_tests.nativeaot.windows.x64.checked.mch +0.01%
FullOpts (-0.24% to +0.06%)
Collection PDIFF
aspnet.run.windows.x64.checked.mch +0.05%
benchmarks.run.windows.x64.checked.mch +0.03%
benchmarks.run_pgo.windows.x64.checked.mch +0.04%
benchmarks.run_tiered.windows.x64.checked.mch +0.05%
coreclr_tests.run.windows.x64.checked.mch -0.24%
libraries.crossgen2.windows.x64.checked.mch +0.06%
libraries.pmi.windows.x64.checked.mch +0.02%
libraries_tests.run.windows.x64.Release.mch +0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.04%
realworld.run.windows.x64.checked.mch +0.04%
smoke_tests.nativeaot.windows.x64.checked.mch +0.05%

Details here


Throughput diffs for linux/arm ran on windows/x86

Overall (+0.00% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.05%
benchmarks.run_pgo.linux.arm.checked.mch +0.05%
benchmarks.run_tiered.linux.arm.checked.mch +0.05%
coreclr_tests.run.linux.arm.checked.mch +0.01%
libraries.crossgen2.linux.arm.checked.mch +0.06%
libraries.pmi.linux.arm.checked.mch +0.07%
libraries_tests.run.linux.arm.Release.mch +0.02%
realworld.run.linux.arm.checked.mch +0.06%
MinOpts (-0.92% to +0.03%)
Collection PDIFF
coreclr_tests.run.linux.arm.checked.mch +0.03%
libraries.crossgen2.linux.arm.checked.mch +0.01%
libraries_tests.run.linux.arm.Release.mch -0.08%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch -0.92%
realworld.run.linux.arm.checked.mch +0.01%
FullOpts (-0.01% to +0.07%)
Collection PDIFF
benchmarks.run.linux.arm.checked.mch +0.05%
benchmarks.run_pgo.linux.arm.checked.mch +0.05%
benchmarks.run_tiered.linux.arm.checked.mch +0.06%
coreclr_tests.run.linux.arm.checked.mch -0.01%
libraries.crossgen2.linux.arm.checked.mch +0.06%
libraries.pmi.linux.arm.checked.mch +0.07%
libraries_tests.run.linux.arm.Release.mch +0.05%
libraries_tests_no_tiered_compilation.run.linux.arm.Release.mch +0.03%
realworld.run.linux.arm.checked.mch +0.06%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.02% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.04%
benchmarks.run_pgo.windows.x86.checked.mch +0.01%
benchmarks.run_tiered.windows.x86.checked.mch +0.02%
coreclr_tests.run.windows.x86.checked.mch -0.02%
libraries.crossgen2.windows.x86.checked.mch +0.03%
libraries.pmi.windows.x86.checked.mch +0.05%
libraries_tests.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch +0.04%
MinOpts (-1.08% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.02%
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.05%
libraries.crossgen2.windows.x86.checked.mch +0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.10%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -1.08%
realworld.run.windows.x86.checked.mch +0.03%
FullOpts (-0.06% to +0.05%)
Collection PDIFF
benchmarks.run.windows.x86.checked.mch +0.04%
benchmarks.run_pgo.windows.x86.checked.mch +0.02%
benchmarks.run_tiered.windows.x86.checked.mch +0.02%
coreclr_tests.run.windows.x86.checked.mch -0.06%
libraries.crossgen2.windows.x86.checked.mch +0.03%
libraries.pmi.windows.x86.checked.mch +0.05%
libraries_tests.run.windows.x86.Release.mch +0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch +0.02%
realworld.run.windows.x86.checked.mch +0.04%

Details here


@tannergooding tannergooding merged commit 14b08c8 into dotnet:main Feb 4, 2024
@tannergooding tannergooding deleted the fold-basic-arith branch February 4, 2024 17:39
@ryujit-bot
Copy link

Diff results for #97901

Assembly diffs

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,291,726 contexts (839,658 MinOpts, 1,452,068 FullOpts).

MISSED contexts: base: 1,452 (0.06%), diff: 1,770 (0.08%)

Overall (-134,992 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,594 -60
benchmarks.run_pgo.windows.x86.checked.mch 44,920,659 -841
benchmarks.run_tiered.windows.x86.checked.mch 9,455,009 -657
coreclr_tests.run.windows.x86.checked.mch 309,112,955 -73,057
libraries.crossgen2.windows.x86.checked.mch 31,712,132 -44
libraries.pmi.windows.x86.checked.mch 49,172,068 +8,800
libraries_tests.run.windows.x86.Release.mch 185,275,035 -37,197
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 103,601,231 -32,634
realworld.run.windows.x86.checked.mch 11,340,931 +698
MinOpts (-149,310 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 6,588,631 -870
benchmarks.run_tiered.windows.x86.checked.mch 4,269,821 -727
coreclr_tests.run.windows.x86.checked.mch 201,787,898 -77,353
libraries_tests.run.windows.x86.Release.mch 98,273,632 -37,592
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 8,680,064 -32,768
FullOpts (+14,318 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,105,313 -60
benchmarks.run_pgo.windows.x86.checked.mch 38,332,028 +29
benchmarks.run_tiered.windows.x86.checked.mch 5,185,188 +70
coreclr_tests.run.windows.x86.checked.mch 107,325,057 +4,296
libraries.crossgen2.windows.x86.checked.mch 31,711,072 -44
libraries.pmi.windows.x86.checked.mch 49,076,835 +8,800
libraries_tests.run.windows.x86.Release.mch 87,001,403 +395
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch 94,921,167 +134
realworld.run.windows.x86.checked.mch 11,045,217 +698

Details here


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.

5 participants