RISC-V International
This page gives an overview of the extension and feature support in the RISC-V SW ecosystem.
The subsections below contain tables that summarize the current state of extensions and features. The following description helps to interpret the table cell's contents:
This is just a summary of the naming convention as defined in the unpriv specification.
ISA extension description example: RV64I1p0M1p0A1p0F1p0D1p0 or RV32I2_M2_A2 (P extension requires underscore!)
Prefixes:
The table below lists the status of the extensions and features of above listed published extensions.
Extension | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|
RV32I | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | not supported | upstream | upstream |
RV64I | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream |
Big-endian support | upstream | upstream | not supported | upstream | |||||||
M (Multiplication and Division) v2.0 | upstream | upstream | upstream | upstream | n/a | n/a | upstream | n/a | n/a | n/a | upstream |
A (Atomic) | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream (atomics) | upstream (atomics) | upstream (atomics) | upstream |
F (SP float) | upstream | upstream | upstream | upstream | |||||||
D (DP float) | upstream | upstream | upstream | upstream | |||||||
Q (QP float) | upstream | not supported | upstream | ||||||||
RVWMO | 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 | upstream |
C (compressed) v2.0 | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream | |||
Zifencei v2.0 | upstream | upstream | upstream | not supported | upstream | upstream |
Extension | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|
Zihintpause | upstream | not supported |
Extensions and features in the table below are either frozen or ready-for-ratification.
Extension | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|
Zihintpause | upstream | not supported |
Extension | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|
Standard ABIs: ILP32, ILP32F, ILP32D, LP64, LP64F, LP64D, LP64Q | n/a | n/a | upstream | ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d | ilp32, ilp32d, lp64, lp64d | ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d | ilp32, ilp32d, lp64, lp64d | n/a | lp64, lp64d | n/a |
Note that this section only exists for historical purposes and the table below is not considered complete. Further, there are no attempts to track the SW support of unstable features here.
Extension | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|
Embedded ABI: ILP32E, LP64E | n/a | n/a | upstream | upstream | not supported | upstream | not supported | n/a | n/a | n/a | not supported |
This is a temporary subsection that will disappear soon.
Extension | Ratified? | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |