RISC-V International

Page tree
Skip to end of metadata
Go to start of metadata

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

Published 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

Extension / featureRatified?

HW exists

(see also here)?

FPGA exists?SpikeQemuBinutilsGCCglibcnewlibLLVMOpenSBIFreeBSDLinuxGDB
RV32I v2.1ye.g. LowFivee.g. Rocketmainlinemainlinemainlinemainlinemainlinemainlinemainlinemainlinenot supportedmainline
RV64I v2.1ye.g. BeagleVe.g. Rocketmainlinemainlinemainlinemainlinemainlinemainlinemainlinemainlinemainlinemainline
Big-endian supporty

mainline

mainline






RV32E v1.9n




mainline

not supported
not supportednot supported
M (Multiplication and Division) v2.0ye.g. BeagleVe.g. Rocketmainlinemainlinemainlinemainlinen/an/amainlinen/an/an/a
A (Atomic) v2.1ye.g. BeagleVe.g. Rocketmainlinemainlinemainlinemainlinen/an/amainlinemainline (atomics)mainline (atomics)mainline (atomics)
F (SP float) v2.2ye.g. BeagleVe.g. Rocketmainlinemainline








D (DP float) v2.2y

mainlinemainline








RVWMO v2.0ye.g. BeagleVe.g. Rocketmainline (emulation is seq. consistent)mainline (emulation is seq. consistent)n/an/an/an/an/amainline (barriers and locks)mainline (barriers and locks)mainline (barriers and locks), but needs optimization
ABIs (ILP32, ILP32E, ILP32F, ILP32D, LP64, LP64f, LP64D, LP64Q)Documented ABIs



ilp32, ilp32f, ilp32d, ilp32q, ilp32e, lp64, lp64f, lp64d, lp64qilp32, ilp32f, ilp32d, ilp32e, lp64, lp64f, lp64dilp32, ilp32d, lp64, lp64dilp32, ilp32f, ilp32d, ilp32e, lp64, lp64f, lp64dilp32, ilp32d, lp64, lp64dn/alp64, lp64dn/a
C (compressed) v2.0y
e.g. EH2mainlinemainlinemainlinemainlinen/an/amainline
mainline

Q (QP float) v2.2y



mainline







Zifencei v2.0y
e.g. EH2mainlinemainlinemainline




mainlinemainline
Zihintpause v1.0




mainline







Zicsr v2.0y
e.g. EH2mainlinemainlinemainline




mainlinemainline
Counters v2.0n

mainlinemainline
n/an/an/a
mainline
mainline
Machine ISA v1.11 (CSRs, ECALL, EBREAK, MRET/SRET/URET, WFI, Reset, NMIs, PMAs, PMP)y

mainlinemainline





n/an/a
Supervisor ISA v1.11 (CSRs, SFENCE.VMA, Sv32/Sv39/Sv48)y

mainlinemainline




n/a


B (bitmanip) v0.92 (Zba, Zbb, Zbc, Zbe, Zbf, Zbk, Zbp, Zbr, Zbs)n

e.g. PR for Rocket,

EH2 (Zba, Zbb, Zbc, Zbe, Zbf, Zbp, Zbr, Zbs)


Mailpatch (Zba, Zbb, Zbs, Zbp)

PRdev branch

mainline (experimental)



K (scalar crypto)n



PRPR






P (SIMD) v0.9.4n

mainline (but v0.9.2!)Mailpatch (v0.9.4)PRPR






V (vector) v0.10, Vector Extension Intrinsics, Vector Calling Conventionn

z.B. Allwinner D1

(but v0.7.1)


mainlinemainline (but v0.7.1)



mainline (experimental, Zvlsseg API not settled, FP16 ABI not settled)



Ztso v0.1n












Zam v0.1n












H (hypervisor) v0.6.1n
e.g. Rocket (PR)mainlinemainlinedev branchn/an/an/a
mainline
KVM patches on LKML
Zmmul v0.1 (subset of M)













J (JIT/Java)













TEE













Snavpotn












Zfinxn

staging branchstaging branchstaging branchstaging-branch

PR



Z*inx (with new ABIs: ILP32X/LP64X)




dev: PLCTdev: PLCT






Zfh








mainline



SV57













Zce




dev: PLCTdev: PLCT






CMO / Zicmobasen












mainline...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 mainlined
PR...SW support exists in form of a pull request for mainline (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

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

  • No labels