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

Late cast expansion: more improvements #97387

Merged
merged 12 commits into from
Jan 24, 2024

Conversation

EgorBo
Copy link
Member

@EgorBo EgorBo commented Jan 23, 2024

This PR:

  1. Renames impIsClassExact to eeIsClassExact
  2. Refactors fgLateCastExpansion to move all logic to a separate PickCandidateForTypeCheck that performs all legality and profitability checks and gives a strategy for the fgLateCastExpansionForCall on how to properly expand everything.
  3. Moves NativeAOT-specific exactClass-driven expansion from importer to the late phase.

Almost final step prior getting rid of the importer's cast expansion.

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

ghost commented Jan 23, 2024

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

Issue Details

This PR:

  1. Renames impIsClassExact to eeIsClassExact
  2. Refactors fgLateCastExpansion to move all logic to a separate PickCandidateForTypeCheck that performs all legality and profitability checks and gives a strategy for the fgLateCastExpansionForCall on how to properly expand everything.
  3. Moves NativeAOT-specific exactClass-driven expansion from importer to the late phase.

Almost final step prior getting rid of the importer's cast expansion.

Author: EgorBo
Assignees: EgorBo
Labels:

area-CodeGen-coreclr

Milestone: -

@EgorBo
Copy link
Member Author

EgorBo commented Jan 23, 2024

/azp run runtime-coreclr pgo, runtime-coreclr libraries-pgo, runtime-coreclr pgostress

Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@EgorBo EgorBo marked this pull request as draft January 24, 2024 00:15
@EgorBo
Copy link
Member Author

EgorBo commented Jan 24, 2024

/azp run runtime-coreclr pgo, runtime-coreclr libraries-pgo, runtime-coreclr pgostress

Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@EgorBo EgorBo marked this pull request as ready for review January 24, 2024 03:29
@EgorBo
Copy link
Member Author

EgorBo commented Jan 24, 2024

/azp run runtime-coreclr pgo, runtime-coreclr libraries-pgo, runtime-coreclr pgostress

Copy link

Azure Pipelines successfully started running 3 pipeline(s).

@EgorBo
Copy link
Member Author

EgorBo commented Jan 24, 2024

PTAL @jakobbotsch since you already reviewed this logc, cc @dotnet/jit-contrib

this phase is already capable of expanding all kinds of casts and can replace importer, but I need to resolve a couple of CQ nits first before I remove importer. Quite a few changes but the main idea is to put all legality and profitability checks to PickCandidateForTypeCheck

CI failures aren't related. it also passes the tests if I disable importer

// Note:
// We are conservative on arrays of primitive types here.
//
bool Compiler::eeIsClassExact(CORINFO_CLASS_HANDLE clsHnd)
Copy link
Member Author

Choose a reason for hiding this comment

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

I'll remove this method because Jan already moved it to VM side in #97424

// Likely class handle or NO_CLASS_HANDLE
//
static CORINFO_CLASS_HANDLE PickLikelyClass(Compiler* comp, IL_OFFSET offset, unsigned* likelihood)
enum TypeCheckFailedAction
Copy link
Member

Choose a reason for hiding this comment

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

Make it an enum class and remove the prefixes below?

Copy link
Member Author

Choose a reason for hiding this comment

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

Ah, indeed, addressed

Comment on lines 1837 to 1841
enum TypeCheckPassedAction
{
P_ReturnObj,
P_ReturnNull,
};
Copy link
Member

Choose a reason for hiding this comment

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

Ditto

Copy link
Member Author

Choose a reason for hiding this comment

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

addressed

// comp - Compiler instance
// castHelper - Cast helper call to expand
// commonCls - [out] Common denominator class for the fast and the fallback paths.
// likelihood - [out] Likelihood of successful type check (0..100)
Copy link
Member

Choose a reason for hiding this comment

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

Shouldn't it be inclusive in both ends?

Copy link
Member Author

Choose a reason for hiding this comment

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

addressed

Comment on lines +1896 to +1900
// These are never expanded:
// CORINFO_HELP_ISINSTANCEOF_EXCEPTION
// CORINFO_HELP_CHKCASTCLASS_SPECIAL
// CORINFO_HELP_READYTORUN_ISINSTANCEOF,
// CORINFO_HELP_READYTORUN_CHKCAST,
Copy link
Member

Choose a reason for hiding this comment

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

Just for my curiosity, why not expand the R2R version if we have static PGO?

Copy link
Member Author

Choose a reason for hiding this comment

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

Good point, but importer also always gives up on them currently, but I'll add it to my todo

Comment on lines 2033 to 2034
if ((comp->info.compCompHnd->getClassAttribs(result) &
(CORINFO_FLG_INTERFACE | CORINFO_FLG_ABSTRACT | CORINFO_FLG_STATIC)) != 0)
Copy link
Member

Choose a reason for hiding this comment

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

Is CORINFO_FLG_STATIC possible on a class? I think it only applies to methods. Static classes in C# are abstract and sealed in IL, I think.

Copy link
Member Author

Choose a reason for hiding this comment

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

Absolutely not needed, no idea why I added it here. this check was initially added to handle stale static pgo

if (typeCheckFailedAction == F_CallHelper_AlwaysThrows)
{
// fallback call is used only to throw InvalidCastException
fallbackBb = fgNewBBFromTreeAfter(BBJ_THROW, typeCheckBb, gtUnusedValNode(call), debugInfo, nullptr, true);
Copy link
Member

Choose a reason for hiding this comment

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

I don't think gtUnusedValNode is necessary. Also, shouldn't we mark the call with GTF_CALL_M_DOES_NOT_RETURN?

Copy link
Member Author

Choose a reason for hiding this comment

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

Addressed

Comment on lines 2254 to 2264
else if (typeCheckFailedAction == F_ReturnNull)
{
// if fallback call is not needed, we just assign null to tmp
GenTree* fallbackTree = gtNewTempStore(tmpNum, gtNewNull());
fallbackBb = fgNewBBFromTreeAfter(BBJ_ALWAYS, typeCheckBb, fallbackTree, debugInfo, lastBb, true);
}
else
{
GenTree* fallbackTree = gtNewTempStore(tmpNum, call);
fallbackBb = fgNewBBFromTreeAfter(BBJ_ALWAYS, typeCheckBb, fallbackTree, debugInfo, lastBb, true);
}
Copy link
Member

Choose a reason for hiding this comment

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

It seems the nice comment above is no longer fully accurate since the fallback BB can also assign null in some cases now.

Copy link
Member Author

Choose a reason for hiding this comment

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

Addressed

Copy link
Member

@jakobbotsch jakobbotsch left a comment

Choose a reason for hiding this comment

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

This generally looks great to me, I just had a few nits. You can consider running a SPMI collection on this branch to be able to get proper SPMI diffs (maybe once Jan's PR has been merged)

@ryujit-bot
Copy link

Diff results for #97387

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,494,760 contexts (1,003,806 MinOpts, 1,490,954 FullOpts).

MISSED contexts: base: 4,060 (0.16%), diff: 10,457 (0.42%)

Overall (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,916,664 +36
coreclr_tests.run.linux.arm64.checked.mch 508,918,764 -88
libraries_tests.run.linux.arm64.Release.mch 379,714,156 +132
FullOpts (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 55,980,204 +36
coreclr_tests.run.linux.arm64.checked.mch 159,693,708 -88
libraries_tests.run.linux.arm64.Release.mch 164,417,016 +132

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,588,583 contexts (1,052,329 MinOpts, 1,536,254 FullOpts).

MISSED contexts: base: 3,628 (0.14%), diff: 10,052 (0.39%)

Overall (+230 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 68,442,860 +60
coreclr_tests.run.linux.x64.checked.mch 458,922,977 -64
libraries_tests.run.linux.x64.Release.mch 332,086,382 +234
FullOpts (+230 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,613,103 +60
coreclr_tests.run.linux.x64.checked.mch 132,364,842 -64
libraries_tests.run.linux.x64.Release.mch 147,696,861 +234

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,256,559 contexts (930,876 MinOpts, 1,325,683 FullOpts).

MISSED contexts: base: 3,256 (0.14%), diff: 9,406 (0.42%)

Overall (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,446,500 +72
coreclr_tests.run.osx.arm64.checked.mch 484,502,820 -84
libraries_tests.run.osx.arm64.Release.mch 311,678,540 -4
FullOpts (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,973,220 +72
coreclr_tests.run.osx.arm64.checked.mch 152,196,364 -84
libraries_tests.run.osx.arm64.Release.mch 107,738,036 -4

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,312,039 contexts (931,543 MinOpts, 1,380,496 FullOpts).

MISSED contexts: base: 2,687 (0.12%), diff: 8,855 (0.38%)

Overall (-80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 47,253,428 +36
coreclr_tests.run.windows.arm64.checked.mch 494,497,636 -84
libraries_tests.run.windows.arm64.Release.mch 309,394,148 -32
FullOpts (-80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 31,003,044 +36
coreclr_tests.run.windows.arm64.checked.mch 155,406,108 -84
libraries_tests.run.windows.arm64.Release.mch 107,812,644 -32

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,486,103 contexts (983,689 MinOpts, 1,502,414 FullOpts).

MISSED contexts: base: 3,899 (0.16%), diff: 10,701 (0.43%)

Overall (+256 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,693,796 +119
benchmarks.run_pgo.windows.x64.checked.mch 35,261,613 +38
coreclr_tests.run.windows.x64.checked.mch 392,818,845 -68
libraries_tests.run.windows.x64.Release.mch 280,544,593 +167
FullOpts (+256 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,035,071 +119
benchmarks.run_pgo.windows.x64.checked.mch 21,026,636 +38
coreclr_tests.run.windows.x64.checked.mch 119,275,853 -68
libraries_tests.run.windows.x64.Release.mch 102,176,277 +167

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,231,354 contexts (827,812 MinOpts, 1,403,542 FullOpts).

MISSED contexts: base: 74,588 (3.23%), diff: 80,924 (3.50%)

Overall (-6 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,168,304 -66
libraries_tests.run.linux.arm.Release.mch 241,530,954 +60
FullOpts (-6 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 108,438,170 -66
libraries_tests.run.linux.arm.Release.mch 119,528,010 +60

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,289,781 contexts (841,817 MinOpts, 1,447,964 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 11,589 (0.50%)

Overall (+144 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 308,593,818 -53
libraries_tests.run.windows.x86.Release.mch 184,833,802 +197
FullOpts (+144 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 106,922,049 -53
libraries_tests.run.windows.x86.Release.mch 86,502,295 +197

Details here


…st-expansion-2

# Conflicts:
#	src/coreclr/jit/gentree.cpp
#	src/coreclr/jit/importer.cpp
@ryujit-bot
Copy link

Diff results for #97387

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,494,760 contexts (1,003,806 MinOpts, 1,490,954 FullOpts).

MISSED contexts: base: 4,060 (0.16%), diff: 10,457 (0.42%)

Overall (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 80,916,664 +36
coreclr_tests.run.linux.arm64.checked.mch 508,918,764 -88
libraries_tests.run.linux.arm64.Release.mch 379,714,156 +132
FullOpts (+80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.arm64.checked.mch 55,980,204 +36
coreclr_tests.run.linux.arm64.checked.mch 159,693,708 -88
libraries_tests.run.linux.arm64.Release.mch 164,417,016 +132

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,588,583 contexts (1,052,329 MinOpts, 1,536,254 FullOpts).

MISSED contexts: base: 3,628 (0.14%), diff: 10,052 (0.39%)

Overall (+230 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 68,442,860 +60
coreclr_tests.run.linux.x64.checked.mch 458,922,977 -64
libraries_tests.run.linux.x64.Release.mch 332,086,382 +234
FullOpts (+230 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.linux.x64.checked.mch 48,613,103 +60
coreclr_tests.run.linux.x64.checked.mch 132,364,842 -64
libraries_tests.run.linux.x64.Release.mch 147,696,861 +234

Assembly diffs for osx/arm64 ran on windows/x64

Diffs are based on 2,256,559 contexts (930,876 MinOpts, 1,325,683 FullOpts).

MISSED contexts: base: 3,256 (0.14%), diff: 9,406 (0.42%)

Overall (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 34,446,500 +72
coreclr_tests.run.osx.arm64.checked.mch 484,502,820 -84
libraries_tests.run.osx.arm64.Release.mch 311,678,540 -4
FullOpts (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.osx.arm64.checked.mch 17,973,220 +72
coreclr_tests.run.osx.arm64.checked.mch 152,196,364 -84
libraries_tests.run.osx.arm64.Release.mch 107,738,036 -4

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,312,039 contexts (931,543 MinOpts, 1,380,496 FullOpts).

MISSED contexts: base: 2,687 (0.12%), diff: 8,855 (0.38%)

Overall (-80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 47,253,428 +36
coreclr_tests.run.windows.arm64.checked.mch 494,497,636 -84
libraries_tests.run.windows.arm64.Release.mch 309,394,148 -32
FullOpts (-80 bytes)
Collection Base size (bytes) Diff size (bytes)
benchmarks.run_pgo.windows.arm64.checked.mch 31,003,044 +36
coreclr_tests.run.windows.arm64.checked.mch 155,406,108 -84
libraries_tests.run.windows.arm64.Release.mch 107,812,644 -32

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,486,103 contexts (983,689 MinOpts, 1,502,414 FullOpts).

MISSED contexts: base: 3,899 (0.16%), diff: 10,701 (0.43%)

Overall (+256 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,693,796 +119
benchmarks.run_pgo.windows.x64.checked.mch 35,261,613 +38
coreclr_tests.run.windows.x64.checked.mch 392,818,845 -68
libraries_tests.run.windows.x64.Release.mch 280,544,593 +167
FullOpts (+256 bytes)
Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,035,071 +119
benchmarks.run_pgo.windows.x64.checked.mch 21,026,636 +38
coreclr_tests.run.windows.x64.checked.mch 119,275,853 -68
libraries_tests.run.windows.x64.Release.mch 102,176,277 +167

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,231,354 contexts (827,812 MinOpts, 1,403,542 FullOpts).

MISSED contexts: base: 74,588 (3.23%), diff: 80,924 (3.50%)

Overall (-6 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,168,304 -66
libraries_tests.run.linux.arm.Release.mch 241,530,954 +60
FullOpts (-6 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 108,438,170 -66
libraries_tests.run.linux.arm.Release.mch 119,528,010 +60

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,289,781 contexts (841,817 MinOpts, 1,447,964 FullOpts).

MISSED contexts: base: 5,093 (0.22%), diff: 11,589 (0.50%)

Overall (+144 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 308,593,818 -53
libraries_tests.run.windows.x86.Release.mch 184,833,802 +197
FullOpts (+144 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 106,922,049 -53
libraries_tests.run.windows.x86.Release.mch 86,502,295 +197

Details here


@ryujit-bot
Copy link

Diff results for #97387

Assembly diffs

Assembly diffs for windows/arm64 ran on linux/x64

Diffs are based on 2,308,464 contexts (929,692 MinOpts, 1,378,772 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,334 (0.27%)

Overall (-68 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 494,677,796 -88
libraries_tests.run.windows.arm64.Release.mch 308,948,488 +20
FullOpts (-68 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 155,910,688 -88
libraries_tests.run.windows.arm64.Release.mch 107,542,328 +20

Details here


@EgorBo EgorBo merged commit bc402b0 into dotnet:main Jan 24, 2024
139 checks passed
@EgorBo EgorBo deleted the improve-late-cast-expansion-2 branch January 24, 2024 22:27
@ryujit-bot
Copy link

Diff results for #97387

Assembly diffs

Assembly diffs for linux/arm64 ran on windows/x64

Diffs are based on 2,498,787 contexts (1,011,240 MinOpts, 1,487,547 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,564 (0.26%)

Overall (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch 509,268,220 -88
libraries_tests.run.linux.arm64.Release.mch 384,368,152 +72
FullOpts (-16 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm64.checked.mch 160,122,292 -88
libraries_tests.run.linux.arm64.Release.mch 168,479,656 +72

Assembly diffs for linux/x64 ran on windows/x64

Diffs are based on 2,505,538 contexts (977,780 MinOpts, 1,527,758 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,724 (0.27%)

Overall (+159 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch 403,034,105 -78
libraries_tests.run.linux.x64.Release.mch 340,326,239 +237
FullOpts (+159 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.x64.checked.mch 123,216,185 -78
libraries_tests.run.linux.x64.Release.mch 156,408,468 +237

Assembly diffs for windows/arm64 ran on windows/x64

Diffs are based on 2,308,464 contexts (929,692 MinOpts, 1,378,772 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,334 (0.27%)

Overall (-68 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 494,677,796 -88
libraries_tests.run.windows.arm64.Release.mch 308,948,488 +20
FullOpts (-68 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.arm64.checked.mch 155,910,688 -88
libraries_tests.run.windows.arm64.Release.mch 107,542,328 +20

Assembly diffs for windows/x64 ran on windows/x64

Diffs are based on 2,366,596 contexts (928,756 MinOpts, 1,437,840 FullOpts).

MISSED contexts: base: 0 (0.00%), diff: 6,605 (0.28%)

Overall (+199 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x64.checked.mch 393,237,185 -64
libraries_tests.run.windows.x64.Release.mch 278,261,290 +263
FullOpts (+199 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x64.checked.mch 119,732,117 -64
libraries_tests.run.windows.x64.Release.mch 103,256,694 +263

Details here


Assembly diffs for linux/arm ran on windows/x86

Diffs are based on 2,230,531 contexts (825,130 MinOpts, 1,405,401 FullOpts).

MISSED contexts: base: 70,976 (3.08%), diff: 77,526 (3.36%)

Overall (-22 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 321,408,598 -62
libraries_tests.run.linux.arm.Release.mch 244,971,184 +40
FullOpts (-22 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.linux.arm.checked.mch 108,689,136 -62
libraries_tests.run.linux.arm.Release.mch 122,627,856 +40

Assembly diffs for windows/x86 ran on windows/x86

Diffs are based on 2,292,458 contexts (840,463 MinOpts, 1,451,995 FullOpts).

MISSED contexts: base: 7 (0.00%), diff: 6,670 (0.29%)

Overall (+127 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 308,783,332 -41
libraries_tests.run.windows.x86.Release.mch 187,431,731 +168
FullOpts (+127 bytes)
Collection Base size (bytes) Diff size (bytes)
coreclr_tests.run.windows.x86.checked.mch 107,089,027 -41
libraries_tests.run.windows.x86.Release.mch 89,274,581 +168

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.

None yet

3 participants