pub enum Rv64ZcbInstruction<Reg> {
CLbu {
rd: Reg,
rs1: Reg,
uimm: u8,
},
CLh {
rd: Reg,
rs1: Reg,
uimm: u8,
},
CLhu {
rd: Reg,
rs1: Reg,
uimm: u8,
},
CSb {
rs1: Reg,
rs2: Reg,
uimm: u8,
},
CSh {
rs1: Reg,
rs2: Reg,
uimm: u8,
},
CZextB {
rd: Reg,
},
CSextB {
rd: Reg,
},
CZextH {
rd: Reg,
},
CSextH {
rd: Reg,
},
CZextW {
rd: Reg,
},
CNot {
rd: Reg,
},
CMul {
rd: Reg,
rs2: Reg,
},
}Expand description
RISC-V RV64 Zcb compressed instruction set.
All register operands are prime-field (x8–x15) registers.
Variants§
CLbu
C.LBU rd’ = zero_extend(mem8[rs1’ + uimm]) uimm ∈ {0,1,2,3}
CLh
C.LH rd’ = sign_extend(mem16[rs1’ + uimm]) uimm ∈ {0,2}
CLhu
C.LHU rd’ = zero_extend(mem16[rs1’ + uimm]) uimm ∈ {0,2}
CSb
C.SB mem8[rs1’ + uimm] = rs2’ uimm ∈ {0,1,2,3}
CSh
C.SH mem16[rs1’ + uimm] = rs2’ uimm ∈ {0,2}
CZextB
C.ZEXT.B rd’ = rd’ & 0xff
Fields
§
rd: RegCSextB
C.SEXT.B rd’ = sext(rd’[7:0]) (requires Zbb)
Fields
§
rd: RegCZextH
C.ZEXT.H rd’ = rd’ & 0xffff (requires Zbb)
Fields
§
rd: RegCSextH
C.SEXT.H rd’ = sext(rd’[15:0]) (requires Zbb)
Fields
§
rd: RegCZextW
C.ZEXT.W rd’ = rd’ & 0xffff_ffff (requires Zba)
Fields
§
rd: RegCNot
C.NOT rd’ = ~rd’
Fields
§
rd: RegCMul
C.MUL rd’ = (rd’ * rs2’)[XLEN-1:0] (requires M or Zmmul)
Trait Implementations§
Source§impl<Reg: Clone> Clone for Rv64ZcbInstruction<Reg>
impl<Reg: Clone> Clone for Rv64ZcbInstruction<Reg>
Source§fn clone(&self) -> Rv64ZcbInstruction<Reg>
fn clone(&self) -> Rv64ZcbInstruction<Reg>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Reg: Debug> Debug for Rv64ZcbInstruction<Reg>
impl<Reg: Debug> Debug for Rv64ZcbInstruction<Reg>
Source§impl<Reg> Display for Rv64ZcbInstruction<Reg>where
Reg: Display,
impl<Reg> Display for Rv64ZcbInstruction<Reg>where
Reg: Display,
§impl<Reg> Instruction for Rv64ZcbInstruction<Reg>
impl<Reg> Instruction for Rv64ZcbInstruction<Reg>
Source§impl<Reg: PartialEq> PartialEq for Rv64ZcbInstruction<Reg>
impl<Reg: PartialEq> PartialEq for Rv64ZcbInstruction<Reg>
impl<Reg: Copy> Copy for Rv64ZcbInstruction<Reg>
impl<Reg: Eq> Eq for Rv64ZcbInstruction<Reg>
impl<Reg> StructuralPartialEq for Rv64ZcbInstruction<Reg>
Auto Trait Implementations§
impl<Reg> Freeze for Rv64ZcbInstruction<Reg>where
Reg: Freeze,
impl<Reg> RefUnwindSafe for Rv64ZcbInstruction<Reg>where
Reg: RefUnwindSafe,
impl<Reg> Send for Rv64ZcbInstruction<Reg>where
Reg: Send,
impl<Reg> Sync for Rv64ZcbInstruction<Reg>where
Reg: Sync,
impl<Reg> Unpin for Rv64ZcbInstruction<Reg>where
Reg: Unpin,
impl<Reg> UnsafeUnpin for Rv64ZcbInstruction<Reg>where
Reg: UnsafeUnpin,
impl<Reg> UnwindSafe for Rv64ZcbInstruction<Reg>where
Reg: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more