pub enum Rv32ZcaInstruction<Reg> {
Show 28 variants
CAddi4spn {
rd: Reg,
nzuimm: u16,
},
CLw {
rd: Reg,
rs1: Reg,
uimm: u8,
},
CSw {
rs1: Reg,
rs2: Reg,
uimm: u8,
},
CNop,
CAddi {
rd: Reg,
nzimm: i8,
},
CJal {
imm: i16,
},
CLi {
rd: Reg,
imm: i8,
},
CAddi16sp {
nzimm: i16,
},
CLui {
rd: Reg,
nzimm: i32,
},
CSrli {
rd: Reg,
shamt: u8,
},
CSrai {
rd: Reg,
shamt: u8,
},
CAndi {
rd: Reg,
imm: i8,
},
CSub {
rd: Reg,
rs2: Reg,
},
CXor {
rd: Reg,
rs2: Reg,
},
COr {
rd: Reg,
rs2: Reg,
},
CAnd {
rd: Reg,
rs2: Reg,
},
CJ {
imm: i16,
},
CBeqz {
rs1: Reg,
imm: i16,
},
CBnez {
rs1: Reg,
imm: i16,
},
CSlli {
rd: Reg,
shamt: u8,
},
CLwsp {
rd: Reg,
uimm: u8,
},
CJr {
rs1: Reg,
},
CMv {
rd: Reg,
rs2: Reg,
},
CEbreak,
CJalr {
rs1: Reg,
},
CAdd {
rd: Reg,
rs2: Reg,
},
CSwsp {
rs2: Reg,
uimm: u8,
},
CUnimp,
}Expand description
RISC-V RV32 Zca compressed instruction set
Variants§
CAddi4spn
C.ADDI4SPN rd’ = sp + nzuimm (nzuimm != 0)
CLw
C.LW rd’ = sext(mem32[rs1’ + uimm])
CSw
C.SW mem32[rs1’ + uimm] = rs2’
CNop
C.NOP (ADDI x0, x0, 0 with rd==x0 and nzimm==0)
CAddi
C.ADDI rd += nzimm (rd != x0)
CJal
C.JAL ra = pc+2; pc += imm
CLi
C.LI rd = sext(imm) (rd=x0 is a HINT)
CAddi16sp
C.ADDI16SP sp += nzimm (nzimm != 0)
CLui
C.LUI rd = sext(nzimm << 12) (rd != x0, rd != x2, nzimm != 0)
CSrli
C.SRLI rd’ >>= shamt (logical, 5-bit shamt; shamt=0 is a HINT)
CSrai
C.SRAI rd’ >>= shamt (arithmetic, 5-bit shamt; shamt=0 is a HINT)
CAndi
C.ANDI rd’ &= sext(imm)
CSub
C.SUB rd’ -= rs2’
CXor
C.XOR rd’ ^= rs2’
COr
C.OR rd’ |= rs2’
CAnd
C.AND rd’ &= rs2’
CJ
C.J pc += sext(imm)
CBeqz
C.BEQZ if rs1’ == 0: pc += sext(imm)
CBnez
C.BNEZ if rs1’ != 0: pc += sext(imm)
CSlli
C.SLLI rd <<= shamt (5-bit shamt; rd=x0 or shamt=0 is a HINT)
CLwsp
C.LWSP rd = sext(mem32[sp + uimm]) (rd != x0)
CJr
C.JR pc = rs1 (rs1 != x0)
Fields
rs1: RegCMv
C.MV rd = rs2 (rs2 != x0; rd=x0 is a HINT)
CEbreak
C.EBREAK
CJalr
C.JALR ra = pc+2; pc = rs1 (rs1 != x0)
Fields
rs1: RegCAdd
C.ADD rd += rs2 (rs2 != x0; rd=x0 is a HINT)
CSwsp
C.SWSP mem32[sp + uimm] = rs2
CUnimp
Trait Implementations§
Source§impl<Reg: Clone> Clone for Rv32ZcaInstruction<Reg>
impl<Reg: Clone> Clone for Rv32ZcaInstruction<Reg>
Source§fn clone(&self) -> Rv32ZcaInstruction<Reg>
fn clone(&self) -> Rv32ZcaInstruction<Reg>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more