Skip to content

Crossgen2 determinism fix and stress mode - #87302

Merged
davidwrighton merged 4 commits into
dotnet:mainfrom
davidwrighton:crossgen2_determinism2
Jun 9, 2023
Merged

Crossgen2 determinism fix and stress mode#87302
davidwrighton merged 4 commits into
dotnet:mainfrom
davidwrighton:crossgen2_determinism2

Conversation

@davidwrighton

Copy link
Copy Markdown
Member

Fix determinism issue found in JIT

Fixed by always zero-initializing the GenTreeVcon's gtSimdVal field

The exact issue that I debugged to find was at
https://github.com/dotnet/runtime/blob/d88f9a0ed3ac7387d4c16905ff279f4310c03667/src/coreclr/jit/importercalls.cpp#LL3538C1-L3547C18 In particular the issue is that the code constructs a vector constant, but does not zero out the entire constant.

In addition, build a stress mode to make finding this sort of issue a bit easier, and use it in the rolling outerloop determinism tests

To use this, pass --determinism-stress:<howManyTimesToReRunTheJIT> to the compiler.
Also add use of this new mode to our crossgen2 comparison runs
Fixed by always zero-initializing the GenTreeVcon's gtSimdVal field

The exact issue that I debugged to find was at
https://github.com/dotnet/runtime/blob/d88f9a0ed3ac7387d4c16905ff279f4310c03667/src/coreclr/jit/importercalls.cpp#LL3538C1-L3547C18  In particular the issue is that the code constructs a vector constant, but does not zero out the entire constant.
@ghost ghost assigned davidwrighton Jun 9, 2023
@ghost ghost added the area-ReadyToRun label Jun 9, 2023
@davidwrighton
davidwrighton requested a review from jakobbotsch June 9, 2023 00:27
10 was too big a number for the first runs through this.
@davidwrighton
davidwrighton merged commit 89ef7f4 into dotnet:main Jun 9, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Jul 9, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

2 participants