Skip to content

Commit fec1880

Browse files
committed
Stabilize Ratified RISC-V Target Features
As shortly discussed on Zulip (https://rust-lang.zulipchat.com/#narrow/stream/250483-t-compiler.2Frisc-v/topic/Stabilization.20of.20RISC-V.20Target.20Features/near/394793704), this commit stabilizes the ratified RISC-V instruction bases and extensions. Specifically, this commit stabilizes the: * Instruction-Fetch Fence (Zifencei) on v2.0 * Control and Status Register (Zcsr) on v2.0 * Pause Hint (Zihintpause) on v2.0 * Zicntr and Zihpm were ratified March 2023 * Total Store Ordering (Ztso) on v1.0 * Supervisor-level Instructions (S) on v1.12 * Atomic Instructions (A) on v2.0 * Compressed Instructions (C) on v2.0 * Double-Precision Floating-Point (D) on v2.2 * Embedded Base (E) (Given as `RV32E` / `RV64E`) on v2.0 * Single-Precision Floating-Point (F) on v2.2 * Integer Multiplication and Division (M) on v2.0 * Vector Operations (V) on v1.0 * Bit Manipulations (B) on v1.0 listed as `zba`, `zbc`, `zbs` * Scalar Cryptography (Zk) v1.0.1 listed as `zk`, `zkn`, `zknd`, `zkne`, `zknh`, `zkr`, `zks`, `zksed`, `zksh`, `zkt`, `zbkb`, `zbkc` `zkbx` * Double-Precision Floating-Point in Integer Register (Zdinx) on v1.0 * Half-Precision Floating-Point (Zfh) on v1.0 * Minimal Half-Precision Floating-Point (Zfhmin) on v1.0 * Single-Precision Floating-Point in Integer Register (Zfinx) on v1.0 * Half-Precision Floating-Point in Integer Register (Zhinx) on v1.0 * Minimal Half-Precision Floating-Point in Integer Register (Zhinxmin) on v1.0
1 parent 333e9e9 commit fec1880

File tree

1 file changed

+40
-41
lines changed
  • crates/std_detect/src/detect/arch

1 file changed

+40
-41
lines changed

crates/std_detect/src/detect/arch/riscv.rs

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -99,65 +99,64 @@ features! {
9999
/// * Zkt: `"zkt"`
100100
///
101101
/// [ISA manual]: https://github.com/riscv/riscv-isa-manual/
102-
#[unstable(feature = "stdsimd", issue = "27731")]
103-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] rv32i: "rv32i";
102+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] rv32i: "rv32i";
104103
/// RV32I Base Integer Instruction Set
105-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zifencei: "zifencei";
104+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zifencei: "zifencei";
106105
/// "Zifencei" Instruction-Fetch Fence
107-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zihintpause: "zihintpause";
106+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zihintpause: "zihintpause";
108107
/// "Zihintpause" Pause Hint
109-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] rv64i: "rv64i";
108+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] rv64i: "rv64i";
110109
/// RV64I Base Integer Instruction Set
111-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] m: "m";
110+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] m: "m";
112111
/// "M" Standard Extension for Integer Multiplication and Division
113-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] a: "a";
112+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] a: "a";
114113
/// "A" Standard Extension for Atomic Instructions
115-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zicsr: "zicsr";
114+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zicsr: "zicsr";
116115
/// "Zicsr", Control and Status Register (CSR) Instructions
117-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zicntr: "zicntr";
116+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zicntr: "zicntr";
118117
/// "Zicntr", Standard Extension for Base Counters and Timers
119-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zihpm: "zihpm";
118+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zihpm: "zihpm";
120119
/// "Zihpm", Standard Extension for Hardware Performance Counters
121-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] f: "f";
120+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] f: "f";
122121
/// "F" Standard Extension for Single-Precision Floating-Point
123-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] d: "d";
122+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] d: "d";
124123
/// "D" Standard Extension for Double-Precision Floating-Point
125124
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] q: "q";
126125
/// "Q" Standard Extension for Quad-Precision Floating-Point
127-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] c: "c";
126+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] c: "c";
128127
/// "C" Standard Extension for Compressed Instructions
129128
130-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zfinx: "zfinx";
129+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zfinx: "zfinx";
131130
/// "Zfinx" Standard Extension for Single-Precision Floating-Point in Integer Registers
132-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zdinx: "zdinx";
131+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zdinx: "zdinx";
133132
/// "Zdinx" Standard Extension for Double-Precision Floating-Point in Integer Registers
134-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zhinx: "zhinx";
133+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zhinx: "zhinx";
135134
/// "Zhinx" Standard Extension for Half-Precision Floating-Point in Integer Registers
136-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zhinxmin: "zhinxmin";
135+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zhinxmin: "zhinxmin";
137136
/// "Zhinxmin" Standard Extension for Minimal Half-Precision Floating-Point in Integer Registers
138-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] ztso: "ztso";
137+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] ztso: "ztso";
139138
/// "Ztso" Standard Extension for Total Store Ordering
140139
141-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] rv32e: "rv32e";
140+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] rv32e: "rv32e";
142141
/// RV32E Base Integer Instruction Set
143142
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] rv128i: "rv128i";
144143
/// RV128I Base Integer Instruction Set
145-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zfh: "zfh";
144+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zfh: "zfh";
146145
/// "Zfh" Standard Extension for 16-Bit Half-Precision Floating-Point
147-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zfhmin: "zfhmin";
146+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zfhmin: "zfhmin";
148147
/// "Zfhmin" Standard Extension for Minimal Half-Precision Floating-Point Support
149-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] b: "b";
148+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] b: "b";
150149
/// "B" Standard Extension for Bit Manipulation
151150
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] j: "j";
152151
/// "J" Standard Extension for Dynamically Translated Languages
153152
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] p: "p";
154153
/// "P" Standard Extension for Packed-SIMD Instructions
155-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] v: "v";
154+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] v: "v";
156155
/// "V" Standard Extension for Vector Operations
157156
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zam: "zam";
158157
/// "Zam" Standard Extension for Misaligned Atomics
159158
160-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] s: "s";
159+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] s: "s";
161160
/// Supervisor-Level ISA
162161
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] svnapot: "svnapot";
163162
/// "Svnapot" Standard Extension for NAPOT Translation Contiguity
@@ -168,39 +167,39 @@ features! {
168167
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] h: "h";
169168
/// Hypervisor Extension
170169
171-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zba: "zba";
170+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zba: "zba";
172171
/// "Zba" Standard Extension for Address Generation Instructions
173-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbb: "zbb";
172+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbb: "zbb";
174173
/// "Zbb" Standard Extension for Basic Bit-Manipulation
175-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbc: "zbc";
174+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbc: "zbc";
176175
/// "Zbc" Standard Extension for Carry-less Multiplication
177-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbs: "zbs";
176+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbs: "zbs";
178177
/// "Zbs" Standard Extension for Single-Bit instructions
179178
180-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbkb: "zbkb";
179+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbkb: "zbkb";
181180
/// "Zbkb" Standard Extension for Bitmanip instructions for Cryptography
182-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbkc: "zbkc";
181+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbkc: "zbkc";
183182
/// "Zbkc" Standard Extension for Carry-less multiply instructions
184-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zbkx: "zbkx";
183+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zbkx: "zbkx";
185184
/// "Zbkx" Standard Extension for Crossbar permutation instructions
186-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zknd: "zknd";
185+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zknd: "zknd";
187186
/// "Zknd" Standard Extension for NIST Suite: AES Decryption
188-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zkne: "zkne";
187+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zkne: "zkne";
189188
/// "Zkne" Standard Extension for NIST Suite: AES Encryption
190-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zknh: "zknh";
189+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zknh: "zknh";
191190
/// "Zknh" Standard Extension for NIST Suite: Hash Function Instructions
192-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zksed: "zksed";
191+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zksed: "zksed";
193192
/// "Zksed" Standard Extension for ShangMi Suite: SM4 Block Cipher Instructions
194-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zksh: "zksh";
193+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zksh: "zksh";
195194
/// "Zksh" Standard Extension for ShangMi Suite: SM3 Hash Function Instructions
196-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zkr: "zkr";
195+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zkr: "zkr";
197196
/// "Zkr" Standard Extension for Entropy Source Extension
198-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zkn: "zkn";
197+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zkn: "zkn";
199198
/// "Zkn" Standard Extension for NIST Algorithm Suite
200-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zks: "zks";
199+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zks: "zks";
201200
/// "Zks" Standard Extension for ShangMi Algorithm Suite
202-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zk: "zk";
201+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zk: "zk";
203202
/// "Zk" Standard Extension for Standard scalar cryptography extension
204-
@FEATURE: #[unstable(feature = "stdsimd", issue = "27731")] zkt: "zkt";
203+
@FEATURE: #[stable(feature = "riscv_ratified", since = "1.74.0")] zkt: "zkt";
205204
/// "Zkt" Standard Extension for Data Independent Execution Latency
206205
}

0 commit comments

Comments
 (0)