add=add addi=add immediate addiw=add immediate to 32-bit word addw=add 32-bit words amoadd.d=atomic memory operation, add (64 bits) amoadd.w=atomic memory operation, add (32 bits) amoand.d=atomic memory operation, bitwise AND (64 bits) amoand.w=atomic memory operation, bitwise AND (32 bits) amomax.d=atomic memory operation, signed integer maximum (64 bits) amomaxu.d=atomic memory operation, unsigned integer maximum (64 bits) amomaxu.w=atomic memory operation, unsigned integer maximum (32 bits) amomax.w=atomic memory operation, signed integer maximum (32 bits) amomin.d=atomic memory operation, signed integer minimum (64 bits) amominu.d=atomic memory operation, unsigned integer minimum (64 bits) amominu.w=atomic memory operation, unsigned integer minimum (32 bits) amomin.w=atomic memory operation, signed integer minimum (32 bits) amoor.d=atomic memory operation, bitwise OR (64 bits) amoor.w=atomic memory operation, bitwise OR (32 bits) amoswap.d=atomic memory operation, swap (64 bits) amoswap.w=atomic memory operation, swap (32 bits) amoxor.d=atomic memory operation, amoxor.w=atomic memory operation, and=bitwise and andi=bitwise and with immediate auipc=add upper immediate to PC beq=branch if equal beqz=branch if equal to zero bge=branch if greater than bgeu=branch if greater than, unsigned bgez=branch if greater than or equal to zero bgt=branch if greater than bgtu=branch if greater than, unsigned bgtz=branch if greater than zero ble=branch if less than or equal to bleu=branch if less than or equal to, unsigned blez=branch if less than or equal to zero blt=branch if less than bltu=branch if less than, unsigned bltz=branch if less than zero bne=branch if not equal bnez=branch if not equal to zero bnez=branch if not equal to zero c.add=add (compressed instruction) c.addi16sp=add signed immediate*16 to stack pointer (compressed instruction) c.addi4spn=add unsigned immediate*4 to stack pointer (compressed instruction) c.addi=add immediate (compressed instruction) c.addiw=add immediate to 32-bit word (compressed instruction) c.addw=add 32-bit words (compressed instruction) call=call far subroutine c.and=bitwise AND (compressed instruction) c.andi=bitwirse AND with immediate (compressed instruction) c.beqz=branch if equal to zero (compressed instruction) c.bnez=branch if not equal to zero (compressed instruction) c.ebreak=environment breakpoint (compressed instruction) c.fld=floating-point load, double precision (compressed instruction) c.fldsp=floating-point load, double precision, SP relative (compressed instruction) c.flw=floating-point load, single precision (compressed instruction) c.flwsp=floating-point load, single precision, SP relative (compressed instruction) c.fsd=floating-point store, double precision (compressed instruction) c.fsdsp=floating-point store, double precision, SP relative (compressed instruction) c.fsw=floating-point store, single precision (compressed instruction) c.fswsp=floating-point store, single precision, SP relative (compressed instruction) c.jal=jump and link (compressed instruction) c.jalr=jump and link, register relative (compressed instruction) c.j=jump (compressed instruction) c.jr=jump, register relative (compressed instruction) c.ld=load double word (64 bits) (compressed instruction) c.ldsp=load double word (64 bits), SP relative (compressed instruction) c.li=load immediate (compressed instruction) c.lui=load upper immediate (compressed instruction) c.lw=load word (32 bits) (compressed instruction) c.lwsp=load word (32 bits), SP relative (compressed instruction) c.mv=move (compressed instruction) c.or=bitwise OR (compressed instruction) c.sdsp=store double word (64 bits), SP relative (compressed instruction) c.sd=store double word (64 bits) (compressed instruction) c.slli=logical left shift by immediate (compressed instruction) c.srai=shift right arithmetically by immediate (compressed instruction) csrc=clear bits in CSR csrci=clear bits in CSR, immediate c.srli=shift right logically by immediate (compressed instruction) csrrc=atomic read and clear bit in CSR csrrci=atomic read and clear immediate bit in CSR csrr=read CSR csrrs=atomic read and set bit in CSR csrrsi=atomic read and set immediate bit in CSR csrrw=atomic read/write CSR csrrwi=atomic read/write CSR with immediate csrsi=set bits in CSR, immediate csrs=set bits in CSR csrwi=write CSR, immediate csrw=write CSR c.sub=subtract (compressed instruction) c.subw=subtract words (32 bits) (compressed instruction) c.swsp=store word (32 bits), SP relative (compressed instruction) c.sw=store word (32 bits) (compressed instruction) c.xor=exclusive OR (compressed instruction) div=signed division divu=unsigned division divuw=unsigned division of words (32 bits) divw=signed division of words (32 bits) ebreak=environment breakpoint ecall=environment call eret=environment return fadd.d=floating-point add, double precision fadd.s=floating-point add, single precision fclass.d=classify floating point number, double precision fclass.s=classify floating point number, single precision fcvt.d.l=convert to double from long (64 bits) fcvt.d.lu=convert to double from unsigned long (64 bits) fcvt.d.s=convert to double from single fcvt.d.w=convert to double from word (32 bits) fcvt.d.wu=convert to double from unsigned word (32 bits) fcvt.l.d=convert to long (64 bits) from double fcvt.l.s=convert to long (64 bits) from single fcvt.lu.d=convert to unsigned long (64 bits) from double fcvt.lu.s=convert to unsigned long (64 bits) from single fcvt.s.d=convert to single from double fcvt.s.l=convert to single from long (64 bits) fcvt.s.lu=convert to single from unsigned long (64 bits) fcvt.s.w=convert to single from word (32 bits) fcvt.s.wu=convert to single from unsigned word (32 bits) fcvt.w.d=convert to word (32 bits) from double fcvt.w.s=convert to word (32 bits) from single fcvt.wu.d=convert to unsigned word (32 bits) from double fcvt.wu.s=convert to unsigned word (32 bits) from single fdiv.d=floating-point division, double precision fdiv.s=floating-point division, single precision fence.i=instruction cache fence fence=memory and I/O fence feq.d=floating-point "equals", double precision feq.s=floating-point "equals", single precision fld=floating-point load double fle.d=floating-point "less or equal", double precision fle.s=floating-point "less or equal", single precision flt.d=floating-point "less than", double precision flt.s=floating-point "less than", double precision flw=floating-point load word fmadd.d=floating-point multiply-add, double precision fmadd.s=floating-point multiply-add, single precision fmax.d=floating-point maximum, double precision fmax.s=floating-point maximum, single precision fmin.d=floating-point minimum, double precision fmin.s=floating-point minimum, single precision fmsub.d=floating-point multiply-subtract, double precision fmsub.s=floating-point multiply-subtract, single precision fmul.d=floating-point multiply, double precision fmul.s=floating-point multiply, single precision fmv.d.x=move double to integer register fmv.s.x=move single to integer register fmv.x.d=move integer register to double fmv.x.s=move integer register to double fnmadd.d=floating-point negated multiply-add, double precision fnmadd.s=floating-point negated multiply-add, single precision fnmsub.d=floating-point negated multiply-subtract, double precision fnmsub.s=floating-point negated multiply-subtract, single precision frcsr=read fp control/status register frflags=read fp exception flags frrm=read fp rounding mode fscsr=swap fp control/status register fsd=floating-point store double fsflagsi=swap or write fp exception flags with immediate fsflags=swap fp exception flags fsgnj.d=floating-point sign-injection, double precision fsgnjn.d=floating-point negated sign-injection, double precision fsgnjn.s=floating-point negated sign-injection, single precision fsgnj.s=floating-point sign-injection, single precision fsgnjx.d=floating-point XOR sign-injection, double precision fsgnjx.s=floating-point XOR sign-injection, single precision fsqrt.d=floating-point square root, double precision fsqrt.s=floating-point square root, single precision fsrmi=swap fp rounding mode with immediate fsrm=swap fp rounding mode fsub.d=floating-point subtract, double precision fsub.s=floating-point subtract, single precision fsw=floating-point store word (single precision value) hrts=hypervisor redirect trap to supervisor jal=jump and link (call) jalr=jump and link (call); register-based j=jump jr=jump register la=load address lb=load byte lbu=load byte, unsigned ld=load double word (64 bits) lh=load half-word (16 bits) lhu=load half-word (16 bits), unsigned li=load immediate lr.d=load reserved (64 bits) lr=load reserved lr.w=load reserved (32 bits) lui=load upper immediate lw=load word (32 bits) lwu=load word (32 bits) unsigned mrth=machine redirect trap to hypervisor mrts=machine redirect trap to supervisor mulh=multiply, high half mulhsu=multiply signed*unsigned, high half mulhu=multiply unsigned, high half mul=multiply mulw=multiply word (32 bits) mv=copy neg=two's complement negw=two's complement word nop=no operation not=one's complement or=bitwise OR ori=bitwise OR with immediate rdcycleh=read cycle counter, high half rdcycle=read cycle counter rdinstreth=read "instructions retired" counter, high half rdinstret=read "instructions retired" counter rdtimeh=read real-time clock, high half rdtime=read real-time clock rem=remainder of division remu=remainder of unsigned division remuw=remainder of unsigned division (32 bits) remw=remainder of division (32 bits) ret=return from subroutine sb=store byte sc.d=store conditional (64 bits) sc=store conditional sc.w=store conditional (32 bits) sd=store double word (64 bits) seqz=set if equal to zero sext=two complement sextw=two complement word sfence.vma=supervisor-mode fence for virtual memory sfence.vm=supervisor-mode fence for virtual memory (Deprecated) sgtz=set if greater than zero sh=store half-word (16 bits) slli=shift left logically by immediate slliw=shift left logically by immediate (32 bits) sll=shift left logically sllw=shift left logically (32 bits) slti=set if less than immediate sltiu=set if less than immediate, unsigned slt=set if less than sltu=set if less than, unsigned sltz=set if less than zero snez=set if not equal to zero srai=shift right arithmetically by immediate sraiw=shift right arithmetically by immediate (32 bits) sra=shift right arithmetically sraw=shift right arithmetically (32 bits) srli=shift right logically by immediate srliw=shift right logically by immediate (32 bits) srl=shift right logically srlw=shift right logically (32 bits) sub=subtract subw=subtract word (32 bits) sw=store word (32 bits) tail=tail call far-away subroutine wfi=wait for interrupt xor=exclusive or xori=exclusive or with immediate