� amominu.d�atomically load a 64-bit data value from the address in rs1, place the value into register rd, apply unsigned min the loaded value and the original 64-bit value in rs2, then store the result back to the address in rs1. amominu.d rd,rs2,(rs1) fsgnjx.s|Produce a result that takes all bits except the sign bit from rs1.The result’s sign bit is XOR of sign bit of rs1 and rs2. fsgnjx.s rd,rs1,rs2 fsqrt.s%Perform single-precision square root. fsqrt.s rd,rs1 fnmadd.d1Perform single-precision fused multiply addition. fnmadd.d rd,rs1,rs2,rs3 c.fsd�Store a double-precision floating-point value in floating-point register rs2\' to memory.It computes an effective address by adding the zeroextended offset, scaled by 8, to the base address in register rs1\'. c.fsd rd\',uimm(rs1\') c.srai�Perform a arithmetic right shift of the value in register rd\' then writes the result to rd\'.The shift amount is encoded in the shamt field, where shamt[5] must be zero for RV32C. c.srai rd\',uimm srlw�Performs logical right shift on the low 32-bits value in register rs1 by the shift amount held in the lower 5 bits of register rs2 and produce 32-bit results and written to the destination register rd. srlw rd,rs1,rs2 c.andiCompute the bitwise AND of of the value in register rd\' and the sign-extended 6-bit immediate, then writes the result to rd\'. c.andi rd\',imm wfi��wait for interrupt.
Provides a hint to the implementation that the current hart can be stalled until an interrupt might need servicing.Execution of the WFI instruction can also be used to inform the hardware platform that suitable interrupts should preferentially be routed to this hart.WFI is available in all privileged modes, and optionally available to U-mode.This instruction may raise an illegal instruction exception when TW=1 in mstatus. wfi fnmsub.s1Perform single-precision fused multiply addition. fnmsub.s rd,rs1,rs2,rs3 lwucLoads a 32-bit value from memory and zero-extends this to 64 bits before storing it in register rd. lwu rd,offset(rs1) csrrs��atomic read and set bits in CSR.
Reads the value of the CSR, zero-extends the value to XLEN bits, and writes it to integer register rd.The initial value in integer register rs1 is treated as a bit mask that specifies bit positions to be set in the CSR.Any bit that is high in rs1 will cause the corresponding bit to be set in the CSR, if that CSR bit is writable.Other bits in the CSR are unaffected (though CSRs might have side effects when written). csrrs rd,offset,rs1 c.sd�Store a 64-bit value in register rs2\' to memory.It computes an effective address by adding the zero-extended offset, scaled by 8, to the base address in register rs1\'. c.sd rd\',uimm(rs1\') lbudLoads a 8-bit value from memory and zero-extends this to XLEN bits before storing it in register rd. lbu rd,offset(rs1) amomax.w�atomically load a 32-bit signed data value from the address in rs1, place the value into register rd, apply max operator the loaded value and the original 32-bit signed value in rs2, then store the result back to the address in rs1. amomax.w rd,rs2,(rs1) c.fld�Load a double-precision floating-point value from memory into floating-point register rd\'.It computes an effective address by adding the zero-extended offset, scaled by 8, to the base address in register rs1\'. c.fld rd\',uimm(rs1\') fcvt.s.l fcvt.s.l rd,rs1 fadd.d1Perform single-precision floating-point addition. fadd.d rd,rs1,rs2 fsgnjn.szProduce a result that takes all bits except the sign bit from rs1.The result’s sign bit is opposite of rs2’s sign bit. fsgnjn.s rd,rs1,rs2 csrrci�Clear CSR bit using an XLEN-bit value obtained by zero-extending a 5-bit unsigned immediate (uimm[4:0]) field encoded in the rs1 field. csrrci rd,offset,uimm amoadd.w�atomically load a 32-bit signed data value from the address in rs1, place the value into register rd, apply add the loaded value and the original 32-bit signed value in rs2, then store the result back to the address in rs1. amoadd.w rd,rs2,(rs1) fdiv.d1Perform single-precision floating-point division. fdiv.d rd,rs1,rs2 lui�load upper immediate.
Build 32-bit constants and uses the U-type format. LUI places the U-immediate value in the top 20 bits of the destination register rd, filling in the lowest 12 bits with zeros. lui rd,imm fcvt.l.s fcvt.l.s rd,rs1 c.addiw�Add the non-zero sign-extended 6-bit immediate to the value in register rd then produce 32-bit result, then sign-extends result to 64 bits. c.addiw rd,imm srai�Performs arithmetic right shift on the value in register rs1 by the shift amount held in the lower 5 bits of the immediateIn RV64, bit-25 is used to shamt[5]. srai rd,rs1,shamt fsqrt.d%Perform single-precision square root. fsqrt.d rd,rs1 fmadd.d1Perform single-precision fused multiply addition. fmadd.d rd,rs1,rs2,rs3
sfence.vma��Guarantees that any previous stores already visible to the current RISC-V hart are ordered before all subsequent implicit references from that hart to the memory-management data structures.The SFENCE.VMA is used to flush any local hardware caches related to address translation.It is specified as a fence rather than a TLB flush to provide cleaner semantics with respect to which instructions are affected by the flush operation and to support a wider variety of dynamic caching structures and memory-management schemes.SFENCE.VMA is also used by higher privilege levels to synchronize page table writes and the address translation hardware. sfence.vma rs1,rs2 amoadd.d�atomically load a 64-bit data value from the address in rs1, place the value into register rd, apply add the loaded value and the original 64-bit value in rs2, then store the result back to the address in rs1. amoadd.d rd,rs2,(rs1) fcvt.s.lu fcvt.s.lu rd,rs1
c.addi16sp�Add the non-zero sign-extended 6-bit immediate to the value in the stack pointer (sp=x2), where the immediate is scaled to represent multiples of 16 in the range (-512,496). c.addi16sp imm c.ld�Load a 64-bit value from memory into register rd\'.It computes an effective address by adding the zero-extended offset, scaled by 8, to the base address in register rs1\'. c.ld rd\',uimm(rs1\') fcvt.l.d fcvt.l.d rd,rs1 fmv.x.d fmv.x.d rd,rs1 sc.w�write a word in rs2 to the address in rs1, provided a valid reservation still exists on that address.SC writes zero to rd on success or a nonzero code on failure. sc.w rd,rs1,rs2 fmv.x.w�Move the single-precision value in floating-point register rs1 represented in IEEE 754-2008 encoding to the lower 32 bits of integer register rd. fmv.x.w rd,rs1 fmul.d7Perform single-precision floating-point multiplication. fmul.d rd,rs1,rs2 addiw�cAdds the sign-extended 12-bit immediate to register rs1 and produces the proper sign-extension of a 32-bit result in rd.Overflows are ignored and the result is the low 32 bits of the result sign-extended to 64 bits.Note, ADDIW rd, rs1, 0 writes the sign-extension of the lower 32 bits of register rs1 into register rd (assembler pseudoinstruction SEXT.W). addiw rd,rs1,imm c.lwsp�Load a 32-bit value from memory into register rd. It computes an effective address by adding the zero-extended offset, scaled by 4, to the stack pointer, x2. c.lwsp rd,uimm(x2) fsgnj.snProduce a result that takes all bits except the sign bit from rs1.The result’s sign bit is rs2’s sign bit. fsgnj.s rd,rs1,rs2 c.fldsp�Load a double-precision floating-point value from memory into floating-point register rd.It computes its effective address by adding the zero-extended offset, scaled by 8, to the stack pointer, x2. c.fldsp rd,uimm(x2) fcvt.d.lu fcvt.d.lu rd,rs1 slli�Performs logical left shift on the value in register rs1 by the shift amount held in the lower 5 bits of the immediateIn RV64, bit-25 is used to shamt[5]. slli rd,rs1,shamt ebreak�Used by debuggers to cause control to be transferred back to a debugging environment.It generates a breakpoint exception and performs no other operation. ebreak c.flw�Load a single-precision floating-point value from memory into floating-point register rd\'.It computes an effective address by adding the zero-extended offset, scaled by 4, to the base address in register rs1\'. c.flw rd\',uimm(rs1\') mretKReturn from traps in M-mode, and MRET copies MPIE into MIE, then sets MPIE. mret fcvt.s.wuConverts a 32-bit signed integer, in integer register rs1 into a floating-point number in floating-point register rd. fcvt.s.w rd,rs1 sb@Store 8-bit, values from the low bits of register rs2 to memory. sb rs2,offset(rs1) fcvt.s.djConverts double floating-point register in rs1 into a floating-point number in floating-point register rd. fcvt.s.d rd,rs1 csrrsi�Set CSR bit using an XLEN-bit value obtained by zero-extending a 5-bit unsigned immediate (uimm[4:0]) field encoded in the rs1 field. csrrsi rd,offset,uimm fnmsub.d1Perform single-precision fused multiply addition. fnmsub.d rd,rs1,rs2,rs3 ecall�Make a request to the supporting execution environment.When executed in U-mode, S-mode, or M-mode, it generates an environment-call-from-U-mode exception, environment-call-from-S-mode exception, or environment-call-from-M-mode exception, respectively, and performs no other operation. ecall fcvt.d.wu�Converts a 32-bit unsigned integer, in integer register rs1 into a double-precision floating-point number in floating-point register rd. fcvt.d.wu rd,rs1 fclass.s�sExamines the value in floating-point register rs1 and writes to integer register rd a 10-bit mask that indicates the class of the floating-point number.The format of the mask is described in [classify table]_.The corresponding bit in rd will be set if the property is true and clear otherwise.All other bits in rd are cleared. Note that exactly one bit in rd will be set. fclass.s rd,rs1 sretKReturn from traps in S-mode, and SRET copies SPIE into SIE, then sets SPIE. sret swAStore 32-bit, values from the low bits of register rs2 to memory. sw rs2,offset(rs1) csrrwi�Update the CSR using an XLEN-bit value obtained by zero-extending a 5-bit unsigned immediate (uimm[4:0]) field encoded in the rs1 field. csrrwi rd,offset,uimm c.xorkCompute the bitwise XOR of the values in registers rd\' and rs2\', then writes the result to register rd\'. c.xor rd\',rs2\'