RISC-V International
This page gives an overview of the extension and feature support in the RISC-V SW ecosystem.
The table below lists the status of the extensions and features of above listed published extensions.
Extension | Ratified? | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|---|
RV32I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | not supported | upstream | upstream |
RV64I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream |
Big-endian support | y | upstream | upstream | not supported | upstream | |||||||
M (Multiplication and Division) v2.0 | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | n/a | n/a | n/a | upstream |
A (Atomic) | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream (atomics) | upstream (atomics) | upstream (atomics) | upstream |
F (SP float) | y | upstream | upstream | upstream | upstream | |||||||
D (DP float) | y | upstream | upstream | upstream | upstream | |||||||
Q (QP float) | y | upstream | not supported | upstream | ||||||||
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 | upstream |
Extension | Ratified? | Spike | Qemu | Binutils | GCC | glibc | newlib | LLVM | OpenSBI | FreeBSD | Linux | GDB |
---|---|---|---|---|---|---|---|---|---|---|---|---|
RV32I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | not supported | upstream | |
RV64I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | |
Big-endian support | y | upstream | upstream | not supported | ||||||||
M (Multiplication and Division) v2.0 | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | n/a | n/a | n/a | |
A (Atomic) | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream (atomics) | upstream (atomics) | upstream (atomics) | |
F (SP float) | y | upstream | upstream | upstream | ||||||||
D (DP float) | y | upstream | upstream | upstream | ||||||||
Q (QP float) | y | upstream | not supported | |||||||||
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 | |
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 | ||||
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