RISC-V Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| 0x00000033 | ADD | ADD rd, rs1, rs2 | R-Type | Add Integer |
| 0x0800003B | ADD.UW | ADD.UW rd, rs1, rs2 | R-Type | Add Unsigned Word |
| 0x00000013 | ADDI | ADDI rd, rs1, imm | I-Type | Add Immediate |
| 0x0000001B | ADDIW | ADDIW rd, rs1, imm | I-Type | Add Immediate Word |
| 0x0000003B | ADDW | ADDW rd, rs1, rs2 | R-Type | Add Word |
| 0x3A000033 | AES64DS | AES64DS rd, rs1, rs2 | R-Type | AES-64 Decryption Schedule |
| 0x32000033 | AES64ES | AES64ES rd, rs1, rs2 | R-Type | AES-64 Encryption Schedule |
| 0x30001013 | AES64IM | AES64IM rd, rs1 | R-Type | AES-64 Inverse MixColumns |
| 0x31001013 | AES64KS1I | AES64KS1I rd, rs1, rcon | I-Type | AES-64 Key Schedule Instruction 1 |
| 0x7E000033 | AES64KS2 | AES64KS2 rd, rs1, rs2 | R-Type | AES-64 Key Schedule Instruction 2 |
| 0x0000302F | AMOADD.D | AMOADD.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Add Doubleword |
| 0x0000202F | AMOADD.W | AMOADD.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Add Word |
| 0x6000302F | AMOAND.D | AMOAND.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic AND Doubleword |
| 0x6000202F | AMOAND.W | AMOAND.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic AND Word |
| 0x2800302F | AMOCAS.D | AMOCAS.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Compare and Swap Doubleword |
| 0x2800202F | AMOCAS.W | AMOCAS.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Compare and Swap Word |
| 0xA000302F | AMOMAX.D | AMOMAX.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Max Doubleword |
| 0xA000202F | AMOMAX.W | AMOMAX.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Max Word |
| 0xE000302F | AMOMAXU.D | AMOMAXU.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Max Unsigned Doubleword |
| 0xE000202F | AMOMAXU.W | AMOMAXU.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Max Unsigned Word |
| 0x8000302F | AMOMIN.D | AMOMIN.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Min Doubleword |
| 0x8000202F | AMOMIN.W | AMOMIN.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Min Word |
| 0xC000302F | AMOMINU.D | AMOMINU.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Min Unsigned Doubleword |
| 0xC000202F | AMOMINU.W | AMOMINU.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Min Unsigned Word |
| 0x4000302F | AMOOR.D | AMOOR.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic OR Doubleword |
| 0x4000202F | AMOOR.W | AMOOR.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic OR Word |
| 0x0800302F | AMOSWAP.D | AMOSWAP.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic Swap Doubleword |
| 0x0800202F | AMOSWAP.W | AMOSWAP.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic Swap Word |
| 0x2000302F | AMOXOR.D | AMOXOR.D rd, rs2, (rs1) | R-Type (Atomic) | Atomic XOR Doubleword |
| 0x2000202F | AMOXOR.W | AMOXOR.W rd, rs2, (rs1) | R-Type (Atomic) | Atomic XOR Word |
| 0x00007033 | AND | AND rd, rs1, rs2 | R-Type | Logical AND |
| 0x00007013 | ANDI | ANDI rd, rs1, imm | I-Type | Logical AND Immediate |
| 0x40007033 | ANDN | ANDN rd, rs1, rs2 | R-Type | AND Not |
| 0x00000017 | AUIPC | AUIPC rd, imm | U-Type | Add Upper Immediate to PC |
| 0x48001033 | BCLR | BCLR rd, rs1, rs2 | R-Type | Bit Clear |
| 0x48001013 | BCLRI | BCLRI rd, rs1, imm | I-Type | Bit Clear Immediate |
| 0x00000063 | BEQ | BEQ rs1, rs2, offset | B-Type | Branch if Equal |
| 0x00000063 | BEQZ | BEQZ rs, offset | B-Type | Branch if Equal to Zero |
| 0x48005033 | BEXT | BEXT rd, rs1, rs2 | R-Type | Bit Extract |
| 0x48005013 | BEXTI | BEXTI rd, rs1, imm | I-Type | Bit Extract Immediate |
| 0x00005063 | BGE | BGE rs1, rs2, offset | B-Type | Branch if Greater or Equal |
| 0x00007063 | BGEU | BGEU rs1, rs2, offset | B-Type | Branch if Greater or Equal Unsigned |
| 0x68001033 | BINV | BINV rd, rs1, rs2 | R-Type | Bit Invert |
| 0x68001013 | BINVI | BINVI rd, rs1, imm | I-Type | Bit Invert Immediate |
| 0x00004063 | BLT | BLT rs1, rs2, offset | B-Type | Branch if Less Than |
| 0x00006063 | BLTU | BLTU rs1, rs2, offset | B-Type | Branch if Less Than Unsigned |
| 0x00001063 | BNE | BNE rs1, rs2, offset | B-Type | Branch if Not Equal |
| 0x00001063 | BNEZ | BNEZ rs, offset | B-Type | Branch if Not Equal to Zero |
| 0x28001033 | BSET | BSET rd, rs1, rs2 | R-Type | Bit Set |
| 0x28001013 | BSETI | BSETI rd, rs1, imm | I-Type | Bit Set Immediate |
| 0x00009002 | C.ADD | C.ADD rd, rs2 | CR | Compressed Add |
| 0x00000001 | C.ADDI | C.ADDI rd, imm | CI | Compressed Add Immediate |
| 0x00006101 | C.ADDI16SP | C.ADDI16SP imm | CI | Compressed Add Immediate to Stack Pointer |
| 0x00000000 | C.ADDI4SPN | C.ADDI4SPN rd', uimm | CIW | Compressed Add Immediate to Stack Pointer (Non-zero) |
| 0x00002001 | C.ADDIW | C.ADDIW rd, imm | CI | Compressed Add Immediate Word |
| 0x00009C21 | C.ADDW | C.ADDW rd', rs2' | CA | Compressed Add Word |
| 0x00008C61 | C.AND | C.AND rd', rs2' | CA | Compressed AND |
| 0x00008801 | C.ANDI | C.ANDI rd', imm | CB | Compressed AND Immediate |
| 0x0000C001 | C.BEQZ | C.BEQZ rs1', offset | CB | Compressed Branch if Equal to Zero |
| 0x0000E001 | C.BNEZ | C.BNEZ rs1', offset | CB | Compressed Branch if Not Equal to Zero |
| 0x00009002 | C.EBREAK | C.EBREAK | CR | Compressed Environment Break |
| 0x00002000 | C.FLD | C.FLD rd', offset(rs1') | CL | Compressed Float Load Double |
| 0x00002002 | C.FLDSP | C.FLDSP rd, offset(x2) | CI | Compressed Float Load Double from Stack Pointer |
| 0x00006000 | C.FLW | C.FLW rd', offset(rs1') | CL | Compressed Float Load Word |
| 0x00006002 | C.FLWSP | C.FLWSP rd, offset(x2) | CI | Compressed Float Load Word from Stack Pointer |
| 0x0000A000 | C.FSD | C.FSD rs2', offset(rs1') | CS | Compressed Float Store Double |
| 0x0000A002 | C.FSDSP | C.FSDSP rs2, offset(x2) | CSS | Compressed Float Store Double to Stack Pointer |
| 0x0000E000 | C.FSW | C.FSW rs2', offset(rs1') | CS | Compressed Float Store Word |
| 0x0000E002 | C.FSWSP | C.FSWSP rs2, offset(x2) | CSS | Compressed Float Store Word to Stack Pointer |
| 0x0000A001 | C.J | C.J offset | CJ | Compressed Jump |
| 0x00002001 | C.JAL | C.JAL offset | CJ | Compressed Jump and Link |
| 0x00009002 | C.JALR | C.JALR rs1 | CR | Compressed Jump and Link Register |
| 0x00008002 | C.JR | C.JR rs1 | CR | Compressed Jump Register |
| 0x00006000 | C.LD | C.LD rd', offset(rs1') | CL | Compressed Load Doubleword |
| 0x00006002 | C.LDSP | C.LDSP rd, offset(x2) | CI | Compressed Load Doubleword from Stack Pointer |
| 0x00004001 | C.LI | C.LI rd, imm | CI | Compressed Load Immediate |
| 0x00006001 | C.LUI | C.LUI rd, imm | CI | Compressed Load Upper Immediate |
| 0x00004000 | C.LW | C.LW rd', offset(rs1') | CL | Compressed Load Word |
| 0x00004002 | C.LWSP | C.LWSP rd, offset(x2) | CI | Compressed Load Word from Stack Pointer |
| 0x00009C41 | C.MUL | C.MUL rd', rs2' | CA | Compressed Multiply |
| 0x00008002 | C.MV | C.MV rd, rs2 | CR | Compressed Move |
| 0x00000001 | C.NOP | C.NOP | CI | Compressed No Operation |
| 0x00009C75 | C.NOT | C.NOT rd' | CR | Compressed Bitwise NOT |
| 0x00008C41 | C.OR | C.OR rd', rs2' | CA | Compressed OR |
| 0x0000E000 | C.SD | C.SD rs2', offset(rs1') | CS | Compressed Store Doubleword |
| 0x0000E002 | C.SDSP | C.SDSP rs2, offset(x2) | CSS | Compressed Store Doubleword to Stack Pointer |
| 0x00009C65 | C.SEXT.B | C.SEXT.B rd' | CR | Compressed Sign Extend Byte |
| 0x00000002 | C.SLLI | C.SLLI rd, imm | CI | Compressed Shift Left Logical Immediate |
| 0x00008401 | C.SRAI | C.SRAI rd', imm | CB | Compressed Shift Right Arithmetic Immediate |
| 0x00008001 | C.SRLI | C.SRLI rd', imm | CB | Compressed Shift Right Logical Immediate |
| 0x00008C01 | C.SUB | C.SUB rd', rs2' | CA | Compressed Subtract |
| 0x00009C01 | C.SUBW | C.SUBW rd', rs2' | CA | Compressed Subtract Word |
| 0x0000C000 | C.SW | C.SW rs2', offset(rs1') | CS | Compressed Store Word |
| 0x0000C002 | C.SWSP | C.SWSP rs2, offset(x2) | CSS | Compressed Store Word to Stack Pointer |
| 0x00008C21 | C.XOR | C.XOR rd', rs2' | CA | Compressed XOR |
| 0x00009C61 | C.ZEXT.B | C.ZEXT.B rd' | CR | Compressed Zero Extend Byte |
| 0x00000017 | CALL | CALL symbol | Pseudo | Call Subroutine |
| 0x0010200F | CBO.CLEAN | CBO.CLEAN (rs1) | I-Type | Cache Block Operation: Clean |
| 0x0020200F | CBO.FLUSH | CBO.FLUSH (rs1) | I-Type | Cache Block Operation: Flush |
| 0x0000200F | CBO.INVAL | CBO.INVAL (rs1) | I-Type | Cache Block Operation: Invalidate |