RISC-V Opcode Map
Reverse lookup instructions by their hexadecimal encoding.
| Opcode | Mnemonic | Syntax | Format | Name |
|---|---|---|---|---|
| 0x0040200F | CBO.ZERO | CBO.ZERO (rs1) | I-Type | Cache Block Zero |
| 0x0A001033 | CLMUL | CLMUL rd, rs1, rs2 | R-Type | Carry-less Multiply |
| 0x60001013 | CLZ | CLZ rd, rs1 | I-Type | Count Leading Zeros |
| 0x0000BA02 | CM.POP | CM.POP {reg_list}, stack_adj | Push/Pop | Pop Registers |
| 0x0000B802 | CM.PUSH | CM.PUSH {reg_list}, -stack_adj | Push/Pop | Push Registers |
| 0x60201013 | CPOP | CPOP rd, rs1 | I-Type | Population Count |
| 0x00003073 | CSRC | CSRC csr, rs | I-Type | Control Status Register Clear |
| 0x00002073 | CSRR | CSRR rd, csr | I-Type | Control Status Register Read |
| 0x00003073 | CSRRC | CSRRC rd, csr, rs1 | I-Type | Control Status Register Read and Clear |
| 0x00007073 | CSRRCI | CSRRCI rd, csr, uimm | I-Type | CSR Read and Clear Immediate |
| 0x00002073 | CSRRS | CSRRS rd, csr, rs1 | I-Type | Control Status Register Read and Set |
| 0x00006073 | CSRRSI | CSRRSI rd, csr, uimm | I-Type | CSR Read and Set Immediate |
| 0x00001073 | CSRRW | CSRRW rd, csr, rs1 | I-Type | Control Status Register Read/Write |
| 0x00005073 | CSRRWI | CSRRWI rd, csr, uimm | I-Type | CSR Read/Write Immediate |
| 0x00002073 | CSRS | CSRS csr, rs | I-Type | Control Status Register Set |
| 0x00001073 | CSRW | CSRW csr, rs | I-Type | Control Status Register Write |
| 0x60101013 | CTZ | CTZ rd, rs1 | I-Type | Count Trailing Zeros |
| 0x0E005033 | CZERO.EQZ | CZERO.EQZ rd, rs1, rs2 | R-Type | Conditional Zero Equal to Zero |
| 0x0E007033 | CZERO.NEZ | CZERO.NEZ rd, rs1, rs2 | R-Type | Conditional Zero Not Equal to Zero |
| 0x02004033 | DIV | DIV rd, rs1, rs2 | R-Type | Divide |
| 0x02005033 | DIVU | DIVU rd, rs1, rs2 | R-Type | Divide Unsigned |
| 0x0200503B | DIVUW | DIVUW rd, rs1, rs2 | R-Type | Divide Unsigned Word |
| 0x0200403B | DIVW | DIVW rd, rs1, rs2 | R-Type | Divide Word |
| 0x7B200073 | DRET | DRET | R-Type (System) | Debug Return |
| 0x00100073 | EBREAK | EBREAK | I-Type | Environment Break |
| 0x00000073 | ECALL | ECALL | I-Type | Environment Call |
| 0x02000053 | FADD.D | FADD.D rd, rs1, rs2 | R-Type | Float Add Double |
| 0x04000053 | FADD.H | FADD.H rd, rs1, rs2 | R-Type | Float Add Half |
| 0x00000053 | FADD.S | FADD.S rd, rs1, rs2 | R-Type | Float Add (Single) |
| 0xE2001053 | FCLASS.D | FCLASS.D rd, rs1 | R-Type | Float Classify (Double) |
| 0xE4001053 | FCLASS.H | FCLASS.H rd, rs1 | R-Type | Float Classify (Half) |
| 0xE0001053 | FCLASS.S | FCLASS.S rd, rs1 | R-Type | Float Classify (Single) |
| 0xD2200053 | FCVT.D.L | FCVT.D.L rd, rs1 | I-Type (Float) | Convert Long to Double |
| 0xD2300053 | FCVT.D.LU | FCVT.D.LU rd, rs1 | I-Type (Float) | Convert Unsigned Long to Double |
| 0x42000053 | FCVT.D.S | FCVT.D.S rd, rs1 | I-Type (Float) | Float Convert Single to Double |
| 0xD2000053 | FCVT.D.W | FCVT.D.W rd, rs1 | I-Type (Float) | Convert Word to Double |
| 0xD2100053 | FCVT.D.WU | FCVT.D.WU rd, rs1 | I-Type (Float) | Convert Unsigned Word to Double |
| 0x44000053 | FCVT.H.S | FCVT.H.S rd, rs1 | I-Type (Float) | Convert Single to Half |
| 0xD4000053 | FCVT.H.W | FCVT.H.W rd, rs1 | I-Type (Float) | Convert Word to Half |
| 0xD4100053 | FCVT.H.WU | FCVT.H.WU rd, rs1 | I-Type (Float) | Convert Unsigned Word to Half |
| 0xC2200053 | FCVT.L.D | FCVT.L.D rd, rs1 | I-Type (Float) | Convert Double to Long |
| 0xC0200053 | FCVT.L.S | FCVT.L.S rd, rs1 | I-Type (Float) | Convert Float to Long |
| 0xC2300053 | FCVT.LU.D | FCVT.LU.D rd, rs1 | I-Type (Float) | Convert Double to Unsigned Long |
| 0xC0300053 | FCVT.LU.S | FCVT.LU.S rd, rs1 | I-Type (Float) | Convert Float to Unsigned Long |
| 0x40100053 | FCVT.S.D | FCVT.S.D rd, rs1 | I-Type (Float) | Float Convert Double to Single |
| 0x40200053 | FCVT.S.H | FCVT.S.H rd, rs1 | I-Type (Float) | Convert Half to Single |
| 0xD0200053 | FCVT.S.L | FCVT.S.L rd, rs1 | I-Type (Float) | Convert Long to Float |
| 0xD0300053 | FCVT.S.LU | FCVT.S.LU rd, rs1 | I-Type (Float) | Convert Unsigned Long to Float |
| 0xD0000053 | FCVT.S.W | FCVT.S.W rd, rs1 | I-Type (Float) | Float Convert from Word (Single) |
| 0xD0100053 | FCVT.S.WU | FCVT.S.WU rd, rs1 | I-Type (Float) | Convert Unsigned Word to Float |
| 0xC2000053 | FCVT.W.D | FCVT.W.D rd, rs1 | I-Type (Float) | Convert Double to Word |
| 0xC4000053 | FCVT.W.H | FCVT.W.H rd, rs1 | I-Type (Float) | Convert Half to Word |
| 0xC0000053 | FCVT.W.S | FCVT.W.S rd, rs1 | I-Type (Float) | Float Convert to Word (Single) |
| 0xC2100053 | FCVT.WU.D | FCVT.WU.D rd, rs1 | I-Type (Float) | Convert Double to Unsigned Word |
| 0xC4100053 | FCVT.WU.H | FCVT.WU.H rd, rs1 | I-Type (Float) | Convert Half to Unsigned Word |
| 0xC0100053 | FCVT.WU.S | FCVT.WU.S rd, rs1 | I-Type (Float) | Convert Float to Unsigned Word |
| 0x1A000053 | FDIV.D | FDIV.D rd, rs1, rs2 | R-Type | Float Divide Double |
| 0x1C000053 | FDIV.H | FDIV.H rd, rs1, rs2 | R-Type | Float Divide (Half) |
| 0x18000053 | FDIV.S | FDIV.S rd, rs1, rs2 | R-Type | Float Divide (Single) |
| 0x0000000F | FENCE | FENCE pred, succ | I-Type | Fence |
| 0x0000100F | FENCE.I | FENCE.I | I-Type | Instruction Fence |
| 0xA2002053 | FEQ.D | FEQ.D rd, rs1, rs2 | R-Type | Float Equal (Double) |
| 0xA4002053 | FEQ.H | FEQ.H rd, rs1, rs2 | R-Type | Float Equal (Half) |
| 0xA0002053 | FEQ.S | FEQ.S rd, rs1, rs2 | R-Type | Float Equal (Single) |
| 0x00003007 | FLD | FLD rd, offset(rs1) | I-Type | Float Load Double |
| 0xA2000053 | FLE.D | FLE.D rd, rs1, rs2 | R-Type | Float Less or Equal (Double) |
| 0xA4000053 | FLE.H | FLE.H rd, rs1, rs2 | R-Type | Float Less or Equal (Half) |
| 0xA0000053 | FLE.S | FLE.S rd, rs1, rs2 | R-Type | Float Less or Equal (Single) |
| 0x00001007 | FLH | FLH rd, offset(rs1) | I-Type | Float Load Halfword |
| 0xF2100053 | FLI.D | FLI.D rd, rs1 | R-Type | Float Load Immediate (Double) |
| 0xF4100053 | FLI.H | FLI.H rd, rs1 | R-Type | Float Load Immediate (Half) |
| 0xF0100053 | FLI.S | FLI.S rd, rs1 | R-Type | Float Load Immediate (Single) |
| 0xA2001053 | FLT.D | FLT.D rd, rs1, rs2 | R-Type | Float Less Than (Double) |
| 0xA4001053 | FLT.H | FLT.H rd, rs1, rs2 | R-Type | Float Less Than (Half) |
| 0xA0001053 | FLT.S | FLT.S rd, rs1, rs2 | R-Type | Float Less Than (Single) |
| 0x00002007 | FLW | FLW rd, offset(rs1) | I-Type | Float Load Word |
| 0x02000043 | FMADD.D | FMADD.D rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Add (Double) |
| 0x04000043 | FMADD.H | FMADD.H rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Add (Half) |
| 0x00000043 | FMADD.S | FMADD.S rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Add (Single) |
| 0x2A001053 | FMAX.D | FMAX.D rd, rs1, rs2 | R-Type | Float Maximum (Double) |
| 0x2C001053 | FMAX.H | FMAX.H rd, rs1, rs2 | R-Type | Float Maximum (Half) |
| 0x28001053 | FMAX.S | FMAX.S rd, rs1, rs2 | R-Type | Float Maximum (Single) |
| 0x28003053 | FMAXM.S | FMAXM.S rd, rs1, rs2 | R-Type | Float Maximum (IEEE 754-2019) |
| 0x2A000053 | FMIN.D | FMIN.D rd, rs1, rs2 | R-Type | Float Minimum (Double) |
| 0x2C000053 | FMIN.H | FMIN.H rd, rs1, rs2 | R-Type | Float Minimum (Half) |
| 0x28000053 | FMIN.S | FMIN.S rd, rs1, rs2 | R-Type | Float Minimum (Single) |
| 0x28002053 | FMINM.S | FMINM.S rd, rs1, rs2 | R-Type | Float Minimum (IEEE 754-2019) |
| 0x02000047 | FMSUB.D | FMSUB.D rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Subtract (Double) |
| 0x04000047 | FMSUB.H | FMSUB.H rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Subtract (Half) |
| 0x00000047 | FMSUB.S | FMSUB.S rd, rs1, rs2, rs3 | R4-Type | Float Fused Multiply-Subtract (Single) |
| 0x12000053 | FMUL.D | FMUL.D rd, rs1, rs2 | R-Type | Float Multiply Double |
| 0x14000053 | FMUL.H | FMUL.H rd, rs1, rs2 | R-Type | Float Multiply (Half) |
| 0x10000053 | FMUL.S | FMUL.S rd, rs1, rs2 | R-Type | Float Multiply (Single) |
| 0xF2000053 | FMV.D.X | FMV.D.X rd, rs1 | I-Type (Float) | Move Integer to Double |
| 0xF0000053 | FMV.W.X | FMV.W.X rd, rs1 | I-Type (Float) | Move Integer to Float |
| 0xE2000053 | FMV.X.D | FMV.X.D rd, rs1 | I-Type (Float) | Move Double to Integer |
| 0xE0000053 | FMV.X.W | FMV.X.W rd, rs1 | I-Type (Float) | Move Float to Integer |
| 0x0200004F | FNMADD.D | FNMADD.D rd, rs1, rs2, rs3 | R4-Type | Float Negated Fused Multiply-Add (Double) |
| 0x0400004F | FNMADD.H | FNMADD.H rd, rs1, rs2, rs3 | R4-Type | Float Negated Fused Multiply-Add (Half) |
| 0x0000004F | FNMADD.S | FNMADD.S rd, rs1, rs2, rs3 | R4-Type | Float Negated Fused Multiply-Add (Single) |