-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
[tvOS][arm64] Vector128Tests.Vector128NIntSumTest/Vector128NUIntSumTest failed on the rolling build #63746
Comments
Tagging subscribers to this area: @dotnet/area-system-runtime-intrinsics Issue Details
|
Tagging subscribers to 'os-tvos': @steveisok, @akoeplinger Issue Details
|
fyi - tvOS arm64 is our device run. |
@vargaz do you think this is going to work as expected at all on the device? |
I'm curious about the expected VectorNN story on devices and WASM as well. |
NEON is a part of ARMv8-A so Vector64/Vector128 should be fully supported on arm64 tvOS devices. These tests all passed on arm64 Linux hardware on CI, when the LLVM AOT and LLVM FullAOT lanes were still enabled per-PR. Additionally they passed when I ran them by hand last year on an arm64 Linux machine and on an arm64 Linux VM running on an M1 mac. I have an Apple TV device on hand so I can look into this. No idea about Wasm though. |
Just noting that these APIs in particular are new and have software fallbacks. They won't be accelerated on Mono yet and so the software fallback is what's likely failing here. The software fallback is: https://source.dot.net/#System.Private.CoreLib/Vector128.cs,f8444b31977d1b83: [Intrinsic]
public static T Sum<T>(Vector128<T> vector)
where T : struct
{
T sum = default;
for (int index = 0; index < Vector128<T>.Count; index++)
{
sum = Scalar<T>.Add(sum, vector.GetElementUnsafe(index));
}
return sum;
} The // ...
else if (typeof(T) == typeof(nint))
{
return (T)(object)((nint)(object)left + (nint)(object)right);
}
else if (typeof(T) == typeof(nuint))
{
return (T)(object)((nuint)(object)left + (nuint)(object)right);
}
// ... And [MethodImpl(MethodImplOptions.AggressiveInlining)]
internal static T GetElementUnsafe<T>(in this Vector128<T> vector, int index)
where T : struct
{
Debug.Assert((index >= 0) && (index < Vector128<T>.Count));
return Unsafe.Add(ref Unsafe.As<Vector128<T>, T>(ref Unsafe.AsRef(in vector)), index);
} Also noting however that this is the "safe" fallback implementation used by |
There is another set of test failures on tvos which appears related: |
https://dev.azure.com/dnceng/public/_build/results?buildId=1550469&view=ms.vss-test-web.build-test-results-tab&runId=43767104&resultId=112398&paneView=dotnet-dnceng.dnceng-anon-build-release-tasks.helix-anon-test-information-tab
@steveisok @akoeplinger
The text was updated successfully, but these errors were encountered: