Enum rvsim::Op[][src]

pub enum Op {
    Lui {
        rd: usize,
        u_imm: i32,
    },
    Auipc {
        rd: usize,
        u_imm: i32,
    },
    Jal {
        rd: usize,
        j_imm: i32,
    },
    Jalr {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Beq {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Bne {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Blt {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Bge {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Bltu {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Bgeu {
        rs1: usize,
        rs2: usize,
        b_imm: i32,
    },
    Lb {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Lh {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Lw {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Lbu {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Lhu {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Sb {
        rs1: usize,
        rs2: usize,
        s_imm: i32,
    },
    Sh {
        rs1: usize,
        rs2: usize,
        s_imm: i32,
    },
    Sw {
        rs1: usize,
        rs2: usize,
        s_imm: i32,
    },
    Addi {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Slti {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Sltiu {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Xori {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Ori {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Andi {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Slli {
        rd: usize,
        rs1: usize,
        shamt: u32,
    },
    Srli {
        rd: usize,
        rs1: usize,
        shamt: u32,
    },
    Srai {
        rd: usize,
        rs1: usize,
        shamt: u32,
    },
    Add {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Sll {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Slt {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Sltu {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Xor {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Srl {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Or {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    And {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Sub {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Sra {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Fence {
        pred: u32,
        succ: u32,
    },
    FenceI,
    Ecall,
    Ebreak,
    Csrrw {
        rd: usize,
        rs1: usize,
        csr: u32,
    },
    Csrrs {
        rd: usize,
        rs1: usize,
        csr: u32,
    },
    Csrrc {
        rd: usize,
        rs1: usize,
        csr: u32,
    },
    Csrrwi {
        rd: usize,
        zimm: u32,
        csr: u32,
    },
    Csrrsi {
        rd: usize,
        zimm: u32,
        csr: u32,
    },
    Csrrci {
        rd: usize,
        zimm: u32,
        csr: u32,
    },
    Mul {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Mulh {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Mulhsu {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Mulhu {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Div {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Divu {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Rem {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    Remu {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    LrW {
        rd: usize,
        rs1: usize,
        aq: bool,
        rl: bool,
    },
    ScW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmoswapW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmoaddW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmoxorW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmoandW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmoorW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmominW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmomaxW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmominuW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    AmomaxuW {
        rd: usize,
        rs1: usize,
        rs2: usize,
        aq: bool,
        rl: bool,
    },
    Flw {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Fsw {
        rs1: usize,
        rs2: usize,
        s_imm: i32,
    },
    FmaddS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FmsubS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FnmsubS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FnmaddS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FaddS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FsubS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FmulS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FdivS {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FsqrtS {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FsgnjS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FsgnjnS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FsgnjxS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FminS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FmaxS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FcvtWS {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtWuS {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FmvXW {
        rd: usize,
        rs1: usize,
    },
    FeqS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FltS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FleS {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FclassS {
        rd: usize,
        rs1: usize,
    },
    FcvtSW {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtSWu {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FmvWX {
        rd: usize,
        rs1: usize,
    },
    Fld {
        rd: usize,
        rs1: usize,
        i_imm: i32,
    },
    Fsd {
        rs1: usize,
        rs2: usize,
        s_imm: i32,
    },
    FmaddD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FmsubD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FnmsubD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FnmaddD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rs3: usize,
        rm: u32,
    },
    FaddD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FsubD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FmulD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FdivD {
        rd: usize,
        rs1: usize,
        rs2: usize,
        rm: u32,
    },
    FsqrtD {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FsgnjD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FsgnjnD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FsgnjxD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FminD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FmaxD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FcvtWD {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtWuD {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FeqD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FltD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FleD {
        rd: usize,
        rs1: usize,
        rs2: usize,
    },
    FclassD {
        rd: usize,
        rs1: usize,
    },
    FcvtDW {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtDWu {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtSD {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
    FcvtDS {
        rd: usize,
        rs1: usize,
        rm: u32,
    },
}

A large enum holding a parsed instruction and its arguments.

Variants

Lui

Fields of Lui

rd: usizeu_imm: i32
Auipc

Fields of Auipc

rd: usizeu_imm: i32
Jal

Fields of Jal

rd: usizej_imm: i32
Jalr

Fields of Jalr

rd: usizers1: usizei_imm: i32
Beq

Fields of Beq

rs1: usizers2: usizeb_imm: i32
Bne

Fields of Bne

rs1: usizers2: usizeb_imm: i32
Blt

Fields of Blt

rs1: usizers2: usizeb_imm: i32
Bge

Fields of Bge

rs1: usizers2: usizeb_imm: i32
Bltu

Fields of Bltu

rs1: usizers2: usizeb_imm: i32
Bgeu

Fields of Bgeu

rs1: usizers2: usizeb_imm: i32
Lb

Fields of Lb

rd: usizers1: usizei_imm: i32
Lh

Fields of Lh

rd: usizers1: usizei_imm: i32
Lw

Fields of Lw

rd: usizers1: usizei_imm: i32
Lbu

Fields of Lbu

rd: usizers1: usizei_imm: i32
Lhu

Fields of Lhu

rd: usizers1: usizei_imm: i32
Sb

Fields of Sb

rs1: usizers2: usizes_imm: i32
Sh

Fields of Sh

rs1: usizers2: usizes_imm: i32
Sw

Fields of Sw

rs1: usizers2: usizes_imm: i32
Addi

Fields of Addi

rd: usizers1: usizei_imm: i32
Slti

Fields of Slti

rd: usizers1: usizei_imm: i32
Sltiu

Fields of Sltiu

rd: usizers1: usizei_imm: i32
Xori

Fields of Xori

rd: usizers1: usizei_imm: i32
Ori

Fields of Ori

rd: usizers1: usizei_imm: i32
Andi

Fields of Andi

rd: usizers1: usizei_imm: i32
Slli

Fields of Slli

rd: usizers1: usizeshamt: u32
Srli

Fields of Srli

rd: usizers1: usizeshamt: u32
Srai

Fields of Srai

rd: usizers1: usizeshamt: u32
Add

Fields of Add

rd: usizers1: usizers2: usize
Sll

Fields of Sll

rd: usizers1: usizers2: usize
Slt

Fields of Slt

rd: usizers1: usizers2: usize
Sltu

Fields of Sltu

rd: usizers1: usizers2: usize
Xor

Fields of Xor

rd: usizers1: usizers2: usize
Srl

Fields of Srl

rd: usizers1: usizers2: usize
Or

Fields of Or

rd: usizers1: usizers2: usize
And

Fields of And

rd: usizers1: usizers2: usize
Sub

Fields of Sub

rd: usizers1: usizers2: usize
Sra

Fields of Sra

rd: usizers1: usizers2: usize
Fence

Fields of Fence

pred: u32succ: u32
FenceI
Ecall
Ebreak
Csrrw

Fields of Csrrw

rd: usizers1: usizecsr: u32
Csrrs

Fields of Csrrs

rd: usizers1: usizecsr: u32
Csrrc

Fields of Csrrc

rd: usizers1: usizecsr: u32
Csrrwi

Fields of Csrrwi

rd: usizezimm: u32csr: u32
Csrrsi

Fields of Csrrsi

rd: usizezimm: u32csr: u32
Csrrci

Fields of Csrrci

rd: usizezimm: u32csr: u32
Mul

Fields of Mul

rd: usizers1: usizers2: usize
Mulh

Fields of Mulh

rd: usizers1: usizers2: usize
Mulhsu

Fields of Mulhsu

rd: usizers1: usizers2: usize
Mulhu

Fields of Mulhu

rd: usizers1: usizers2: usize
Div

Fields of Div

rd: usizers1: usizers2: usize
Divu

Fields of Divu

rd: usizers1: usizers2: usize
Rem

Fields of Rem

rd: usizers1: usizers2: usize
Remu

Fields of Remu

rd: usizers1: usizers2: usize
LrW

Fields of LrW

rd: usizers1: usizeaq: boolrl: bool
ScW

Fields of ScW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmoswapW

Fields of AmoswapW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmoaddW

Fields of AmoaddW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmoxorW

Fields of AmoxorW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmoandW

Fields of AmoandW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmoorW

Fields of AmoorW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmominW

Fields of AmominW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmomaxW

Fields of AmomaxW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmominuW

Fields of AmominuW

rd: usizers1: usizers2: usizeaq: boolrl: bool
AmomaxuW

Fields of AmomaxuW

rd: usizers1: usizers2: usizeaq: boolrl: bool
Flw

Fields of Flw

rd: usizers1: usizei_imm: i32
Fsw

Fields of Fsw

rs1: usizers2: usizes_imm: i32
FmaddS

Fields of FmaddS

rd: usizers1: usizers2: usizers3: usizerm: u32
FmsubS

Fields of FmsubS

rd: usizers1: usizers2: usizers3: usizerm: u32
FnmsubS

Fields of FnmsubS

rd: usizers1: usizers2: usizers3: usizerm: u32
FnmaddS

Fields of FnmaddS

rd: usizers1: usizers2: usizers3: usizerm: u32
FaddS

Fields of FaddS

rd: usizers1: usizers2: usizerm: u32
FsubS

Fields of FsubS

rd: usizers1: usizers2: usizerm: u32
FmulS

Fields of FmulS

rd: usizers1: usizers2: usizerm: u32
FdivS

Fields of FdivS

rd: usizers1: usizers2: usizerm: u32
FsqrtS

Fields of FsqrtS

rd: usizers1: usizerm: u32
FsgnjS

Fields of FsgnjS

rd: usizers1: usizers2: usize
FsgnjnS

Fields of FsgnjnS

rd: usizers1: usizers2: usize
FsgnjxS

Fields of FsgnjxS

rd: usizers1: usizers2: usize
FminS

Fields of FminS

rd: usizers1: usizers2: usize
FmaxS

Fields of FmaxS

rd: usizers1: usizers2: usize
FcvtWS

Fields of FcvtWS

rd: usizers1: usizerm: u32
FcvtWuS

Fields of FcvtWuS

rd: usizers1: usizerm: u32
FmvXW

Fields of FmvXW

rd: usizers1: usize
FeqS

Fields of FeqS

rd: usizers1: usizers2: usize
FltS

Fields of FltS

rd: usizers1: usizers2: usize
FleS

Fields of FleS

rd: usizers1: usizers2: usize
FclassS

Fields of FclassS

rd: usizers1: usize
FcvtSW

Fields of FcvtSW

rd: usizers1: usizerm: u32
FcvtSWu

Fields of FcvtSWu

rd: usizers1: usizerm: u32
FmvWX

Fields of FmvWX

rd: usizers1: usize
Fld

Fields of Fld

rd: usizers1: usizei_imm: i32
Fsd

Fields of Fsd

rs1: usizers2: usizes_imm: i32
FmaddD

Fields of FmaddD

rd: usizers1: usizers2: usizers3: usizerm: u32
FmsubD

Fields of FmsubD

rd: usizers1: usizers2: usizers3: usizerm: u32
FnmsubD

Fields of FnmsubD

rd: usizers1: usizers2: usizers3: usizerm: u32
FnmaddD

Fields of FnmaddD

rd: usizers1: usizers2: usizers3: usizerm: u32
FaddD

Fields of FaddD

rd: usizers1: usizers2: usizerm: u32
FsubD

Fields of FsubD

rd: usizers1: usizers2: usizerm: u32
FmulD

Fields of FmulD

rd: usizers1: usizers2: usizerm: u32
FdivD

Fields of FdivD

rd: usizers1: usizers2: usizerm: u32
FsqrtD

Fields of FsqrtD

rd: usizers1: usizerm: u32
FsgnjD

Fields of FsgnjD

rd: usizers1: usizers2: usize
FsgnjnD

Fields of FsgnjnD

rd: usizers1: usizers2: usize
FsgnjxD

Fields of FsgnjxD

rd: usizers1: usizers2: usize
FminD

Fields of FminD

rd: usizers1: usizers2: usize
FmaxD

Fields of FmaxD

rd: usizers1: usizers2: usize
FcvtWD

Fields of FcvtWD

rd: usizers1: usizerm: u32
FcvtWuD

Fields of FcvtWuD

rd: usizers1: usizerm: u32
FeqD

Fields of FeqD

rd: usizers1: usizers2: usize
FltD

Fields of FltD

rd: usizers1: usizers2: usize
FleD

Fields of FleD

rd: usizers1: usizers2: usize
FclassD

Fields of FclassD

rd: usizers1: usize
FcvtDW

Fields of FcvtDW

rd: usizers1: usizerm: u32
FcvtDWu

Fields of FcvtDWu

rd: usizers1: usizerm: u32
FcvtSD

Fields of FcvtSD

rd: usizers1: usizerm: u32
FcvtDS

Fields of FcvtDS

rd: usizers1: usizerm: u32

Implementations

impl Op[src]

pub fn parse(instr: u32) -> Option<Op>[src]

Parse an instruction. Returns None on failure.

pub fn parse_c(instr: u16) -> Option<Op>[src]

Parse a rv32c instruction. Returns None on failure.

Trait Implementations

impl Clone for Op[src]

impl Copy for Op[src]

impl Debug for Op[src]

impl Eq for Op[src]

impl PartialEq<Op> for Op[src]

impl StructuralEq for Op[src]

impl StructuralPartialEq for Op[src]

Auto Trait Implementations

impl RefUnwindSafe for Op

impl Send for Op

impl Sync for Op

impl Unpin for Op

impl UnwindSafe for Op

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.