1
1
# SVE and SME on AArch64
2
2
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 |
12
12
13
13
## Summary
14
14
@@ -73,39 +73,12 @@ capabilities.
73
73
74
74
### The status quo
75
75
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 ] ).
103
79
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
109
82
110
83
### The next 6 months
111
84
@@ -121,6 +94,12 @@ SVE, have both RFCs accepted and establish a path towards stabilisation:
121
94
5 . Merge [ stdarch #1509 ] adding SVE types and intrinsics
122
95
6 . Identify and start addressing remaining stabilisation blockers
123
96
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
+
124
103
### The "shiny future" we are working towards
125
104
126
105
Adding support for Scalable Matrix Extensions in Rust is the next logical step
0 commit comments