-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
matrix4x4createfromaxisangletest failing on NativeAOT #72149
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
cc @LakshanF |
Deleted duplicates in runfo, didn't mean to close this |
#72108 has the RR passing (including the Linux-arm64 platform). Waiting for some checks to complete in the runtime pipeline that seems to be due to service outage |
The NativeAOT rolling runs are passing with #72108 |
Failed again in #71485 |
Blocking the test in #72437. The failure looks non-determinstic. We've seen it fail on Windows and Linux x64 (I didn't go over all the above failures, but it might not be a problem on ARM64). The test is using Vectors. I wonder if there's a problem with preservation of XMM registers or something like that. Cc @VSadov as this might be in your area of interest. (This has been happening for a while so it's not from the Linux suspension PR that just merged.) |
Have we seen this failure on win-x64? I would suspect preserving of the xmm result in 2-register return case. Win-x64 would not be affected by that. |
I've looked through a few failures and it looks like the failures are x64-specific. They were seen on Linux and Windows, but I have not seen a failure on ARM64 This is interesting because Windows and Linux have different specifics in terms of preserving xmm registers (i.e. in Linux all xmm are volatile, but not on Windows, on the other hand Linux can return two xmm registers from a call) It is hard to see commonality here, that would also be specific to NativeAOT. |
now I can build the same commit locally and see what the diffs are in the bits or when executing/debugging |
The difference start when the following line is executed:
The first My locally built exe, that passes the test, loads
The failing exe from the lab build loads:
@MichalStrehovsky |
Vector3 is 12 bytes, but the readonly data that The questions to ask:
|
This is silent bad codegen. We should fix it for .NET 7. |
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsFrequency - last 30 days as of 8/27:
Note: main branch failures in last 30 days Runfo report
|
We try to promote 12b simd to 16b everywhere where possible so I guess the data section's value has to be 16 bytes with zeroed last 4 bytes indeed |
We don't have any strict requirement here. For most operations ( The few cases where it crosses lanes (such as |
Given this is NAOT only and NAOT must target a lower baseline, its possible there is a bug in the I'll take a look tomorrow. |
If we don't have any other test coverage for the lower baselines, it might be a good quality week topic. With NAOT one at least has a deterministic repro once a bad binary has been produced. Running into this in a JIT configuration would be a lot more difficult to root cause. This is not the first issue caused by this test hole - there were #72081 and #72158 just in the past month. NAOT covers the lowest denominator but there's a whole spectrum in between the lowest denominator and whatever machines we run the tests on that can happen in the real world and it looks like we don't test. |
We do test, but only in the outer loop and only for the runtime tests. There has been a longstanding issue to also run the library tests under the various JIT Stress options for ISA enablement |
Assigning to Tanner. |
@tannergooding Did you have a chance to take a look? |
Yes. but it doesn't look to be in the The relevant logic is here: https://github.com/dotnet/runtime/blob/main/src/coreclr/jit/lowerxarch.cpp#L3350 We pick
|
The called Matrix and Quaternion methods aren't accelerated, just the The test doesn't really use any special tricks or code paths either:
|
Here is codegen for
I think Does this analysis make sense? Can you take it from here? |
Yes, that makes sense. It should definitely be multiplying I'll see about getting a fix up first thing tomorrow. |
Frequency - last 30 days as of 8/27:
Note: main branch failures in last 30 days
Runfo report
The text was updated successfully, but these errors were encountered: