-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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: multiple candidates #97773
Conversation
…sion-4 # Conflicts: # src/coreclr/jit/helperexpansion.cpp
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsTODO: desc
|
Diff results for #97773Throughput diffsThroughput diffs for osx/arm64 ran on linux/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.16% to -0.04%)
Throughput diffs for windows/arm64 ran on linux/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.44% to -0.03%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.53% to -0.05%)
Details here |
Diff results for #97773Assembly diffsAssembly diffs for linux/arm64 ran on windows/x64Diffs are based on 2,368,028 contexts (1,007,092 MinOpts, 1,360,936 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 139,290 (5.56%) Overall (+178,720 bytes)
FullOpts (+178,720 bytes)
Assembly diffs for linux/x64 ran on windows/x64Diffs are based on 2,376,110 contexts (991,070 MinOpts, 1,385,040 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 141,799 (5.63%) Overall (+231,612 bytes)
FullOpts (+231,612 bytes)
Assembly diffs for osx/arm64 ran on windows/x64Diffs are based on 2,155,041 contexts (932,669 MinOpts, 1,222,372 FullOpts). MISSED contexts: base: 2 (0.00%), diff: 115,829 (5.10%) Overall (+139,100 bytes)
FullOpts (+139,100 bytes)
Assembly diffs for windows/arm64 ran on windows/x64Diffs are based on 2,214,063 contexts (938,449 MinOpts, 1,275,614 FullOpts). MISSED contexts: base: 9 (0.00%), diff: 127,054 (5.43%) Overall (+149,500 bytes)
FullOpts (+149,500 bytes)
Assembly diffs for windows/x64 ran on windows/x64Diffs are based on 2,378,858 contexts (997,391 MinOpts, 1,381,467 FullOpts). MISSED contexts: base: 3 (0.00%), diff: 133,354 (5.31%) Overall (+176,602 bytes)
FullOpts (+176,602 bytes)
Details here Assembly diffs for linux/arm ran on windows/x86Diffs are based on 2,094,036 contexts (829,328 MinOpts, 1,264,708 FullOpts). MISSED contexts: base: 71,274 (3.08%), diff: 216,627 (9.38%) Overall (+130,132 bytes)
FullOpts (+130,132 bytes)
Assembly diffs for windows/x86 ran on windows/x86Diffs are based on 2,163,608 contexts (839,658 MinOpts, 1,323,950 FullOpts). MISSED contexts: base: 45 (0.00%), diff: 129,888 (5.66%) Overall (+33,421 bytes)
FullOpts (+33,421 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.51% to -0.02%)
FullOpts (-0.60% to -0.05%)
Throughput diffs for linux/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.54% to -0.02%)
FullOpts (-0.63% to -0.04%)
Throughput diffs for windows/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.25% to -0.04%)
Details here Throughput diffs for linux/arm64 ran on linux/x64Overall (-0.50% to -0.02%)
FullOpts (-0.59% to -0.04%)
Throughput diffs for linux/x64 ran on linux/x64Overall (-0.54% to -0.02%)
FullOpts (-0.63% to -0.03%)
Details here Throughput diffs for linux/arm ran on windows/x86Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.17% to -0.03%)
FullOpts (-0.19% to -0.04%)
Throughput diffs for windows/x86 ran on windows/x86Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.29% to -0.04%)
FullOpts (-0.31% to -0.04%)
Details here |
Diff results for #97773Assembly diffsAssembly diffs for osx/arm64 ran on linux/x64Diffs are based on 2,158,070 contexts (932,669 MinOpts, 1,225,401 FullOpts). MISSED contexts: base: 2 (0.00%), diff: 112,800 (4.97%) Overall (+140,724 bytes)
FullOpts (+140,724 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.50% to -0.02%)
FullOpts (-0.60% to -0.05%)
Throughput diffs for linux/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.54% to -0.02%)
FullOpts (-0.62% to -0.04%)
Throughput diffs for osx/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.16% to -0.04%)
Throughput diffs for windows/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.44% to -0.03%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.53% to -0.05%)
Throughput diffs for windows/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.25% to -0.04%)
Details here |
Diff results for #97773Assembly diffsAssembly diffs for linux/arm64 ran on windows/x64Diffs are based on 2,372,445 contexts (1,007,092 MinOpts, 1,365,353 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 134,873 (5.38%) Overall (+181,556 bytes)
FullOpts (+181,556 bytes)
Assembly diffs for linux/x64 ran on windows/x64Diffs are based on 2,380,890 contexts (991,070 MinOpts, 1,389,820 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 137,019 (5.44%) Overall (+232,427 bytes)
FullOpts (+232,427 bytes)
Assembly diffs for osx/arm64 ran on windows/x64Diffs are based on 2,158,070 contexts (932,669 MinOpts, 1,225,401 FullOpts). MISSED contexts: base: 2 (0.00%), diff: 112,800 (4.97%) Overall (+140,724 bytes)
FullOpts (+140,724 bytes)
Assembly diffs for windows/arm64 ran on windows/x64Diffs are based on 2,217,453 contexts (938,449 MinOpts, 1,279,004 FullOpts). MISSED contexts: base: 9 (0.00%), diff: 123,664 (5.28%) Overall (+151,496 bytes)
FullOpts (+151,496 bytes)
Assembly diffs for windows/x64 ran on windows/x64Diffs are based on 2,383,357 contexts (997,391 MinOpts, 1,385,966 FullOpts). MISSED contexts: base: 3 (0.00%), diff: 128,855 (5.13%) Overall (+177,162 bytes)
FullOpts (+177,162 bytes)
Details here Assembly diffs for linux/arm ran on windows/x86Diffs are based on 2,100,809 contexts (829,328 MinOpts, 1,271,481 FullOpts). MISSED contexts: base: 71,274 (3.08%), diff: 209,854 (9.08%) Overall (+130,620 bytes)
FullOpts (+130,620 bytes)
Assembly diffs for windows/x86 ran on windows/x86Diffs are based on 2,168,453 contexts (839,658 MinOpts, 1,328,795 FullOpts). MISSED contexts: base: 45 (0.00%), diff: 125,043 (5.45%) Overall (+32,962 bytes)
FullOpts (+32,962 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.50% to -0.02%)
FullOpts (-0.60% to -0.05%)
Throughput diffs for linux/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.54% to -0.02%)
FullOpts (-0.62% to -0.04%)
Throughput diffs for osx/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.16% to -0.04%)
Throughput diffs for windows/arm64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.44% to -0.03%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.53% to -0.05%)
Throughput diffs for windows/x64 ran on windows/x64Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.16% to -0.02%)
FullOpts (-0.25% to -0.04%)
Details here Throughput diffs for linux/arm64 ran on linux/x64Overall (-0.50% to -0.02%)
FullOpts (-0.58% to -0.04%)
Throughput diffs for linux/x64 ran on linux/x64Overall (-0.54% to -0.02%)
FullOpts (-0.62% to -0.03%)
Details here Throughput diffs for linux/arm ran on windows/x86Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.17% to -0.02%)
FullOpts (-0.19% to -0.03%)
Throughput diffs for windows/x86 ran on windows/x86Warning: Different compilers used for base and diff JITs. Results may be misleading. Overall (-0.29% to -0.04%)
FullOpts (-0.31% to -0.04%)
Details here |
Diff results for #97773Assembly diffsAssembly diffs for linux/arm64 ran on windows/x64Diffs are based on 2,374,031 contexts (1,007,092 MinOpts, 1,366,939 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 133,287 (5.32%) Overall (+173,396 bytes)
FullOpts (+173,396 bytes)
Assembly diffs for linux/x64 ran on windows/x64Diffs are based on 2,382,582 contexts (991,070 MinOpts, 1,391,512 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 135,327 (5.37%) Overall (+219,372 bytes)
FullOpts (+219,372 bytes)
Assembly diffs for osx/arm64 ran on windows/x64Diffs are based on 2,159,155 contexts (932,669 MinOpts, 1,226,486 FullOpts). MISSED contexts: base: 2 (0.00%), diff: 111,715 (4.92%) Overall (+132,884 bytes)
FullOpts (+132,884 bytes)
Assembly diffs for windows/arm64 ran on windows/x64Diffs are based on 2,218,505 contexts (938,449 MinOpts, 1,280,056 FullOpts). MISSED contexts: base: 9 (0.00%), diff: 122,612 (5.24%) Overall (+144,232 bytes)
FullOpts (+144,232 bytes)
Assembly diffs for windows/x64 ran on windows/x64Diffs are based on 2,384,796 contexts (997,391 MinOpts, 1,387,405 FullOpts). MISSED contexts: base: 3 (0.00%), diff: 127,416 (5.07%) Overall (+160,483 bytes)
FullOpts (+160,483 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on windows/x64Overall (-0.49% to -0.02%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.58% to -0.03%)
Throughput diffs for linux/x64 ran on windows/x64Overall (-0.54% to -0.01%)
FullOpts (-0.62% to -0.03%)
Throughput diffs for osx/arm64 ran on windows/x64Overall (-0.14% to -0.01%)
FullOpts (-0.15% to -0.02%)
Throughput diffs for windows/arm64 ran on windows/x64Overall (-0.43% to -0.02%)
MinOpts (-0.00% to +0.01%)
FullOpts (-0.52% to -0.03%)
Throughput diffs for windows/x64 ran on windows/x64Overall (-0.16% to -0.02%)
FullOpts (-0.24% to -0.03%)
Details here Throughput diffs for linux/arm64 ran on linux/x64Overall (-0.50% to -0.02%)
FullOpts (-0.58% to -0.04%)
Throughput diffs for linux/x64 ran on linux/x64Overall (-0.54% to -0.02%)
FullOpts (-0.62% to -0.03%)
Details here |
@jakobbotsch @dotnet/jit-contrib PTAL, no diffs as expected (the phase is not yet enabled fully) |
static int PickCandidatesForTypeCheck(Compiler* comp, | ||
GenTreeCall* castHelper, | ||
CORINFO_CLASS_HANDLE* candidates, | ||
CORINFO_CLASS_HANDLE* commonCls, | ||
unsigned* likelihoods, | ||
TypeCheckFailedAction* typeCheckFailed, | ||
TypeCheckPassedAction* typeCheckPassed) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's probably warranted to make this return a struct instead of 6 separate return values (also the "Returns" in the function header looks outdated now)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree, will change in a follow up
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, feel free to address the feedback in a follow up
This PR slightly refactors
PickCandidatesForTypeCheck
:pickGDV
compareCastResults
for all candidates while it's only needed for PGO-driven data (to make sure it's not stale).