#[repr(u16, align(4))]pub enum Rv64ZacasInstruction<Hart>where
Hart: HartConfig,{
Show 21 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,
},
AmocasW {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmocasD {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
aq: bool,
rl: bool,
},
AmocasQ {
rs1: Hart::Reg,
rs2: Hart::Reg,
rd: Hart::Reg,
rd_hi: Hart::Reg,
rs2_hi: Hart::Reg,
aq: bool,
rl: bool,
},
}Expand description
RISC-V RV64 Zacas instruction (Atomic Compare-and-Swap)
Variants§
Amoswap
Amoadd
Amoxor
Amoand
Amoor
Amomin
Amomax
Amominu
Amomaxu
AmoswapD
AmoaddD
AmoxorD
AmoandD
AmoorD
AmominD
AmomaxD
AmominuD
AmomaxuD
AmocasW
Compare-and-swap word
AmocasD
Compare-and-swap doubleword
AmocasQ
Compare-and-swap quadword, using register pairs (rd, rd_hi) and (rs2, rs2_hi) since
RV64 registers are only 64 bits wide.
Trait Implementations§
Source§impl<Hart> Clone for Rv64ZacasInstruction<Hart>
impl<Hart> Clone for Rv64ZacasInstruction<Hart>
Source§fn clone(&self) -> Rv64ZacasInstruction<Hart>
fn clone(&self) -> Rv64ZacasInstruction<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 Rv64ZacasInstruction<Hart>
Source§impl<Hart> Debug for Rv64ZacasInstruction<Hart>
impl<Hart> Debug for Rv64ZacasInstruction<Hart>
§impl<Reg, Hart> Display for Rv64ZacasInstruction<Hart>
impl<Reg, Hart> Display for Rv64ZacasInstruction<Hart>
impl<Hart> Eq for Rv64ZacasInstruction<Hart>
§impl<Reg, Hart> Instruction for Rv64ZacasInstruction<Hart>
impl<Reg, Hart> Instruction for Rv64ZacasInstruction<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 Rv64ZacasInstruction<Hart>
impl<Hart> PartialEq for Rv64ZacasInstruction<Hart>
impl<Hart> StructuralPartialEq for Rv64ZacasInstruction<Hart>
Auto Trait Implementations§
impl<Hart> Freeze for Rv64ZacasInstruction<Hart>
impl<Hart> RefUnwindSafe for Rv64ZacasInstruction<Hart>
impl<Hart> Send for Rv64ZacasInstruction<Hart>
impl<Hart> Sync for Rv64ZacasInstruction<Hart>
impl<Hart> Unpin for Rv64ZacasInstruction<Hart>
impl<Hart> UnsafeUnpin for Rv64ZacasInstruction<Hart>
impl<Hart> UnwindSafe for Rv64ZacasInstruction<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