You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stabilize 28 RISC-V target features (riscv_ratified_v2)
This commit stabilizes RISC-V target features with following constraints:
* Describes a ratified extension.
* Implemented on Rust 1.88.0 or before.
Waiting for three+ version cycles seems sufficient.
* Does not disrupt current rustc's target feature + ABI handling.
It excludes "E" and all floating point-arithmetic extensions.
"Zfinx" family does not involve floating point registers but
not stabilizing for now to avoid possible confusion between
the "F" extension family.
* Not vector-related (floating point and integer).
While integer vector subset should not cause any ABI issues
(as we don't use ABI-dependent floating point registers),
we need to discuss before stabilizing them.
* Supported by the lowest LLVM version supported by rustc.
It excludes the "Zacas" extension, newly supported in LLVM 20
(while the minimum LLVM version supported by rustc is 19).
List of target features to be stabilized:
1. "b"
2. "za64rs" (no-RT)
3. "za128rs" (no-RT)
4. "zaamo"
5. "zabha"
6. "zalrsc"
7. "zama16b" (no-RT)
8. "zawrs"
9. "zca"
10. "zcb"
11. "zcmop"
12. "zic64b" (no-RT)
13. "zicbom"
14. "zicbop" (no-RT)
15. "zicboz"
16. "ziccamoa" (no-RT)
17. "ziccif" (no-RT)
18. "zicclsm" (no-RT)
19. "ziccrse" (no-RT)
20. "zicntr"
21. "zicond"
22. "zicsr"
23. "zifencei"
24. "zihintntl"
25. "zihintpause"
26. "zihpm"
27. "zimop"
28. "ztso"
Of which, 19 of them (28 minus 9 "no-RT" target features) support
runtime detection through `std::arch::is_riscv_feature_detected!()`.
0 commit comments