@@ -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,6 +84,24 @@ 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"`
71
106
///
72
107
/// There's also bases and extensions marked as standard instruction set,
@@ -87,6 +122,15 @@ features! {
87
122
/// * Svnapot: `"svnapot"`
88
123
/// * Svpbmt: `"svpbmt"`
89
124
/// * Svinval: `"svinval"`
125
+ ///
126
+ /// # Performance Hints
127
+ ///
128
+ /// The two features below define performance hints for unaligned
129
+ /// scalar/vector memory accesses, respectively. If enabled, it denotes that
130
+ /// corresponding unaligned memory access is reasonably fast.
131
+ ///
132
+ /// * `"unaligned-scalar-mem"`
133
+ /// * `"unaligned-vector-mem"`
90
134
#[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ]
91
135
92
136
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] rv32i: "rv32i" ;
@@ -102,6 +146,11 @@ features! {
102
146
without cfg check: true ;
103
147
/// RV128I Base Integer Instruction Set
104
148
149
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] unaligned_scalar_mem: "unaligned-scalar-mem" ;
150
+ /// Has reasonably performant unaligned scalar
151
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] unaligned_vector_mem: "unaligned-vector-mem" ;
152
+ /// Has reasonably performant unaligned vector
153
+
105
154
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicsr: "zicsr" ;
106
155
without cfg check: true ;
107
156
/// "Zicsr" Extension for Control and Status Register (CSR) Instructions
@@ -115,9 +164,21 @@ features! {
115
164
without cfg check: true ;
116
165
/// "Zifencei" Extension for Instruction-Fetch Fence
117
166
167
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zihintntl: "zihintntl" ;
168
+ without cfg check: true ;
169
+ /// "Zihintntl" Extension for Non-Temporal Locality Hints
118
170
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zihintpause: "zihintpause" ;
119
171
without cfg check: true ;
120
172
/// "Zihintpause" Extension for Pause Hint
173
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zimop: "zimop" ;
174
+ without cfg check: true ;
175
+ /// "Zimop" Extension for May-Be-Operations
176
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicboz: "zicboz" ;
177
+ without cfg check: true ;
178
+ /// "Zicboz" Extension for Cache-Block Zero Instruction
179
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicond: "zicond" ;
180
+ without cfg check: true ;
181
+ /// "Zicond" Extension for Integer Conditional Operations
121
182
122
183
@FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] m: "m" ;
123
184
/// "M" Extension for Integer Multiplication and Division
@@ -128,6 +189,10 @@ features! {
128
189
/// "Zalrsc" Extension for Load-Reserved/Store-Conditional Instructions
129
190
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zaamo: "zaamo" ;
130
191
/// "Zaamo" Extension for Atomic Memory Operations
192
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zawrs: "zawrs" ;
193
+ /// "Zawrs" Extension for Wait-on-Reservation-Set Instructions
194
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zacas: "zacas" ;
195
+ /// "Zacas" Extension for Atomic Compare-and-Swap (CAS) Instructions
131
196
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zam: "zam" ;
132
197
without cfg check: true ;
133
198
/// "Zam" Extension for Misaligned Atomics
@@ -146,6 +211,9 @@ features! {
146
211
/// "Zfh" Extension for Half-Precision Floating-Point
147
212
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfhmin: "zfhmin" ;
148
213
/// "Zfhmin" Extension for Minimal Half-Precision Floating-Point
214
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfa: "zfa" ;
215
+ without cfg check: true ;
216
+ /// "Zfa" Extension for Additional Floating-Point Instructions
149
217
150
218
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfinx: "zfinx" ;
151
219
/// "Zfinx" Extension for Single-Precision Floating-Point in Integer Registers
@@ -158,6 +226,21 @@ features! {
158
226
159
227
@FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] c: "c" ;
160
228
/// "C" Extension for Compressed Instructions
229
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zca: "zca" ;
230
+ without cfg check: true ;
231
+ /// "Zca" Compressed Instructions excluding Floating-Point Loads/Stores
232
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcf: "zcf" ;
233
+ without cfg check: true ;
234
+ /// "Zcf" Compressed Instructions for Single-Precision Floating-Point Loads/Stores on RV32
235
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcd: "zcd" ;
236
+ without cfg check: true ;
237
+ /// "Zcd" Compressed Instructions for Double-Precision Floating-Point Loads/Stores
238
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcb: "zcb" ;
239
+ without cfg check: true ;
240
+ /// "Zcb" Simple Code-size Saving Compressed Instructions
241
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zcmop: "zcmop" ;
242
+ without cfg check: true ;
243
+ /// "Zcmop" Extension for Compressed May-Be-Operations
161
244
162
245
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] b: "b" ;
163
246
without cfg check: true ;
@@ -200,6 +283,53 @@ features! {
200
283
201
284
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] v: "v" ;
202
285
/// "V" Extension for Vector Operations
286
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve32x: "zve32x" ;
287
+ /// "Zve32x" Vector Extension for Embedded Processors (32-bit+; Integer)
288
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve32f: "zve32f" ;
289
+ /// "Zve32f" Vector Extension for Embedded Processors (32-bit+; with Single-Precision Floating-Point)
290
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64x: "zve64x" ;
291
+ /// "Zve64x" Vector Extension for Embedded Processors (64-bit+; Integer)
292
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64f: "zve64f" ;
293
+ /// "Zve64f" Vector Extension for Embedded Processors (64-bit+; with Single-Precision Floating-Point)
294
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zve64d: "zve64d" ;
295
+ /// "Zve64d" Vector Extension for Embedded Processors (64-bit+; with Double-Precision Floating-Point)
296
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvfh: "zvfh" ;
297
+ /// "Zvfh" Vector Extension for Half-Precision Floating-Point
298
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvfhmin: "zvfhmin" ;
299
+ /// "Zvfhmin" Vector Extension for Minimal Half-Precision Floating-Point
300
+
301
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvbb: "zvbb" ;
302
+ /// "Zvbb" Extension for Vector Basic Bit-Manipulation
303
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvbc: "zvbc" ;
304
+ /// "Zvbc" Extension for Vector Carryless Multiplication
305
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkb: "zvkb" ;
306
+ /// "Zvkb" Extension for Vector Cryptography Bit-Manipulation
307
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkg: "zvkg" ;
308
+ /// "Zvkg" Cryptography Extension for Vector GCM/GMAC
309
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkned: "zvkned" ;
310
+ /// "Zvkned" Cryptography Extension for NIST Suite: Vector AES Block Cipher
311
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknha: "zvknha" ;
312
+ /// "Zvknha" Cryptography Extension for Vector SHA-2 Secure Hash (SHA-256)
313
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknhb: "zvknhb" ;
314
+ /// "Zvknhb" Cryptography Extension for Vector SHA-2 Secure Hash (SHA-256/512)
315
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksed: "zvksed" ;
316
+ /// "Zvksed" Cryptography Extension for ShangMi Suite: Vector SM4 Block Cipher
317
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksh: "zvksh" ;
318
+ /// "Zvksh" Cryptography Extension for ShangMi Suite: Vector SM3 Secure Hash
319
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkn: "zvkn" ;
320
+ /// "Zvkn" Cryptography Extension for NIST Algorithm Suite
321
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvknc: "zvknc" ;
322
+ /// "Zvknc" Cryptography Extension for NIST Algorithm Suite with Carryless Multiply
323
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkng: "zvkng" ;
324
+ /// "Zvkng" Cryptography Extension for NIST Algorithm Suite with GCM
325
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvks: "zvks" ;
326
+ /// "Zvks" Cryptography Extension for ShangMi Algorithm Suite
327
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksc: "zvksc" ;
328
+ /// "Zvksc" Cryptography Extension for ShangMi Algorithm Suite with Carryless Multiply
329
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvksg: "zvksg" ;
330
+ /// "Zvksg" Cryptography Extension for ShangMi Algorithm Suite with GCM
331
+ @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zvkt: "zvkt" ;
332
+ /// "Zvkt" Extension for Vector Data-Independent Execution Latency
203
333
204
334
@FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] svnapot: "svnapot" ;
205
335
without cfg check: true ;
0 commit comments