#[repr(u16, align(4))]pub enum Rv32ZabhaInstruction<Hart>where
Hart: HartConfig,{
Show 29 variants
Amoswap {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amoadd {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amoxor {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amoand {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amoor {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amomin {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amomax {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amominu {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
Amomaxu {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoswapB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoswapH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoaddB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoaddH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoxorB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoxorH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoandB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoandH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoorB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoorH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominuB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominuH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxuB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxuH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmocasB {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmocasH {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
}Expand description
RISC-V RV32 Zabha instruction (Byte and Halfword Atomic Memory Operations)
Variants§
Amoswap
Amoadd
Amoxor
Amoand
Amoor
Amomin
Amomax
Amominu
Amomaxu
AmoswapB
AmoswapH
AmoaddB
AmoaddH
AmoxorB
AmoxorH
AmoandB
AmoandH
AmoorB
AmoorH
AmominB
AmominH
AmomaxB
AmomaxH
AmominuB
AmominuH
AmomaxuB
AmomaxuH
AmocasB
Compare-and-swap byte. Only present when Zacas is also implemented.
AmocasH
Compare-and-swap halfword. Only present when Zacas is also implemented.
Trait Implementations§
Source§impl<Hart> Clone for Rv32ZabhaInstruction<Hart>
impl<Hart> Clone for Rv32ZabhaInstruction<Hart>
Source§fn clone(&self) -> Rv32ZabhaInstruction<Hart>
fn clone(&self) -> Rv32ZabhaInstruction<Hart>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<Hart> Copy for Rv32ZabhaInstruction<Hart>
Source§impl<Hart> Debug for Rv32ZabhaInstruction<Hart>
impl<Hart> Debug for Rv32ZabhaInstruction<Hart>
§impl<Reg, Hart> Display for Rv32ZabhaInstruction<Hart>
impl<Reg, Hart> Display for Rv32ZabhaInstruction<Hart>
impl<Hart> Eq for Rv32ZabhaInstruction<Hart>
§impl<Reg, Hart> Instruction for Rv32ZabhaInstruction<Hart>
impl<Reg, Hart> Instruction for Rv32ZabhaInstruction<Hart>
§const IMPLEMENTED_EXTENSIONS: &'static [ImplementedExtension]
const IMPLEMENTED_EXTENSIONS: &'static [ImplementedExtension]
All implemented extensions, including this instruction itself, with their ISA extensions. Read more
§const OWN_ISA_EXTENSIONS: &'static [IsaExtension]
const OWN_ISA_EXTENSIONS: &'static [IsaExtension]
ISA extensions defined by this instruction enum itself, without inherited ones. Read more
§fn try_decode(instruction: u32) -> Option<Self>
fn try_decode(instruction: u32) -> Option<Self>
Try to decode a single valid instruction
Source§const ISA_STRING: &'static str = _
const ISA_STRING: &'static str = _
ISA string as used in the
Tag_RISCV_arch attribute of ELF files, for example,
rv64i2p1_m2p0_zmmul1p0. Read moreSource§fn implements_extension<E>() -> boolwhere
E: Instruction<Hart = Self::Hart>,
fn implements_extension<E>() -> boolwhere
E: Instruction<Hart = Self::Hart>,
Checks whether this instruction implements the given extension, see
Self::IMPLEMENTED_EXTENSIONS for detailsSource§impl<Hart> PartialEq for Rv32ZabhaInstruction<Hart>
impl<Hart> PartialEq for Rv32ZabhaInstruction<Hart>
impl<Hart> StructuralPartialEq for Rv32ZabhaInstruction<Hart>
Auto Trait Implementations§
impl<Hart> Freeze for Rv32ZabhaInstruction<Hart>
impl<Hart> RefUnwindSafe for Rv32ZabhaInstruction<Hart>
impl<Hart> Send for Rv32ZabhaInstruction<Hart>
impl<Hart> Sync for Rv32ZabhaInstruction<Hart>
impl<Hart> Unpin for Rv32ZabhaInstruction<Hart>
impl<Hart> UnsafeUnpin for Rv32ZabhaInstruction<Hart>
impl<Hart> UnwindSafe for Rv32ZabhaInstruction<Hart>
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