This page gives an overview of the extension and feature support in the RISC-V SW ecosystem.
Overview
- This page only tracks extensions and features that are specified by groups (TGs, HCs) of RISC-V International.
- The extensions and features are grouped by their specification's state.
- Published (official) 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
...
- The On Deck Dashboards lists the specifications that are frozen and ready for ratification
Published specifications (20191213)
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 |
---|
Unpriv Spec 20191213 |
---|
RV32I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | not supported | upstream |
---|
Unpriv Spec 20191213upstream |
RV64I | y | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream | upstream |
---|
Unpriv Spec 20191213upstream |
Big-endian support | y | upstream |
|
| upstream |
|
| not supported |
---|
Unpriv Spec 20191213
|
|
| upstream |
M (Multiplication and Division) v2.0 | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | n/a | n/a | n/a |
---|
Unpriv Spec 20191213upstream |
A (Atomic) | y | upstream | upstream | upstream | upstream | n/a | n/a | upstream | upstream (atomics) | upstream (atomics) | upstream (atomics) |
---|
Unpriv Spec 20191213upstream |
F (SP float) | y | upstream | upstream |
|
|
|
| upstream |
---|
Unpriv Spec 20191213
|
|
| upstream |
D (DP float) | y | upstream | upstream |
|
|
|
| upstream |
---|
Unpriv Spec 20191213
|
|
| upstream |
Q (QP float) | y |
|
| upstream |
|
|
| not supported |
---|
Unpriv Spec 20191213
|
|
| 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 | 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 |
| Mailpatch (Zba, Zbb, Zbs, Zbp) | 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 |
|
|
|
|
|
|
|
|
|
|
|
---|
...