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.
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.
Agree, will change in a follow up
jakobbotsch
left a comment
There was a problem hiding this comment.
LGTM, feel free to address the feedback in a follow up
This PR slightly refactors
PickCandidatesForTypeCheck:pickGDVcompareCastResultsfor all candidates while it's only needed for PGO-driven data (to make sure it's not stale).