@@ -37,22 +37,39 @@ features! {
3737 /// * Zbb: `"zbb"`
3838 /// * Zbs: `"zbs"`
3939 /// * C: `"c"`
40+ /// * Zca: `"zca"`
41+ /// * Zcd: `"zcd"` (if D is enabled)
42+ /// * Zcf: `"zcf"` (if F is enabled on RV32)
4043 /// * D: `"d"`
4144 /// * F: `"f"`
4245 /// * M: `"m"`
4346 /// * Q: `"q"`
4447 /// * V: `"v"`
48+ /// * Zve32x: `"zve32x"`
49+ /// * Zve32f: `"zve32f"`
50+ /// * Zve64x: `"zve64x"`
51+ /// * Zve64f: `"zve64f"`
52+ /// * Zve64d: `"zve64d"`
53+ /// * Zicboz: `"zicboz"`
4554 /// * Zicntr: `"zicntr"`
55+ /// * Zicond: `"zicond"`
4656 /// * Zicsr: `"zicsr"`
4757 /// * Zifencei: `"zifencei"`
58+ /// * Zihintntl: `"zihintntl"`
4859 /// * Zihintpause: `"zihintpause"`
4960 /// * Zihpm: `"zihpm"`
61+ /// * Zimop: `"zimop"`
62+ /// * Zacas: `"zacas"`
63+ /// * Zawrs: `"zawrs"`
64+ /// * Zfa: `"zfa"`
5065 /// * Zfh: `"zfh"`
5166 /// * Zfhmin: `"zfhmin"`
5267 /// * Zfinx: `"zfinx"`
5368 /// * Zdinx: `"zdinx"`
5469 /// * Zhinx: `"zhinx"`
5570 /// * Zhinxmin: `"zhinxmin"`
71+ /// * Zcb: `"zcb"`
72+ /// * Zcmop: `"zcmop"`
5673 /// * Zbc: `"zbc"`
5774 /// * Zbkb: `"zbkb"`
5875 /// * Zbkc: `"zbkc"`
@@ -67,7 +84,26 @@ features! {
6784 /// * Zksed: `"zksed"`
6885 /// * Zksh: `"zksh"`
6986 /// * 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"`
70105 /// * Ztso: `"ztso"`
106+ /// * Supm: `"supm"`
71107 ///
72108 /// There's also bases and extensions marked as standard instruction set,
73109 /// but they are in frozen or draft state. These instruction sets are also
@@ -87,6 +123,15 @@ features! {
87123 /// * Svnapot: `"svnapot"`
88124 /// * Svpbmt: `"svpbmt"`
89125 /// * 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`
90135 #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ]
91136
92137 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] rv32i: "rv32i" ;
@@ -102,6 +147,11 @@ features! {
102147 without cfg check: true ;
103148 /// RV128I Base Integer Instruction Set
104149
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+
105155 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zicsr: "zicsr" ;
106156 without cfg check: true ;
107157 /// "Zicsr" Extension for Control and Status Register (CSR) Instructions
@@ -115,9 +165,21 @@ features! {
115165 without cfg check: true ;
116166 /// "Zifencei" Extension for Instruction-Fetch Fence
117167
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
118171 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zihintpause: "zihintpause" ;
119172 without cfg check: true ;
120173 /// "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
121183
122184 @FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] m: "m" ;
123185 /// "M" Extension for Integer Multiplication and Division
@@ -128,6 +190,10 @@ features! {
128190 /// "Zalrsc" Extension for Load-Reserved/Store-Conditional Instructions
129191 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zaamo: "zaamo" ;
130192 /// "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
131197 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zam: "zam" ;
132198 without cfg check: true ;
133199 /// "Zam" Extension for Misaligned Atomics
@@ -146,6 +212,9 @@ features! {
146212 /// "Zfh" Extension for Half-Precision Floating-Point
147213 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfhmin: "zfhmin" ;
148214 /// "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
149218
150219 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] zfinx: "zfinx" ;
151220 /// "Zfinx" Extension for Single-Precision Floating-Point in Integer Registers
@@ -158,6 +227,21 @@ features! {
158227
159228 @FEATURE : #[ stable( feature = "riscv_ratified" , since = "1.78.0" ) ] c: "c" ;
160229 /// "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
161245
162246 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] b: "b" ;
163247 without cfg check: true ;
@@ -200,6 +284,57 @@ features! {
200284
201285 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] v: "v" ;
202286 /// "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
203338
204339 @FEATURE : #[ unstable( feature = "stdarch_riscv_feature_detection" , issue = "111192" ) ] svnapot: "svnapot" ;
205340 without cfg check: true ;
0 commit comments