Runtime: Optimize System.Collections.BitArray using arm64 intrinsics

Created on 6 Mar 2020  路  6Comments  路  Source: dotnet/runtime

This item tracks the conversion of the System.Collections.BitArray class to use arm64 intrinsics.

Related: https://github.com/dotnet/runtime/issues/33308

arch-arm64 area-System.Collections

All 6 comments

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:

  1. 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?
  2. Unloading values of single SIMD register to a memory location ("Store") - vst1q_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.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

iCodeWebApps picture iCodeWebApps  路  3Comments

GitAntoinee picture GitAntoinee  路  3Comments

v0l picture v0l  路  3Comments

yahorsi picture yahorsi  路  3Comments

omariom picture omariom  路  3Comments