5.4 KiB
5.4 KiB
RISC-V Instructions
Instructions
Below is a table of RISC-V instructions supported by the original riscv-formal framework at the time of writing, categorized by instruction type.
Instruction type | Instructions |
---|---|
R-type | ADD, ADDW, AND, DIV, DIVU, DIVUW, DIVW, MUL, MULH, MULHSU, MULHU, MULW, OR, REM, REMU, REMUW, REMW, SLL, SLLW, SLT, SLTU, SRA, SRAW, SRL, SRLW, SUB, SUBW, XOR |
I-type | ADDI, ADDIW, ANDI, JALR, LB, LBU, LD, LH, LHU, LW, LWU, ORI, SLTI, SLTIU, XORI |
I-type (shift variation) | SLLI, SLLIW, SRAI, SRAIW, SRLI, SRLIW |
S-type | SB, SD, SH, SW |
SB-type | BEQ, BGE, BGEU, BLT, BLTU, BNE |
U-type | AUIPC, LUI |
UJ-type | JAL |
CI-type | C_ADD, C_ADDI, C_ADDIW, C_JALR, C_JR, C_LI, C_MV |
CI-type (SP variation) | C_ADDI16SP |
CI-type (ANDI variation) | C_ANDI |
CI-type (LSP variation, 32 bit version) | C_LWSP |
CI-type (LSP variation, 64 bit version) | C_LDSP |
CI-type (LUI variation) | C_LUI |
CI-type (SLI variation) | C_SLLI |
CI-type (SRI variation) | C_SRAI, C_SRLI |
CIW-type | C_ADDI4SPN |
CS-type (ALU version) | C_ADDW, C_AND, C_OR, C_SUB, C_SUBW, C_XOR |
CS-type (32 bit version) | C_SW |
CS-type (64 bit version) | C_SD |
CSS-type (32 bit version) | C_SWSP |
CSS-type (64 bit version) | C_SDSP |
CB-type | C_BEQZ, C_BNEZ |
CJ-type | C_J, C_JAL |
CL-type (32 bit version) | C_LW |
CL-type (64 bit version) | C_LD |
Class Synopsis
Instructions
Below is a list of instructions currently supported by this port of the riscv-formal framework and is expected to grow over time. The instructions are roughly grouped by instruction type but sometimes with further specializations - the hierarchy of the lists reflects the hierarchy of inheritance in the classes used to represent various instructions.
Insn
: General RISC-V instructionInsnRV32IRType
: RV32I R-Type InstructionInsnAdd
: ADD instructionInsnSub
: SUB instructionInsnSll
: SLL instructionInsnSlt
: SLT instructionInsnSltu
: SLTU instructionInsnXor
: XOR instructionInsnSrl
: SRL instructionInsnSra
: SRA instructionInsnOr
: OR instructionInsnAnd
: AND instruction
InsnRV32IITypeShift
: RV32I I-Type Instruction (Shift Variation)InsnSlli
: SLLI instructionInsnSrli
: SRLI instructionInsnSrai
: SRAI instruction
InsnRV32IIType
: RV32I I-Type InstructionInsnJalr
: JALR instructionInsnRV32IITypeLoad
: RV32I I-Type Instruction (Load Variation)InsnLb
: LB instructionInsnLh
: LH instructionInsnLw
: LW instructionInsnLbu
: LBU instructionInsnLhu
: LHU instruction
InsnRV32IITypeArith
: RV32I I-Type Instruction (Arithmetic Variation)InsnAddi
: ADDI instructionInsnSlti
: SLTI instructionInsnSltiu
: SLTIU instructionInsnXori
: XORI instructionInsnOri
: ORI instructionInsnAndi
: ANDI instruction
InsnRV32ISType
: RV32I S-Type InstructionInsnSb
: SB instructionInsnSh
: SH instructionInsnSw
: SW instruction
InsnRV32ISBType
: RV32I SB-Type InstructionInsnBeq
: BEQ instructionInsnBne
: BNE instructionInsnBlt
: BLT instructionInsnBge
: BGE instructionInsnBltu
: BLTU instructionInsnBgeu
: BGEU instruction
InsnJal
: JAL instructionInsnRV32IUType
: RV32I U-Type InstructionInsnLui
: LUI instructionInsnAuipc
: AUIPC instruction
InsnRV32MRType
: RV32M R-Type InstructionInsnMul
: MUL instructionInsnMulh
: MULH instructionInsnMulhsu
: MULHSU instructionInsnMulhu
: MULHU instructionInsnDiv
: DIV instructionInsnDivu
: DIVU instructionInsnRem
: REM instructionInsnRemu
: REMU instruction
InsnRV64IIType
: RV64I I-Type InstructionInsnRV64IITypeLoad
: RV64I I-Type Instruction (Load Variation)InsnLwu
: LWU instructionInsnLd
: LD instruction
InsnAddiw
: ADDIW instructionInsnRV64IITypeShift
: RV64I I-Type Instruction (Shift Variation)InsnSlliw
: SLLIW instructionInsnSrliw
: SRLIW instructionInsnSraiw
: SRAIW instruction
InsnRV64IRType
: RV64I R-Type InstructionInsnAddw
: ADDW instructionInsnSubw
: SUBW instructionInsnSllw
: SLLW instructionInsnSrlw
: SRLW instructionInsnSraw
: SRAW instruction
InsnSd
: SD instructionInsnRV64MRType
: RV64M R-Type InstructionInsnMulw
: MULW instructionInsnDivw
: DIVW instructionInsnDivuw
: DIVUW instructionInsnRemw
: REMW instructionInsnRemuw
: REMUW instruction
ISAs
IsaRV32I
: RV32I Base ISAIsaRV32M
: RV32M Standard ExtensionIsaRV64I
: RV64I Base ISAIsaRV64M
: RV64M Standard Extension
Core-specific parameters
The following core-specific parameters are currently supported:
Parameter | Description | Valid value(s) |
---|---|---|
params.ilen |
Max length of instruction retired by core | 32 , 64 |
params.xlen |
Width of integer registers | 32 , 64 |
params.csr_misa |
Support for MISA CSRs enabled | True , False |
params.compressed |
Support for compressed instructions | True , False |
params.aligned_mem |
Require aligned memory accesses | True , False |
params.altops |
Use alternative operations for multiplication/division | True , False |