Index: llvm/docs/RISCVUsage.rst =================================================================== --- /dev/null +++ llvm/docs/RISCVUsage.rst @@ -0,0 +1,82 @@ +============================= +User Guide for RISC-V Target +============================= + +.. contents:: + :local: + +Introduction +============ + +The RISC-V target provides code generation for processors implementing +supported variations of the RISC-V specification. It lives in the +``llvm/lib/Target/RISCV`` directory. + +Base ISAs +========= + +The specification defines four base instruction sets: RV32I, RV32E, RV64I, +and RV128I. Currently, LLVM fully supports RV32I, and RV64I. RV32E is +supported by the assembly-based tools only. RV128I is not supported. + +To specify the target triple: + + .. table:: RISC-V Architectures + + ============ ============================================================== + Architecture Description + ============ ============================================================== + ``riscv32`` RISC-V with XLEN=32 (i.e. RV32I or RV32E) + ``riscv64`` RISC-V with XLEN=64 (i.e. RV64I) + ============ ============================================================== + +To select an E variant ISA (e.g. RV32E instead of RV32I), use the base +architecture string (e.g. ``riscv32``) with the extension ``e``. + +.. _riscv-extensions: + +Extensions +========== + +The following table provides a status summary for extensions which have been +ratified and thus have finalized specifications. When relevant, detailed notes +on support follow. + + .. table:: Ratified Extensions by Status + + ============= ======================== + Extension Status + ============= ======================== + ``A`` Supported + ``C`` Supported + ``D`` Supported + ``F`` Supported + ``M`` Supported + ``V`` Supported + ``Zba`` Supported + ``Zbb`` Supported + ``Zbc`` Supported + ``Zbs`` Supported + ``Zve32x`` Partially Supported + ``Zve32f`` Partially Supported + ``Zve64x`` Supported + ``Zve64f`` Supported + ``Zve64d`` Supported + ``Zvl32b`` Partially Supported + ``Zvl64b`` Supported + ``Zvl128b`` Supported + ``Zvl256b`` Supported + ``Zvl512b`` Supported + ``Zvl1024b`` Supported + ============= ======================== + +``Zve32x``, ``Zve32f``, ``Zvl32b`` + LLVM currently assumes a minimum VLEN (vector register width) of 64 bits during compilation, and as a result ``Zve32x`` and ``Zve32f`` are supported only for VLEN>=64. Assembly tools (e.g. assembler, dissambler, llvm-objdump, etc..) don't have this restriction. + +Specification Documents +======================= +For ratified specifications, please refer to the `official RISC-V International +page `_. Make sure to check the +`wiki for not yet integrated extensions +`_. +