Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

JIT: Use successor edges instead of block targets for BBJ_SWITCH #98671

Merged
merged 7 commits into from
Feb 20, 2024

Conversation

amanasifkhalid
Copy link
Member

Part of #93020. Updates BBswtDesc::bbsDstTab to use successor edges instead of block targets for switch blocks. Also renames optRedirectBlock to optInitDuplicatedBlockTargets based on conversation here.

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

ghost commented Feb 19, 2024

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

Issue Details

Part of #93020. Updates BBswtDesc::bbsDstTab to use successor edges instead of block targets for switch blocks. Also renames optRedirectBlock to optInitDuplicatedBlockTargets based on conversation here.

Author: amanasifkhalid
Assignees: amanasifkhalid
Labels:

area-CodeGen-coreclr

Milestone: -

@ryujit-bot
Copy link

Diff results for #98671

Assembly diffs

Assembly diffs for linux/arm ran on linux/x86

Diffs are based on 2,250,512 contexts (832,197 MinOpts, 1,418,315 FullOpts).

MISSED contexts: 73,582 (3.17%)

Overall (-18 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 239,569,136 -18
FullOpts (-18 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 117,215,174 -18

Assembly diffs for windows/x86 ran on linux/x86

Diffs are based on 2,354,252 contexts (851,840 MinOpts, 1,502,412 FullOpts).

Overall (+2 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 48,695,572 +8
libraries_tests.run.windows.x86.Release.mch 190,251,789 -6
FullOpts (+2 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 41,973,910 +8
libraries_tests.run.windows.x86.Release.mch 91,155,401 -6

Details here


Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,293,443 contexts (933,876 MinOpts, 1,359,567 FullOpts).

Overall (-20 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,290,048 -4
coreclr_tests.run.osx.arm64.checked.mch 491,746,024 +0
libraries_tests.run.osx.arm64.Release.mch 313,602,060 -16
FullOpts (-20 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,918,744 -4
coreclr_tests.run.osx.arm64.checked.mch 153,251,180 +0
libraries_tests.run.osx.arm64.Release.mch 110,669,088 -16

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
MinOpts (-0.18% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.18%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%

Throughput diffs for linux/x64 ran on windows/x64

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

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.osx.arm64.checked.mch -0.01%
MinOpts (-0.20% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.01%
libraries_tests.run.osx.arm64.Release.mch -0.01%
realworld.run.osx.arm64.checked.mch -0.20%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.osx.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.arm64.checked.mch -0.01%
MinOpts (-0.19% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.01%
benchmarks.run_tiered.windows.arm64.checked.mch -0.01%
libraries_tests.run.windows.arm64.Release.mch -0.01%
realworld.run.windows.arm64.checked.mch -0.19%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.arm64.checked.mch -0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.x64.checked.mch -0.01%
MinOpts (-0.26% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x64.checked.mch -0.01%
benchmarks.run_tiered.windows.x64.checked.mch -0.01%
libraries_tests.run.windows.x64.Release.mch -0.01%
realworld.run.windows.x64.checked.mch -0.26%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.x64.checked.mch -0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

MinOpts (-0.16% to +0.00%)
Collection PDIFF
realworld.run.linux.arm.checked.mch -0.16%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.windows.x86.checked.mch -0.01%
realworld.run.windows.x86.checked.mch -0.01%
MinOpts (-0.27% to +0.01%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -0.01%
benchmarks.run_tiered.windows.x86.checked.mch -0.01%
libraries.pmi.windows.x86.checked.mch +0.01%
libraries_tests.run.windows.x86.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch -0.27%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.windows.x86.checked.mch -0.01%
realworld.run.windows.x86.checked.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
MinOpts (-0.19% to 0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.19%
benchmarks.run_pgo.linux.arm64.checked.mch -0.01%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%

Details here


@ryujit-bot
Copy link

Diff results for #98671

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,544,350 contexts (1,012,496 MinOpts, 1,531,854 FullOpts).

Overall (-140 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 77,518,372 -4
coreclr_tests.run.linux.arm64.checked.mch 518,928,384 +4
libraries_tests.run.linux.arm64.Release.mch 383,432,472 -140
FullOpts (-140 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 55,144,000 -4
coreclr_tests.run.linux.arm64.checked.mch 167,326,840 +4
libraries_tests.run.linux.arm64.Release.mch 167,615,256 -140

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,535,371 contexts (984,668 MinOpts, 1,550,703 FullOpts).

Overall (-134 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 67,166,891 -13
coreclr_tests.run.linux.x64.checked.mch 418,408,742 -57
libraries_tests.run.linux.x64.Release.mch 331,729,893 -64
FullOpts (-134 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,174,268 -13
coreclr_tests.run.linux.x64.checked.mch 130,639,266 -57
libraries_tests.run.linux.x64.Release.mch 147,894,249 -64

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,376,931 contexts (945,150 MinOpts, 1,431,781 FullOpts).

MISSED contexts: 5 (0.00%)

Overall (-20 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 46,555,288 -4
coreclr_tests.run.windows.arm64.checked.mch 505,264,984 +0
libraries_tests.run.windows.arm64.Release.mch 321,619,196 -16
FullOpts (-20 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 30,069,536 -4
coreclr_tests.run.windows.arm64.checked.mch 163,807,860 +0
libraries_tests.run.windows.arm64.Release.mch 117,557,144 -16

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,416,976 contexts (937,071 MinOpts, 1,479,905 FullOpts).

Overall (-59 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x64.checked.mch 34,024,626 -22
coreclr_tests.run.windows.x64.checked.mch 407,341,578 -26
libraries_tests.run.windows.x64.Release.mch 281,668,285 -11
FullOpts (-59 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x64.checked.mch 20,368,333 -22
coreclr_tests.run.windows.x64.checked.mch 126,875,214 -26
libraries_tests.run.windows.x64.Release.mch 106,974,901 -11

Details here


Throughput diffs

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch -0.01%
realworld.run.linux.x64.checked.mch -0.01%
MinOpts (-0.25% to 0.00%)
Collection PDIFF
benchmarks.run_pgo.linux.x64.checked.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.01%
libraries_tests.run.linux.x64.Release.mch -0.01%
realworld.run.linux.x64.checked.mch -0.25%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch -0.01%
realworld.run.linux.x64.checked.mch -0.01%

Details here


@amanasifkhalid
Copy link
Member Author

cc @dotnet/jit-contrib, @AndyAyersMS PTAL. Small diffs from changes in edge weights/likelihoods.

// Remove 'block' from the predecessor list of 'curJump'
fgRemoveRefPred(curJump, block);
// Remove 'curEdge'
fgRemoveRefPred(curEdge->getDestinationBlock(), block);
Copy link
Member

Choose a reason for hiding this comment

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

We should add a FlowEdge* overload for the self-removal case of fgRemoveRefPred, since the first thing it does is call fgGetPredForBlock to rediscover the edge we already had.

Likewise fgRemoveBlockAsPred can avoid edge searches in some cases.

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks for pointing that instance out. I added an overloaded fgRemoveRefPred implementation that takes the FlowEdge* and doesn't call fgGetPredForBlock unless the edge's dup count hits zero, and we need to splice it out of the succ block's pred list. Looks like I missed a spot; I'll fix this now.

@@ -6862,7 +6862,7 @@ class Compiler
bool optExtractInitTestIncr(
BasicBlock** pInitBlock, BasicBlock* bottom, BasicBlock* top, GenTree** ppInit, GenTree** ppTest, GenTree** ppIncr);

void optRedirectBlock(BasicBlock* blk,
void optInitDuplicatedBlockTargets(BasicBlock* blk,
Copy link
Member

Choose a reason for hiding this comment

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

Not sold on the name -- optSetMappedBlockTargets?

But we can sort it out later.

Copy link
Member Author

Choose a reason for hiding this comment

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

@jakobbotsch how do you feel about optSetMappedBlockTargets?

Copy link
Member

Choose a reason for hiding this comment

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

I'd be ok with that.

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks, I'll fix it now then

@ryujit-bot
Copy link

Diff results for #98671

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,270,268 contexts (836,977 MinOpts, 1,433,291 FullOpts).

MISSED contexts: 75,116 (3.20%)

Overall (-12 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 239,226,620 -12
FullOpts (-12 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 117,255,980 -12

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,350,557 contexts (850,572 MinOpts, 1,499,985 FullOpts).

MISSED contexts: 2,848 (0.12%)

Overall (+5 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 47,755,820 +8
libraries_tests.run.windows.x86.Release.mch 187,238,592 -3
FullOpts (+5 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.x86.checked.mch 41,060,206 +8
libraries_tests.run.windows.x86.Release.mch 88,427,276 -3

Details here


Assembly diffs for linux/arm64 ran on linux/x64

Diffs are based on 2,552,933 contexts (1,022,261 MinOpts, 1,530,672 FullOpts).

MISSED contexts: 1,300 (0.05%)

Overall (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 79,023,784 +0
coreclr_tests.run.linux.arm64.checked.mch 525,847,368 +0
libraries_tests.run.linux.arm64.Release.mch 382,591,448 -24
FullOpts (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,190,036 +0
coreclr_tests.run.linux.arm64.checked.mch 169,015,828 +0
libraries_tests.run.linux.arm64.Release.mch 166,098,176 -24

Assembly diffs for linux/x64 ran on linux/x64

Diffs are based on 2,540,651 contexts (986,212 MinOpts, 1,554,439 FullOpts).

MISSED contexts: 1,316 (0.05%)

Overall (+181 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,349,815 +28
coreclr_tests.run.linux.x64.checked.mch 417,667,412 +135
libraries_tests.run.linux.x64.Release.mch 328,359,812 +18
FullOpts (+181 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,788,139 +28
coreclr_tests.run.linux.x64.checked.mch 130,359,773 +135
libraries_tests.run.linux.x64.Release.mch 146,148,821 +18

Assembly diffs for osx/arm64 ran on linux/x64

Diffs are based on 2,308,638 contexts (937,510 MinOpts, 1,371,128 FullOpts).

MISSED contexts: 1,132 (0.05%)

Overall (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,678,976 +8
coreclr_tests.run.osx.arm64.checked.mch 500,389,076 +0
libraries_tests.run.osx.arm64.Release.mch 313,296,132 -32
FullOpts (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 18,148,984 +8
coreclr_tests.run.osx.arm64.checked.mch 162,069,656 +0
libraries_tests.run.osx.arm64.Release.mch 111,249,188 -32

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,387,065 contexts (950,047 MinOpts, 1,437,018 FullOpts).

MISSED contexts: 1,169 (0.05%)

Overall (-32 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 46,736,428 +4
coreclr_tests.run.windows.arm64.checked.mch 511,499,484 +0
libraries_tests.run.windows.arm64.Release.mch 320,238,700 -36
FullOpts (-32 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 30,452,180 +4
coreclr_tests.run.windows.arm64.checked.mch 165,596,824 +0
libraries_tests.run.windows.arm64.Release.mch 117,279,024 -36

Assembly diffs for windows/x64 ran on linux/x64

Diffs are based on 2,558,349 contexts (1,011,639 MinOpts, 1,546,710 FullOpts).

MISSED contexts: 3,924 (0.15%)

Overall (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 38,879,813 +2
benchmarks.run_pgo.windows.x64.checked.mch 36,663,291 +40
coreclr_tests.run.windows.x64.checked.mch 407,274,585 +69
libraries_tests.run.windows.x64.Release.mch 284,562,984 -31
FullOpts (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 18,449,122 +2
benchmarks.run_pgo.windows.x64.checked.mch 22,106,522 +40
coreclr_tests.run.windows.x64.checked.mch 126,759,692 +69
libraries_tests.run.windows.x64.Release.mch 108,640,954 -31

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
MinOpts (-0.19% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.19%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%

Throughput diffs for linux/x64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch -0.01%
realworld.run.linux.x64.checked.mch -0.01%
MinOpts (-0.25% to +0.00%)
Collection PDIFF
libraries_tests.run.linux.x64.Release.mch -0.01%
realworld.run.linux.x64.checked.mch -0.25%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.linux.x64.checked.mch -0.01%
realworld.run.linux.x64.checked.mch -0.01%

Throughput diffs for osx/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.osx.arm64.checked.mch -0.01%
MinOpts (-0.20% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.osx.arm64.checked.mch -0.01%
libraries_tests.run.osx.arm64.Release.mch -0.01%
realworld.run.osx.arm64.checked.mch -0.20%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.osx.arm64.checked.mch -0.01%

Throughput diffs for windows/arm64 ran on windows/x64

Overall (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.arm64.checked.mch -0.01%
MinOpts (-0.19% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.arm64.checked.mch -0.01%
benchmarks.run_tiered.windows.arm64.checked.mch -0.01%
libraries_tests.run.windows.arm64.Release.mch -0.01%
realworld.run.windows.arm64.checked.mch -0.19%
FullOpts (-0.01% to +0.00%)
Collection PDIFF
realworld.run.windows.arm64.checked.mch -0.01%

Throughput diffs for windows/x64 ran on windows/x64

Overall (-0.02% to -0.01%)
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.01%
benchmarks.run_tiered.windows.x64.checked.mch -0.02%
coreclr_tests.run.windows.x64.checked.mch -0.01%
libraries.crossgen2.windows.x64.checked.mch -0.01%
libraries.pmi.windows.x64.checked.mch -0.01%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.01%
realworld.run.windows.x64.checked.mch -0.02%
smoke_tests.nativeaot.windows.x64.checked.mch -0.01%
MinOpts (-0.27% to +0.00%)
Collection PDIFF
aspnet.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.01%
libraries.pmi.windows.x64.checked.mch -0.04%
libraries_tests.run.windows.x64.Release.mch -0.02%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.01%
realworld.run.windows.x64.checked.mch -0.27%
smoke_tests.nativeaot.windows.x64.checked.mch -0.01%
FullOpts (-0.02% to -0.01%)
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.01%
benchmarks.run_tiered.windows.x64.checked.mch -0.01%
coreclr_tests.run.windows.x64.checked.mch -0.01%
libraries.crossgen2.windows.x64.checked.mch -0.01%
libraries.pmi.windows.x64.checked.mch -0.01%
libraries_tests.run.windows.x64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch -0.01%
realworld.run.windows.x64.checked.mch -0.02%
smoke_tests.nativeaot.windows.x64.checked.mch -0.01%

Details here


Throughput diffs for linux/arm ran on windows/x86

MinOpts (-0.16% to +0.00%)
Collection PDIFF
realworld.run.linux.arm.checked.mch -0.16%

Throughput diffs for windows/x86 ran on windows/x86

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.windows.x86.checked.mch -0.01%
realworld.run.windows.x86.checked.mch -0.01%
MinOpts (-0.27% to +0.00%)
Collection PDIFF
benchmarks.run_pgo.windows.x86.checked.mch -0.01%
benchmarks.run_tiered.windows.x86.checked.mch -0.01%
libraries_tests.run.windows.x86.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.windows.x86.Release.mch -0.01%
realworld.run.windows.x86.checked.mch -0.27%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.windows.x86.checked.mch -0.01%
realworld.run.windows.x86.checked.mch -0.01%

Details here


Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%
MinOpts (-0.19% to 0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.19%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
libraries_tests.run.linux.arm64.Release.mch -0.01%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.arm64.checked.mch -0.01%
libraries.crossgen2.linux.arm64.checked.mch -0.01%

Throughput diffs for linux/x64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.x64.checked.mch -0.01%
libraries.crossgen2.linux.x64.checked.mch -0.01%
MinOpts (-0.24% to 0.00%)
Collection PDIFF
libraries_tests_no_tiered_compilation.run.linux.x64.Release.mch -0.01%
realworld.run.linux.x64.checked.mch -0.24%
libraries_tests.run.linux.x64.Release.mch -0.01%
benchmarks.run_pgo.linux.x64.checked.mch -0.01%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
realworld.run.linux.x64.checked.mch -0.01%
libraries.crossgen2.linux.x64.checked.mch -0.01%

Details here


@amanasifkhalid amanasifkhalid merged commit 98bdace into dotnet:main Feb 20, 2024
126 of 129 checks passed
@amanasifkhalid amanasifkhalid deleted the switch-succ branch February 20, 2024 18:35
@ryujit-bot
Copy link

Diff results for #98671

Assembly diffs

Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,270,268 contexts (836,977 MinOpts, 1,433,291 FullOpts).

MISSED contexts: 75,116 (3.20%)

Overall (-12 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 239,226,620 -12
FullOpts (-12 bytes)
Collection Base size (bytes) Diff size (bytes)
libraries_tests.run.linux.arm.Release.mch 117,255,980 -12

Details here


Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,552,933 contexts (1,022,261 MinOpts, 1,530,672 FullOpts).

MISSED contexts: 1,300 (0.05%)

Overall (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 79,023,784 +0
coreclr_tests.run.linux.arm64.checked.mch 525,847,368 +0
libraries_tests.run.linux.arm64.Release.mch 382,591,448 -24
FullOpts (-24 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 52,190,036 +0
coreclr_tests.run.linux.arm64.checked.mch 169,015,828 +0
libraries_tests.run.linux.arm64.Release.mch 166,098,176 -24

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,540,651 contexts (986,212 MinOpts, 1,554,439 FullOpts).

MISSED contexts: 1,316 (0.05%)

Overall (+181 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 71,349,815 +28
coreclr_tests.run.linux.x64.checked.mch 417,667,412 +135
libraries_tests.run.linux.x64.Release.mch 328,359,812 +18
FullOpts (+181 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,788,139 +28
coreclr_tests.run.linux.x64.checked.mch 130,359,773 +135
libraries_tests.run.linux.x64.Release.mch 146,148,821 +18

Details here


Throughput diffs

Throughput diffs for linux/arm64 ran on linux/x64

Overall (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%
MinOpts (-0.19% to 0.00%)
Collection PDIFF
libraries_tests.run.linux.arm64.Release.mch -0.01%
libraries_tests_no_tiered_compilation.run.linux.arm64.Release.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.19%
FullOpts (-0.01% to -0.00%)
Collection PDIFF
libraries.crossgen2.linux.arm64.checked.mch -0.01%
realworld.run.linux.arm64.checked.mch -0.01%

Details here


yurai007 added a commit to yurai007/runtime that referenced this pull request Feb 27, 2024
After dotnet#98671 we noticed that some of coreclr
tests started crashing because of infinite recursion seen like:

root@3b821d4a686a:/runtime/artifacts/tests/coreclr/linux.riscv64.Checked/CoreMangLib/system/buffer/ASURT_99893# $CORE_ROOT/corerun -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true ASURT_99893.dll ''
Process terminated. Encountered infinite recursion while looking up resource 'Arg_ResourceFileUnsupportedVersion' in System.Private.CoreLib. Verify the installation of .NET is complete and does not need repairing, and that the state of the process has not become corrupted.
   at System.Environment.FailFast(System.String)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String)
   at System.SR.get_Arg_ResourceFileUnsupportedVersion()
   at System.Resources.ResourceReader._ReadResources()
   at System.Resources.ResourceReader.ReadResources()
   at System.Resources.ResourceReader..ctor(System.IO.Stream, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceLocator>, Boolean)
   at System.Resources.RuntimeResourceSet..ctor(System.IO.Stream, Boolean)
   at System.Resources.ManifestBasedResourceGroveler.CreateResourceSet(System.IO.Stream, System.Reflection.Assembly)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(System.Globalization.CultureInfo, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceSet>, Boolean, Boolean)
   at System.Resources.ResourceManager.InternalGetResourceSet(System.Globalization.CultureInfo, Boolean, Boolean)
   at System.Resources.ResourceManager.GetString(System.String, System.Globalization.CultureInfo)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String)
   at System.SR.get_Arg_ResourceFileUnsupportedVersion()
   at System.Resources.ResourceReader._ReadResources()
   at System.Resources.ResourceReader.ReadResources()
   at System.Resources.ResourceReader..ctor(System.IO.Stream, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceLocator>, Boolean)
   at System.Resources.RuntimeResourceSet..ctor(System.IO.Stream, Boolean)
   at System.Resources.ManifestBasedResourceGroveler.CreateResourceSet(System.IO.Stream, System.Reflection.Assembly)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(System.Globalization.CultureInfo, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceSet>, Boolean, Boolean)

This change fixes issue by adding missing jumpTable increment.
jakobbotsch pushed a commit that referenced this pull request Feb 28, 2024
After #98671 we noticed that some of coreclr
tests started crashing because of infinite recursion seen like:

root@3b821d4a686a:/runtime/artifacts/tests/coreclr/linux.riscv64.Checked/CoreMangLib/system/buffer/ASURT_99893# $CORE_ROOT/corerun -p System.Reflection.Metadata.MetadataUpdater.IsSupported=false -p System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization=true ASURT_99893.dll ''
Process terminated. Encountered infinite recursion while looking up resource 'Arg_ResourceFileUnsupportedVersion' in System.Private.CoreLib. Verify the installation of .NET is complete and does not need repairing, and that the state of the process has not become corrupted.
   at System.Environment.FailFast(System.String)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String)
   at System.SR.get_Arg_ResourceFileUnsupportedVersion()
   at System.Resources.ResourceReader._ReadResources()
   at System.Resources.ResourceReader.ReadResources()
   at System.Resources.ResourceReader..ctor(System.IO.Stream, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceLocator>, Boolean)
   at System.Resources.RuntimeResourceSet..ctor(System.IO.Stream, Boolean)
   at System.Resources.ManifestBasedResourceGroveler.CreateResourceSet(System.IO.Stream, System.Reflection.Assembly)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(System.Globalization.CultureInfo, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceSet>, Boolean, Boolean)
   at System.Resources.ResourceManager.InternalGetResourceSet(System.Globalization.CultureInfo, Boolean, Boolean)
   at System.Resources.ResourceManager.GetString(System.String, System.Globalization.CultureInfo)
   at System.SR.InternalGetResourceString(System.String)
   at System.SR.GetResourceString(System.String)
   at System.SR.get_Arg_ResourceFileUnsupportedVersion()
   at System.Resources.ResourceReader._ReadResources()
   at System.Resources.ResourceReader.ReadResources()
   at System.Resources.ResourceReader..ctor(System.IO.Stream, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceLocator>, Boolean)
   at System.Resources.RuntimeResourceSet..ctor(System.IO.Stream, Boolean)
   at System.Resources.ManifestBasedResourceGroveler.CreateResourceSet(System.IO.Stream, System.Reflection.Assembly)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(System.Globalization.CultureInfo, System.Collections.Generic.Dictionary`2<System.String,System.Resources.ResourceSet>, Boolean, Boolean)

This change fixes issue by adding missing jumpTable increment.
@github-actions github-actions bot locked and limited conversation to collaborators Mar 22, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants