Skip to content
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

Improve Arm64 Performance in .NET 10 #109652

Open
17 tasks
Tracked by #108988
kunalspathak opened this issue Nov 8, 2024 · 3 comments
Open
17 tasks
Tracked by #108988

Improve Arm64 Performance in .NET 10 #109652

kunalspathak opened this issue Nov 8, 2024 · 3 comments
Assignees
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI User Story A single user-facing feature. Can be grouped under an epic.
Milestone

Comments

@kunalspathak
Copy link
Member

We will continue to improve the code quality for Arm64 targets in .NET 10 to benefit our customers who run or wants to run their workload on Arm64 hardware.

General optimizations

PAC/RET feature enablement

  • Cobalt 100 hardware has pointer-authentication extension and as part of security measure, we would like to add the support in .NET 10, both for the .NET runtime as well as JIT code. More details can be found in ARM64: Support for PAC-RET in .NET10 #109457

Compact encoding

  • Improve code quality by making use of instructions that do more than one operation and hence improve the encoding of Arm64. Also, as part of this work, we will revisit the addressing modes that are ignored or used less frequently (e.g. post-index addressing mode) but can give much better code quality. Review the multi-op instruction usage for Arm64 #68028

Improvements in GC

Scalable Vector Extension

Wrap the non-streaming SVE work

Add support for vector length agnostic

The primary requirement before starting the design of streaming-mode SVE and SME would be to add support in JIT/.NET runtime for VL agnostic. This includes the following:

  • Introduce TYP_SIMD and educate various JIT code paths about the new type. See if some portion of this can be achievable on how we handle stackalloc.
  • Make sure getVectorTByteLength() returns VL that is available on the hardware and fix all the JIT code paths affected.
  • Sort locals such that TYP_SIMD / TYP_MASK are at the very last. They will be places at the bottom of the stack frame layout.
  • Access the stack offsets of TYP_SIMD / TYP_MASK using sve instructions
  • Enable non-streaming SVE for NativeAOT / crossgen with VL agnostic.

Reference: #101477

Design streaming mode SVE and SME

  • Come up with API design of streaming-mode SVE and SME and its interaction with non-streaming APIs as well as NEON APIs.
  • Implication of the streaming modes switch on overall .NET runtime executing process
  • Handling of diagnostics and debugging during streaming mode
  • NativeAOT and crossgen support in presence of streaming mode flag toggles
  • How faults and exceptions will be handled, and how the state restore will happen.
  • Handling of ZA storage register in LSRA
     

Stretch

References:

@kunalspathak kunalspathak added arch-arm64 User Story A single user-facing feature. Can be grouped under an epic. labels Nov 8, 2024
@dotnet-issue-labeler dotnet-issue-labeler bot added the needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners label Nov 8, 2024
@dotnet-policy-service dotnet-policy-service bot added the untriaged New issue has not been triaged by the area owner label Nov 8, 2024
@kunalspathak
Copy link
Member Author

@dotnet/arm64-contrib @dotnet/jit-contrib

@JulieLeeMSFT
Copy link
Member

Improvements in GC

CC @mangod9.

@JulieLeeMSFT JulieLeeMSFT removed untriaged New issue has not been triaged by the area owner needs-area-label An area label is needed to ensure this gets routed to the appropriate area owners labels Nov 8, 2024
@JulieLeeMSFT JulieLeeMSFT added this to the 10.0.0 milestone Nov 8, 2024
@JulieLeeMSFT JulieLeeMSFT added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Nov 8, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-arm64 area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI User Story A single user-facing feature. Can be grouped under an epic.
Projects
Status: Team User Stories
Development

No branches or pull requests

2 participants