This page gives an overview of the extension and feature support in the RISC-V SW ecosystem.

Overview

Table description

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:

ISA extension naming conventions

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:

Published specifications (20191213)

The table below lists the status of the extensions and features of above listed published extensions.

ExtensionSpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinux kernel

GDB

RV32Iupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamnot supportedupstreamupstream
RV64Iupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstreamupstream
Big-endian supportupstream

upstream

not supported
not supported
upstream
M (Multiplication and Division)upstreamupstreamupstreamupstreamn/an/aupstreamn/an/an/aupstream
A (Atomic)upstreamupstreamupstreamupstreamn/an/aupstreamupstream (atomics)upstream (atomics)upstream (atomics)upstream
F (SP float)upstreamupstream



upstream
upstreamupstreamupstream
D (DP float)upstreamupstream



upstream
upstreamupstreamupstream
Q (QP float)

upstream


not supported
not supported
upstream
RVWMOupstream (emulation is seq. consistent)upstream (emulation is seq. consistent)n/an/an/an/an/aupstream (barriers and locks)upstream (barriers and locks)upstream (barriers and locks), but needs optimizationupstream
C (compressed)upstreamupstreamupstreamupstreamn/an/aupstream
upstreamupstream
Zifenceiupstreamupstreamupstream


not supported
upstreamupstream
Machine ISA: CSRsupstreamupstream





n/a

Machine ISA: ECALL, EBREAKupstreamupstream





upstreamupstream
Machine ISA: MRET/SRET/URETupstreamupstream





n/a

Machine ISA: WFIupstreamupstream





upstreamupstream
Machine ISA: PMP







n/a

Supervisor ISA: CSRsupstreamupstream





upstream

Supervisor ISA: SFENCE.VMAupstreamupstream





upstreamupstream
Supervisor ISA: Sv32, Sv39, Sv48upstreamupstream





Sv39 upstreamupstream (sv39)

Unpublished ratified extensions

ExtensionSpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinux kernel

GDB

Zihintpause

upstream


not supported



Specifications that are at least frozen

Extensions and features in the table below are either frozen or ready-for-ratification.

ExtensionSpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinux kernel

GDB

Vector: Zvamo, Zvlsseg, Zvediv, Zvqmac, Zve32x, Zve32f, Zve64x, Zve64f, Zve64d, Zvfh, Zveupstreamupstream(but v0.7.1)upstream (but v0.7.1)



upstream (experimental,FP16 ABI not settled)not supported

Bitmanip: Zba, Zbb, Zbc, Zbsupstreamupstream

Mailpatch (Zba, Zbb, Zbs, Zbp)

PRdev branch

upstream (experimental)not used

FP in INT regs: Zfinxstaging branchstaging branchupstream(Zfinx, Zdinx)


Mailpatch

(Zfinx,Zdinx)




PR
not supported

Half Width FP: Zfh, Zfhminupstream




upstream
not supported

ePMP: Smepmp







not supported

Scalar crypto: Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh, Zkn, Zks, Zkt, Zk, Zkrupstreamstaging branchupstreamupstream(only minimal support and wait c-api merge)

MC layer PR LLVM Intrinsic PR
not used

Priv 1.12: 
Sm1-12, Ss1-12, Sv57








not supported

CMO base: Zicbom, Zicbop, Zicbozstaging branch






not supported

Hypervisor: Hupstreamupstreamdev branchn/an/an/a
upstreamnot supportedupstream (5.16)
State Enable: Smstateen







not supported

Time compare: Sstc







not supported

Counter overflow and filtering: Sscofmpf







not supported

Fast TLP invalidation: Svinvalupstreamstaging branch





not supported

NAPOT pages: Svnapotupstreamstaging branch





not supported

Page-based memory types: Svpbmtupstreamstaging branch





not supported

Code Size Reduction: Zceedev branchdev branchdev branchdev branch



not supported

Packed SIMD:  Zpn, Zpsfoperand, Zprvsfextra

PRPR



not supported

Resumable Non-maskable Interrupts: Smrnmi







not supported

Core-local Interrupt Controller: CLINT







upstreamupstream (clocksource)
Advanced Core-local Interrupt Controller: ACLINT
upstream





not supportedPatchwork
Zmmulupstream
MailpatchMailpatch
https://reviews.llvm.org/D103313

n/a

Pointer masking: Zjpm







not supported

Specifications that are at least stable

Note, that this section only lists specifications that are planned to be released in the near future, but not frozen yet.

ExtensionSpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinux kernel

GDB

psABI: Standard ABIs: ILP32, ILP32F, ILP32D, LP64, LP64F, LP64D, LP64Qn/an/aupstreamilp32, ilp32f, ilp32d, lp64, lp64f, lp64dilp32, ilp32d, lp64, lp64dilp32, ilp32f, ilp32d, lp64, lp64f, lp64dilp32, ilp32d, lp64, lp64dn/alp64, lp64dn/a

Specifications that are not stable

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. 

ExtensionSpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinux kernel

GDB

Embedded ABI: ILP32E, LP64En/an/aupstreamupstreamnot supportedupstreamnot supportedn/an/an/anot supported

Gaps