@@ -37,22 +37,39 @@ features! {
37
37
/// * Zbb: `"zbb"`
38
38
/// * Zbs: `"zbs"`
39
39
/// * C: `"c"`
40
+ /// * Zca: `"zca"`
41
+ /// * Zcd: `"zcd"` (if D is enabled)
42
+ /// * Zcf: `"zcf"` (if F is enabled on RV32)
40
43
/// * D: `"d"`
41
44
/// * F: `"f"`
42
45
/// * M: `"m"`
43
46
/// * Q: `"q"`
44
47
/// * V: `"v"`
48
+ /// * Zve32x: `"zve32x"`
49
+ /// * Zve32f: `"zve32f"`
50
+ /// * Zve64x: `"zve64x"`
51
+ /// * Zve64f: `"zve64f"`
52
+ /// * Zve64d: `"zve64d"`
53
+ /// * Zicboz: `"zicboz"`
45
54
/// * Zicntr: `"zicntr"`
55
+ /// * Zicond: `"zicond"`
46
56
/// * Zicsr: `"zicsr"`
47
57
/// * Zifencei: `"zifencei"`
58
+ /// * Zihintntl: `"zihintntl"`
48
59
/// * Zihintpause: `"zihintpause"`
49
60
/// * Zihpm: `"zihpm"`
61
+ /// * Zimop: `"zimop"`
62
+ /// * Zacas: `"zacas"`
63
+ /// * Zawrs: `"zawrs"`
64
+ /// * Zfa: `"zfa"`
50
65
/// * Zfh: `"zfh"`
51
66
/// * Zfhmin: `"zfhmin"`
52
67
/// * Zfinx: `"zfinx"`
53
68
/// * Zdinx: `"zdinx"`
54
69
/// * Zhinx: `"zhinx"`
55
70
/// * Zhinxmin: `"zhinxmin"`
71
+ /// * Zcb: `"zcb"`
72
+ /// * Zcmop: `"zcmop"`
56
73
/// * Zbc: `"zbc"`
57
74
/// * Zbkb: `"zbkb"`
58
75
/// * Zbkc: `"zbkc"`
@@ -67,7 +84,26 @@ features! {
67
84
/// * Zksed: `"zksed"`
68
85
/// * Zksh: `"zksh"`
69
86
/// * Zkt: `"zkt"`
87
+ /// * Zvbb: `"zvbb"`
88
+ /// * Zvbc: `"zvbc"`
89
+ /// * Zvfh: `"zvfh"`
90
+ /// * Zvfhmin: `"zvfhmin"`
91
+ /// * Zvkb: `"zvkb"`
92
+ /// * Zvkg: `"zvkg"`
93
+ /// * Zvkn: `"zvkn"`
94
+ /// * Zvkned: `"zvkned"`
95
+ /// * Zvknha: `"zvknha"`
96
+ /// * Zvknhb: `"zvknhb"`
97
+ /// * Zvknc: `"zvknc"`
98
+ /// * Zvkng: `"zvkng"`
99
+ /// * Zvks: `"zvks"`
100
+ /// * Zvksed: `"zvksed"`
101
+ /// * Zvksh: `"zvksh"`
102
+ /// * Zvksc: `"zvksc"`
103
+ /// * Zvksg: `"zvksg"`
104
+ /// * Zvkt: `"zvkt"`
70
105
/// * Ztso: `"ztso"`
106
+ /// * Supm: `"supm"`
71
107
///
72
108
/// There's also bases and extensions marked as standard instruction set,
73
109
/// but they are in frozen or draft state. These instruction sets are also
@@ -87,6 +123,15 @@ features! {
87
123
/// * Svnapot: `"svnapot"`
88
124
/// * Svpbmt: `"svpbmt"`
89
125
/// * Svinval: `"svinval"`
126
+ ///
127
+ /// # Performance Hints
128
+ ///
129
+ /// Following two features define performance implications for unaligned
130
+ /// memory accesses. If enabled, the scalar/vector unaligned memory access
131
+ /// is expected to be reasonably fast.
132
+ ///
133
+ /// * `unaligned-scalar-mem`
134
+ /// * `unaligned-vector-mem`
90
135
#[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ]
91
136
92
137
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] rv32i: "rv32i" ;
@@ -102,6 +147,11 @@ features! {
102
147
without cfg check: true ;
103
148
/// RV128I Base Integer Instruction Set
104
149
150
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] unaligned_scalar_mem: "unaligned-scalar-mem" ;
151
+ /// Has reasonably performant unaligned scalar
152
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] unaligned_vector_mem: "unaligned-vector-mem" ;
153
+ /// Has reasonably performant unaligned vector
154
+
105
155
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicsr: "zicsr" ;
106
156
without cfg check: true ;
107
157
/// "Zicsr" Extension for Control and Status Register (CSR) Instructions
@@ -115,9 +165,21 @@ features! {
115
165
without cfg check: true ;
116
166
/// "Zifencei" Extension for Instruction-Fetch Fence
117
167
168
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zihintntl: "zihintntl" ;
169
+ without cfg check: true ;
170
+ /// "Zihintntl" Extension for Non-Temporal Locality Hints
118
171
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zihintpause: "zihintpause" ;
119
172
without cfg check: true ;
120
173
/// "Zihintpause" Extension for Pause Hint
174
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zimop: "zimop" ;
175
+ without cfg check: true ;
176
+ /// "Zimop" Extension for May-Be-Operations
177
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicboz: "zicboz" ;
178
+ without cfg check: true ;
179
+ /// "Zicboz" Extension for Cache-Block Zero Instruction
180
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicond: "zicond" ;
181
+ without cfg check: true ;
182
+ /// "Zicond" Extension for Integer Conditional Operations
121
183
122
184
@FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] m: "m" ;
123
185
/// "M" Extension for Integer Multiplication and Division
@@ -128,6 +190,10 @@ features! {
128
190
/// "Zalrsc" Extension for Load-Reserved/Store-Conditional Instructions
129
191
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zaamo: "zaamo" ;
130
192
/// "Zaamo" Extension for Atomic Memory Operations
193
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zawrs: "zawrs" ;
194
+ /// "Zawrs" Extension for Wait-on-Reservation-Set instructions
195
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zacas: "zacas" ;
196
+ /// "Zacas" Extension for Atomic Compare-and-Swap (CAS) Instructions
131
197
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zam: "zam" ;
132
198
without cfg check: true ;
133
199
/// "Zam" Extension for Misaligned Atomics
@@ -146,6 +212,9 @@ features! {
146
212
/// "Zfh" Extension for Half-Precision Floating-Point
147
213
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfhmin: "zfhmin" ;
148
214
/// "Zfhmin" Extension for Minimal Half-Precision Floating-Point
215
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfa: "zfa" ;
216
+ without cfg check: true ;
217
+ /// "Zfa" Extension for Additional Floating-Point Instructions
149
218
150
219
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfinx: "zfinx" ;
151
220
/// "Zfinx" Extension for Single-Precision Floating-Point in Integer Registers
@@ -158,6 +227,21 @@ features! {
158
227
159
228
@FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] c: "c" ;
160
229
/// "C" Extension for Compressed Instructions
230
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zca: "zca" ;
231
+ without cfg check: true ;
232
+ /// "Zca" Compressed Instructions excluding Floating-Point Loads/Stores
233
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcf: "zcf" ;
234
+ without cfg check: true ;
235
+ /// "Zcf" Compressed Instructions for Single-Precision Floating-Point Loads/Stores on RV32
236
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcd: "zcd" ;
237
+ without cfg check: true ;
238
+ /// "Zcd" Compressed Instructions for Double-Precision Floating-Point Loads/Stores
239
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcb: "zcb" ;
240
+ without cfg check: true ;
241
+ /// "Zcb" Simple Code-size Saving Compressed Instructions
242
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcmop: "zcmop" ;
243
+ without cfg check: true ;
244
+ /// "Zcmop" Extension for Compressed May-Be-Operations
161
245
162
246
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] b: "b" ;
163
247
without cfg check: true ;
@@ -200,6 +284,57 @@ features! {
200
284
201
285
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] v: "v" ;
202
286
/// "V" Extension for Vector Operations
287
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve32x: "zve32x" ;
288
+ /// "Zve32x" Vector Extension for Embedded Processors (32-bit+; Integer)
289
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve32f: "zve32f" ;
290
+ /// "Zve32f" Vector Extension for Embedded Processors (32-bit+; with Single-Precision Floating-Point)
291
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64x: "zve64x" ;
292
+ /// "Zve64x" Vector Extension for Embedded Processors (64-bit+; Integer)
293
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64f: "zve64f" ;
294
+ /// "Zve64f" Vector Extension for Embedded Processors (64-bit+; with Single-Precision Floating-Point)
295
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64d: "zve64d" ;
296
+ /// "Zve64d" Vector Extension for Embedded Processors (64-bit+; with Double-Precision Floating-Point)
297
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvfh: "zvfh" ;
298
+ /// "Zvfh" Vector Extension for Half-Precision Floating-Point
299
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvfhmin: "zvfhmin" ;
300
+ /// "Zvfhmin" Vector Extension for Minimal Half-Precision Floating-Point
301
+
302
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvbb: "zvbb" ;
303
+ /// "Zvbb" Extension for Vector Basic Bit-Manipulation
304
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvbc: "zvbc" ;
305
+ /// "Zvbc" Extension for Vector Carryless Multiplication
306
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkb: "zvkb" ;
307
+ /// "Zvkb" Extension for Vector Cryptography Bit-Manipulation
308
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkg: "zvkg" ;
309
+ /// "Zvkg" Cryptography Extension for Vector GCM/GMAC
310
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkned: "zvkned" ;
311
+ /// "Zvkned" Cryptography Extension for NIST Suite: Vector AES Block Cipher
312
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknha: "zvknha" ;
313
+ /// "Zvknha" Cryptography Extension for Vector SHA-2 Secure Hash (SHA-256)
314
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknhb: "zvknhb" ;
315
+ /// "Zvknhb" Cryptography Extension for Vector SHA-2 Secure Hash (SHA-256/512)
316
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksed: "zvksed" ;
317
+ /// "Zvksed" Cryptography Extension for ShangMi Suite: Vector SM4 Block Cipher
318
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksh: "zvksh" ;
319
+ /// "Zvksh" Cryptography Extension for ShangMi Suite: Vector SM3 Secure Hash
320
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkn: "zvkn" ;
321
+ /// "Zvkn" Cryptography Extension for NIST Algorithm Suite
322
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknc: "zvknc" ;
323
+ /// "Zvknc" Cryptography Extension for NIST Algorithm Suite with Carryless Multiply
324
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkng: "zvkng" ;
325
+ /// "Zvkng" Cryptography Extension for NIST Algorithm Suite with GCM
326
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvks: "zvks" ;
327
+ /// "Zvks" Cryptography Extension for ShangMi Algorithm Suite
328
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksc: "zvksc" ;
329
+ /// "Zvksc" Cryptography Extension for ShangMi Algorithm Suite with Carryless Multiply
330
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksg: "zvksg" ;
331
+ /// "Zvksg" Cryptography Extension for ShangMi Algorithm Suite with GCM
332
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkt: "zvkt" ;
333
+ /// "Zvkt" Extension for Vector Data-Independent Execution Latency
334
+
335
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] supm: "supm" ;
336
+ without cfg check: true ;
337
+ /// "Supm" Extension for Pointer-Masking Support in User Mode with Platform-Defined Facility to Control
203
338
204
339
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] svnapot: "svnapot" ;
205
340
without cfg check: true ;
0 commit comments