This item tracks the conversion of the System.Collections.BitArray class to use arm64 intrinsics.
I think I can put up a PR for this, but we seem to be lacking a couple instructions that would be nice to have:
AddAcross) to non-vector registers - vduph_laneq_s16 etc?@Gnbrkm41
Unloading values of single SIMD register where the vector contains a single element (e.g. Vector64 returned from AddAcross) to non-vector registers - vduph_laneq_s16 etc?
I believe this should be supported via ToScalar() method. cc @tannergooding to confirm
Unloading values of single SIMD register to a memory location ("Store") - vst1q_s16 etc?
I am working on these https://github.com/dotnet/runtime/pull/33461 https://github.com/dotnet/runtime/pull/33535
Ah, did not notice ToScalar extension method 馃檪. I did manage to work around using a different approach which probably is better.
It still would be nice to have those exposed as intrinsics for feature parity, though.
It still would be nice to have those exposed as intrinsics for feature parity, though.
For some cases, there isn't a corresponding intrinsic on the native side. Where there is, we also expose it there (for example int Sse2.ConvertToInt32(Vector128<int> value) on the x86 side, which corresponds to MOVD reg/m32, xmm).
It still would be nice to have those exposed as intrinsics for feature parity, though.
The similar functionality will be exposed as a part of https://github.com/dotnet/runtime/issues/24588 - I am working on this at the moment
@Gnbrkm41 FYI, I just merged Store intrinsics implementation (#33535), so you should be unblocked now.
Let me know if you need some help with running you pr on an arm64 device/collecting jit disasm for this issue.