You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 58 Next »

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:

  • 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)

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:

  • 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

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


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


upstream
D (DP float)upstreamupstream



upstream


upstream
Q (QP float)

upstream


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
upstream

Zifenceiupstreamupstreamupstream


not supported
upstreamupstream
Machine ISA: CSRs










Machine ISA: ECALL, EBREAK










Machine ISA: MRET/SRET/URET










Machine ISA: WFI










Machine ISA: PMP










Supervisor ISA: CSRs










Supervisor ISA: SFENCE.VMA










Supervisor ISA: Sv32, Sv39, Sv48










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, Zvenupstreamupstream (but v0.7.1)



upstream (experimental,FP16 ABI not settled)


Bitmanip: Zba, Zbb, Zbc, Zbsn

Mailpatch (Zba, Zbb, Zbs, Zbp)

PRdev branch

upstream (experimental)


FP in INT regs: Zfinxstaging branchstaging branchstaging branchstaging-branch

PR



Half Width FP: Zfh, Zfhmin





upstream



ePMP: Smepmp










Scalar crypto: Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh, Zkn, Zks, Zkt, Zk, Zkr

PRPR

MC layer PR LLVM Intrinsic PR



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











CMO base: Zicbom, Zicbop, Zicboz










Hypervisor: Hupstreamupstreamdev branchn/an/an/a
upstream
KVM patches on LKML
State Enable: Smstateen










Time compare: Sstc










Counter overflow and filtering: Sscofmpf










Fast TLP invalidation: Svinval










NAPOT pages: Svnapot










Page-based memory types: Svpbmt










Code Size Reduction: Zcee










Packed SIMD:  Zpn, Zpsfoperand, Zprvsfextra










Resumable Non-maskable Interrupts: Smrnmi










Core-local Interrupt Controller: CLINT










Advanced Core-local Interrupt Controller: ACLINT










Zmmul










Pointer masking: Zjpm










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

  • Vector Extension Intrinsics (specification exists, but not frozen)
  • Vector Calling Convention (specification exists, but not frozen)
  • Scalar Crypto Intrinsics
  • No labels