-
Notifications
You must be signed in to change notification settings - Fork 5k
[wasm] Use packedsimd in hexconverter #115062
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
Conversation
src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.cs
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks right, with the caveat that I didn't test the new implementation myself
|
the select mask was swapped but the tests caught it. |
Looks like there are some regressions with invalid values, taking a look. |
It looks like the tests are only failing in windows without aggressive trimming, in CI, but not locally. ugh |
@radekdoulik it looks like the failing paths are on the AOT builds |
I have no luck replicating it locally. Tried both Release and Debug configurations. I was running |
Passed locally with AOT on windows using the same version of chrome. I wonder if this is another msvc error in the cross compiler (see: #114786)
|
cc @akoeplinger |
…lems that exposed (#115204) Enable System.Runtime.Intrinsics/tests in wasm smoke tests then fix the Shuffle intrinsics crash the tests exposed. See #115062 for details. The crash would happen when a non-constant index vector was passed to the llvm shuffle intrinsic which was exposed when the ShuffleNative path was added to the tests. The PR works around it by using the swizzle intrinsic which does not require a const index vector. If this does cause a regression it we should be able to restore the original implementation when we can verify a constant index vector is being passed. This also fixes the PackedSimd.Min/Max intrinsic implementation which had accidentally reversed min an max. Fixes #115203 * Fix the aot min/max intrinsics
I've extracted out some of the marginally related changes. What is left in the pr now is:
I'm happy to split out the fixes completely from the optimization but I think it is reviewable as is. |
/ba-g failures are not related |
Implement a PackedSimd vectorized version of Hexconverter.TryDecodeFromUtf16
Then fix several things that were broken in the AOT intrinsics to make that optimization work.