RISC-V International
This page gives an overview of the extension and feature support in the RISC-V SW ecosystem.
Published specifications can be found here: https://riscv.org/technical/specifications/
The main repository of the ISA specifications is: https://github.com/riscv/riscv-isa-manual
Certain extensions are generated by individual TGs.
An overview of the current status of unratified extensions can be found here: Architecture Review
Latest specification | Extension | Ratified? | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Unpriv Spec 20191213 | RV32I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | not supported | upstream | |
Unpriv Spec 20191213 | RV64I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | |
Unpriv Spec 20191213 | Big-endian support | y | upstream | upstream | not supported | ||||||||
Unpriv Spec 20191213 | M (Multiplication and Division) v2.0 | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | n/a | n/a | n/a | |
Unpriv Spec 20191213 | A (Atomic) | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream (atomics) | upstream (atomics) | upstream (atomics) | |
Unpriv Spec 20191213 | F (SP float) | y | upstream | upstream | upstream | ||||||||
Unpriv Spec 20191213 | D (DP float) | y | upstream | upstream | upstream | ||||||||
Unpriv Spec 20191213 | Q (QP float) | y | upstream | not supported | |||||||||
Unpriv Spec 20191213 | RVWMO | y | upstream (emulation is seq. consistent) | upstream (emulation is seq. consistent) | n/a | n/a | n/a | n/a | n/a | upstream (barriers and locks) | upstream (barriers and locks) | upstream (barriers and locks), but needs optimization | |
psABI | ABIs (ILP32, ILP32E, ILP32F, ILP32D, LP64, LP64f, LP64D, LP64Q) | ilp32, ilp32f, ilp32d, ilp32q, ilp32e, lp64, lp64f, lp64d, lp64q | ilp32, ilp32f, ilp32d, ilp32e, lp64, lp64f, lp64d | ilp32, ilp32d, lp64, lp64d | ilp32, ilp32f, ilp32d, ilp32e, lp64, lp64f, lp64d | ilp32, ilp32d, lp64, lp64d | n/a | lp64, lp64d | n/a | ||||
Unpriv Spec 20191213 | C (compressed) v2.0 | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream | |||
Zifencei v2.0 | y | upstream | upstream | upstream | not supported | upstream | upstream | ||||||
Zihintpause v1.0 | upstream | not supported | |||||||||||
Zicsr v2.0 | y | upstream | upstream | upstream | not supported | upstream | upstream | ||||||
Counters v2.0 | n | upstream | upstream | n/a | n/a | n/a | upstream | upstream | upstream | ||||
Machine ISA v1.11 (CSRs, ECALL, EBREAK, MRET/SRET/URET, WFI, Reset, NMIs, PMAs, PMP) | y | upstream | upstream | n/a | n/a | ||||||||
Supervisor ISA v1.11 (CSRs, SFENCE.VMA, Sv32/Sv39/Sv48) | y | upstream | upstream | n/a | |||||||||
B (bitmanip) v0.92 (Zba, Zbb, Zbc, Zbe, Zbf, Zbk, Zbp, Zbr, Zbs) | n | PR | dev branch | upstream (experimental) | |||||||||
K (scalar crypto) | n | PR | PR | MC layer PR LLVM Intrinsic PR | |||||||||
P (SIMD) v0.9.4 | n | upstream (but v0.9.2!) | Mailpatch (v0.9.4) | PR | PR | PR | |||||||
V (vector) v0.10, Vector Extension Intrinsics, Vector Calling Convention | n | upstream | upstream (but v0.7.1) | upstream (experimental,FP16 ABI not settled) | |||||||||
Ztso v0.1 | n | not supported | |||||||||||
Zam v0.1 | n | not supported | |||||||||||
H (hypervisor) v0.6.1 | n | upstream | upstream | dev branch | n/a | n/a | n/a | upstream | KVM patches on LKML | ||||
Zmmul v0.1 (subset of M) | |||||||||||||
J (JIT/Java) | |||||||||||||
TEE | |||||||||||||
Snavpot | n | ||||||||||||
Zfinx | n | staging branch | staging branch | staging branch | staging-branch | PR | |||||||
Z*inx (with new ABIs: ILP32X/LP64X) | dev: PLCT | dev: PLCT | |||||||||||
Zfh | upstream | ||||||||||||
SV57 | |||||||||||||
Zce | dev: PLCT | dev: PLCT | dev branch | ||||||||||
CMO / Zicmobase | n |
upstream...SW support has been merged into the main development branch of the corresponding SW project
staging branch...SW support lives in a staging branch and is not upstreamed
PR...SW support exists in form of a pull request for upstream (in-review or waiting for ratification)
n/a...not applicable, not relevant, or not required
missing...currently no known implementation
dev:X...feature is in development by X
empty cells...unknown status (feel free to share your knowledge)
E.g.: RV64I1p0M1p0A1p0F1p0D1p0 or RV32I2_M2_A2 (P extension requires underscore!)
The complete ISA extension naming convention can be found in the unpriv specification.
Extensions with prefix Z...standard user-level
Extensions with prefix X...non-standard user-level
Extensions with prefix S...standard supervisor-level
Extensions with prefix SX...non-standard supervisor-level