Skip to content

Conversation

davidwrighton
Copy link
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
@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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants