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

SVE and SME on AArch64 #270

Open
2 of 16 tasks
nikomatsakis opened this issue Feb 18, 2025 · 2 comments
Open
2 of 16 tasks

SVE and SME on AArch64 #270

nikomatsakis opened this issue Feb 18, 2025 · 2 comments

Comments

@nikomatsakis
Copy link
Contributor

nikomatsakis commented Feb 18, 2025

Metadata
Point of contact @davidtwco
Team(s) compiler, lang, types
Goal document 2025h1/arm-sve-sme

Summary

Over the next six months, we will aim to merge nightly support for SVE and establish a path
towards stabilisation:

  • propose language changes which will enable scalable vector types to be represented in Rust's
    type system
  • land an experimental nightly implementation of SVE
  • identify remaining blockers for SVE stabilisation and plan their resolution
  • gain a better understanding of SME's implications for Rust and identify first steps towards design
    and implementation

Tasks and status

Land nightly experiment for SVE types

Upstream SVE types and intrinsics

Extending type system to support scalable vectors

  • Extending type system to support scalable vectors (@davidtwco)
  • Author RFC
  • Lang-team champion (lang Team)
  • RFC decision (types, lang Team)
  • Implementation
  • Standard reviews (compiler Team)

Investigate SME support

@nikomatsakis
Copy link
Contributor Author

This issue is intended for status updates only.

For general questions or comments, please contact the owner(s) directly.

@davidtwco
Copy link
Member

An initial update on what we've been up to and some background:

  • This goal is submitted on behalf of the Rust team at Arm, but primarily worked on by myself (@davidtwco) and @JamieCunliffe. Anyone interested can always contact me for updates and I'll keep this issue up-to-date.
  • @JamieCunliffe been working on supporting Arm's scalable vector extension (SVE) for a couple years - primarily in RFC: Add a scalable representation to allow support for scalable vectors rfcs#3268 and its implementation Support for a scalable simd representation rust#118917.
    • Through this work, we've discovered other changes to the language necessary to be able to support these types without special cases in the type system, which we're also working on (see below).
    • Jamie is still resolving feedback on this RFC and its implementation, and keeping it rebased. We hope that it can be landed experimentally now that there's a feasible path to remove the special cases in the type system (see below).
    • The next steps for this RFC and implementation are..
      • ..to continue to respond to feedback on the RFC and implementation.
  • I've (@davidtwco) been working on Hierarchy of Sized traits rfcs#3729 which improves Rust's support for exotically sized types, and would allow scalable vectors to be represented in the type system without special cases.
    • We've had two design meetings with the language team about the RFC and had a broadly positive reception.
    • I've been working on implementing the RFC: an initial implementation of the non-const traits has been completed and adding the const traits is in-progress.
      • The language team have indicated interest in seeing this land experimentally, but this will depend on whether the implementors of const traits are okay with this, as it would add to the work they need to do to make any syntactic changes requested by the language team in Make trait methods callable in const contexts rfcs#3762.
    • I'm continuing to respond to feedback on the RFC, but as this has largely trailed off, the next steps for this RFC are..
      • ..for the language team to decide to accept, reject, or request further changes to the RFC.
      • ..for progress on the implementation to continue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Project goals
Development

No branches or pull requests

2 participants