JIT: Fix cross crossgen comparison failures#112078
Conversation
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
/azp run runtime-coreclr crossgen2 outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Looks like xarch is now ok. OSX arm64 has a type layout verification failure. So maybe the jit side of things is in good shape. |
|
@dotnet/jit-contrib PTAL |
|
Previous commit's diffs have regressions, is it because of the addressing modes or PGO-related changes? |
src/coreclr/jit/scev.cpp
Outdated
| else | ||
| { | ||
| *result = m_comp->gtNewIconNode((ssize_t)cns->Value, scev->Type); | ||
| *result = m_comp->gtNewIconNode((target_ssize_t)cns->Value, scev->Type); |
There was a problem hiding this comment.
Can you make ScevConstant's constructor apply the sign extension for the genTypeSize(type) == 4 case instead? It better matches how GenTreeIntCon works (the constant is always stored sign extended).
There was a problem hiding this comment.
Not sure I did what you expected, so take a look. My local setup got messed up so it will be a while before I can tell if this works.
Ah, I hadn't looked at those. Would guess it is the PGO change, but let me verify. |
|
Spot checked some diffs, and yeah, looks like histogram computations were off before (always using host pointer sized bits to tabulate the histogram, then projecting to the low 32 bits). Typically value histograms on x64 were more "washed out" than they should have been). It was likely hard to spot this during testing as it required histograms with mixtures of sizes and a good idea what the actual final %s should have looked like (eg the old interpretation is approximately correct, especially when the % of the dominant entry is high). So the general sharpening in histogram % usually leads us to do some unrolling and so increase sizes (on x64 anyways). Note the only x86 diffs are in the crossgen collection; when jitting it was reading the histograms properly. |
|
ah, so some regressions are actually more value-probe driven intrinsic expanded? That explains some diffs I've looked into |
|
/azp run runtime-coreclr crossgen2 outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
* main: (30 commits) JIT: Optimize bit-wise AND with a constant mask in combination with a left shift in a compare (dotnet#111979) Change how we build the cross-OS DAC to support building in the VMR (dotnet#111927) Add Windows Server 2025 to test configurations (dotnet#111938) [PERF] Move performance testing YAML from dotnet/runtime to dotnet/performance (dotnet#111454) arm64: Add support for Bitwise OR NOT & XOR NOT (dotnet#111893) JIT: Fix cross crossgen comparison failures (dotnet#112078) Bump `StyleCop.Analyzers` to `1.2.0-beta.556` (dotnet#111278) Remove `RequiresProcessIsolation` on InterfaceFolding tests (dotnet#112098) Use hardlinks in helixpublishwitharcade (dotnet#112091) Update breaking change rules regarding byref/objref fields. (dotnet#112087) [daccess] Do not use USE_DAC_TABLE_RVA on Apple platforms (dotnet#112076) use collection syntax in illink (dotnet#108458) Include PDB for all TfmRuntimeSpecificPackageFile (dotnet#111879) [main] Update dependencies from dotnet/emsdk (dotnet#111690) Enable Mono tests (dotnet#111981) Let the debugger knows DATAS is on (dotnet#107115) Tests ran counter (dotnet#111145) Some System.Decimal performance improvements (dotnet#99212) [mono][mini] Remove support for the Xamarin.iOS and Xamarin.Mac assemblies in the AOT compiler. (dotnet#108886) Remove one usage of `Unsafe.AsPointer`. (dotnet#112079) ...

Fix a couple of issues that were causing cross-crossgen tests to fail
Fixes the jit-related issues in #111972