#[repr(u16, align(4))]pub enum Rv64ZabhaInstruction<Hart>where
Hart: HartConfig,{
Show 38 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,
},
AmoswapD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoaddD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoxorD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoandD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmoorD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmominuD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmomaxuD {
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 RV64 Zabha instruction (Byte and Halfword Atomic Memory Operations)
Variants§
Amoswap
Amoadd
Amoxor
Amoand
Amoor
Amomin
Amomax
Amominu
Amomaxu
AmoswapD
AmoaddD
AmoxorD
AmoandD
AmoorD
AmominD
AmomaxD
AmominuD
AmomaxuD
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 Rv64ZabhaInstruction<Hart>
impl<Hart> Clone for Rv64ZabhaInstruction<Hart>
Source§fn clone(&self) -> Rv64ZabhaInstruction<Hart>
fn clone(&self) -> Rv64ZabhaInstruction<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 Rv64ZabhaInstruction<Hart>
Source§impl<Hart> Debug for Rv64ZabhaInstruction<Hart>
impl<Hart> Debug for Rv64ZabhaInstruction<Hart>
§impl<Reg, Hart> Display for Rv64ZabhaInstruction<Hart>
impl<Reg, Hart> Display for Rv64ZabhaInstruction<Hart>
impl<Hart> Eq for Rv64ZabhaInstruction<Hart>
§impl<Reg, Hart> Instruction for Rv64ZabhaInstruction<Hart>
impl<Reg, Hart> Instruction for Rv64ZabhaInstruction<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 Rv64ZabhaInstruction<Hart>
impl<Hart> PartialEq for Rv64ZabhaInstruction<Hart>
impl<Hart> StructuralPartialEq for Rv64ZabhaInstruction<Hart>
Auto Trait Implementations§
impl<Hart> Freeze for Rv64ZabhaInstruction<Hart>
impl<Hart> RefUnwindSafe for Rv64ZabhaInstruction<Hart>
impl<Hart> Send for Rv64ZabhaInstruction<Hart>
impl<Hart> Sync for Rv64ZabhaInstruction<Hart>
impl<Hart> Unpin for Rv64ZabhaInstruction<Hart>
impl<Hart> UnsafeUnpin for Rv64ZabhaInstruction<Hart>
impl<Hart> UnwindSafe for Rv64ZabhaInstruction<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