11# SVE and SME on AArch64
22
3- | Metadata | |
4- | :-- | :-- |
5- | Point of contact | @davidtwco |
6- | Status | Proposed |
7- | Zulip channel | N/A |
8- | Tracking issue | [ rust-lang/rust-project-goals #270 ] |
9- | [ compiler] champion | @davidtwco |
10- | [ lang] champion | @nikomatsakis |
11- | [ libs] champion | @Amanieu |
3+ | Metadata | |
4+ | :-- | :-- |
5+ | Point of contact | @davidtwco |
6+ | Status | Proposed |
7+ | Zulip channel | N/A |
8+ | Tracking issue | [ rust-lang/rust-project-goals #270 ] |
9+ | [ compiler] champion | @davidtwco |
10+ | [ lang] champion | @nikomatsakis |
11+ | [ libs] champion | @Amanieu |
1212
1313## Summary
1414
@@ -73,39 +73,12 @@ capabilities.
7373
7474### The status quo
7575
76- SVE is currently entirely unsupported by Rust, but progress is being made:
77-
78- - [ rfcs #3838 ] is open and proposes adding support for scalable vector types to
79- the language. It has historically been blocked on requiring exceptions in the
80- type system for these types to be considered ` Sized ` and act as value types.
81- [ rfcs #3729 ] addresses these blockers, so this RFC should be able to be
82- advanced once [ rfcs #3729 ] is ready
83- - [ rust #143924 ] has an proposed implementation for this relying on
84- exceptions in the type system until an implementation of [ rfcs #3729 ] is
85- ready
86- - It may be possible to land an implementation of this experimentally given
87- that there is a realistic approach to resolving its implementation
88- blockers
89- - [ stdarch #1509 ] is ready to add SVE types and intrinsics once
90- [ rust #143924 ] has added the infrastructure to support these types
91- - [ rfcs #3729 ] proposes extending Rust's notion of sizedness to introduce a
92- hierarchy of sizedness traits and a notion of const and non-const sizedness
93- which unblocks ` extern type ` s and scalable vectors being treated as value
94- types.
95- - This RFC has had lots of discussion and two design meetings with the
96- language team. There appears to be some consensus that it's approximately
97- the right approach to the problem and has been approved for experimentation
98- in the compiler.
99- - [ rust #137944 ] was merged implementing the first half of the RFC unstably. It
100- introduced a hierarchy of sizedness traits, sufficient to unblock
101- ` extern type ` s. It will be followed-up with a patch with the const and
102- non-const sizedness, unblocking scalable vectors.
76+ SVE is currently entirely unsupported by Rust, but progress is being made - see the tracking
77+ issues for the Sized Hierarchy prerequisite ([ rust #144404 ] ) and for Scalable Vectors
78+ themselves ([ rust #145052 ] ).
10379
104- [ rust#143924 ] : https://github.com/rust-lang/rust/pull/143924
105- [ rust#137944 ] : https://github.com/rust-lang/rust/pull/137944
106- [ rfcs#3838 ] : https://github.com/rust-lang/rfcs/pull/3838
107- [ rfcs#3729 ] : https://github.com/rust-lang/rfcs/pull/3729
108- [ stdarch#1509 ] : https://github.com/rust-lang/stdarch/pull/1509
80+ [ rust#144404 ] : https://github.com/rust-lang/rust/issues/144404
81+ [ rust#145052 ] : https://github.com/rust-lang/rust/issues/145052
10982
11083### The next 6 months
11184
@@ -121,6 +94,12 @@ SVE, have both RFCs accepted and establish a path towards stabilisation:
121945 . Merge [ stdarch #1509 ] adding SVE types and intrinsics
122956 . Identify and start addressing remaining stabilisation blockers
12396
97+ [ rust#143924 ] : https://github.com/rust-lang/rust/pull/143924
98+ [ rust#137944 ] : https://github.com/rust-lang/rust/pull/137944
99+ [ rfcs#3838 ] : https://github.com/rust-lang/rfcs/pull/3838
100+ [ rfcs#3729 ] : https://github.com/rust-lang/rfcs/pull/3729
101+ [ stdarch#1509 ] : https://github.com/rust-lang/stdarch/pull/1509
102+
124103### The "shiny future" we are working towards
125104
126105Adding support for Scalable Matrix Extensions in Rust is the next logical step
0 commit comments