#[non_exhaustive]pub enum CleverOpcode {
Show 248 variants
Und0,
Add {
lock: bool,
flags: bool,
},
Sub {
lock: bool,
flags: bool,
},
And {
lock: bool,
flags: bool,
},
Or {
lock: bool,
flags: bool,
},
Xor {
lock: bool,
flags: bool,
},
Mul {
ss: u16,
flags: bool,
},
Div {
ss: u16,
wide: bool,
flags: bool,
},
Mov,
Lea,
MovRD {
r: CleverRegister,
},
MovRS {
r: CleverRegister,
},
LeaRD {
r: CleverRegister,
},
Nop10 {
any: u16,
},
Nop11 {
any: u16,
},
Nop12 {
any: u16,
},
Nop13 {
any: u16,
},
Push,
Pop,
PushR {
r: CleverRegister,
},
PopR {
r: CleverRegister,
},
Stogpr,
Stoar,
Rstogpr,
Rstoar,
Pushgpr,
Pushar,
Popgpr,
Popar,
Movsx {
flags: bool,
},
Bswap {
flags: bool,
},
Movsif {
flags: bool,
},
Movxf {
ss: u16,
int: bool,
flags: bool,
},
Movfsi {
flags: bool,
},
Movfx {
ss: u16,
int: bool,
flags: bool,
},
Cvtf {
flags: bool,
},
Repbi {
cc: ConditionCode,
},
Repbc,
Bcpy {
ss: u16,
},
Bsto {
ss: u16,
},
Bsca {
ss: u16,
},
Bcmp {
ss: u16,
},
Btst {
ss: u16,
},
Lsh {
l: bool,
f: bool,
},
Rsh {
l: bool,
f: bool,
},
Arsh {
l: bool,
f: bool,
},
Lshc {
l: bool,
f: bool,
},
Rshc {
l: bool,
f: bool,
},
Lrot {
l: bool,
f: bool,
},
Rrot {
l: bool,
f: bool,
},
LshR {
r: CleverRegister,
},
RshR {
r: CleverRegister,
},
ArshR {
r: CleverRegister,
},
LshcR {
r: CleverRegister,
},
RshcR {
r: CleverRegister,
},
LrotR {
r: CleverRegister,
},
RrotR {
r: CleverRegister,
},
Imul {
ss: u16,
flags: bool,
},
AddRD {
r: CleverRegister,
},
SubRD {
r: CleverRegister,
},
AndRD {
r: CleverRegister,
},
OrRD {
r: CleverRegister,
},
XorRD {
r: CleverRegister,
},
BNot {
l: bool,
f: bool,
},
Neg {
l: bool,
f: bool,
},
Idiv {
ss: u16,
wide: bool,
flags: bool,
},
AddRS {
r: CleverRegister,
},
SubRS {
r: CleverRegister,
},
AndRS {
r: CleverRegister,
},
OrRS {
r: CleverRegister,
},
XorRS {
r: CleverRegister,
},
BNotR {
r: CleverRegister,
},
NegR {
r: CleverRegister,
},
Cmp,
Test,
CmpR {
r: CleverRegister,
},
TestR {
r: CleverRegister,
},
Round {
f: bool,
},
Ceil {
f: bool,
},
Floor {
f: bool,
},
FAbs {
f: bool,
},
FNeg {
f: bool,
},
FInv {
f: bool,
},
FAdd {
f: bool,
},
FSub {
f: bool,
},
FMul {
f: bool,
},
FDiv {
f: bool,
},
FRem {
f: bool,
},
FFma {
f: bool,
},
FCmpz,
FCmp,
Exp {
f: bool,
},
Ln {
f: bool,
},
Lg {
f: bool,
},
Sin {
f: bool,
},
Cos {
f: bool,
},
Tan {
f: bool,
},
Asin {
f: bool,
},
Acos {
f: bool,
},
Atan {
f: bool,
},
Exp2 {
f: bool,
},
Log10 {
f: bool,
},
Lnp1 {
f: bool,
},
Expm1 {
f: bool,
},
Sqrt {
f: bool,
},
FRaiseExcept,
FTriggerExcept,
Xchg,
Cmpxchg,
Wcmpxchg,
Fence,
RPoll {
r: CleverRegister,
},
Vec,
Vmov,
VShuffle,
CBP0A {
w: i8,
},
CBC0A {
w: i8,
},
CBV0A {
w: i8,
},
CBZ0A {
w: i8,
},
CBL0A {
w: i8,
},
CBLE0A {
w: i8,
},
CBBE0A {
w: i8,
},
CBM0A {
w: i8,
},
CBPS0A {
w: i8,
},
CBA0A {
w: i8,
},
CBG0A {
w: i8,
},
CBGE0A {
w: i8,
},
CBNZ0A {
w: i8,
},
CBNV0A {
w: i8,
},
CBNC0A {
w: i8,
},
CBNP0A {
w: i8,
},
CBP0R {
w: i8,
},
CBC0R {
w: i8,
},
CBV0R {
w: i8,
},
CBZ0R {
w: i8,
},
CBL0R {
w: i8,
},
CBLE0R {
w: i8,
},
CBBE0R {
w: i8,
},
CBM0R {
w: i8,
},
CBPS0R {
w: i8,
},
CBA0R {
w: i8,
},
CBG0R {
w: i8,
},
CBGE0R {
w: i8,
},
CBNZ0R {
w: i8,
},
CBNV0R {
w: i8,
},
CBNC0R {
w: i8,
},
CBNP0R {
w: i8,
},
CBP1A {
w: i8,
},
CBC1A {
w: i8,
},
CBV1A {
w: i8,
},
CBZ1A {
w: i8,
},
CBL1A {
w: i8,
},
CBLE1A {
w: i8,
},
CBBE1A {
w: i8,
},
CBM1A {
w: i8,
},
CBPS1A {
w: i8,
},
CBA1A {
w: i8,
},
CBG1A {
w: i8,
},
CBGE1A {
w: i8,
},
CBNZ1A {
w: i8,
},
CBNV1A {
w: i8,
},
CBNC1A {
w: i8,
},
CBNP1A {
w: i8,
},
CBP1R {
w: i8,
},
CBC1R {
w: i8,
},
CBV1R {
w: i8,
},
CBZ1R {
w: i8,
},
CBL1R {
w: i8,
},
CBLE1R {
w: i8,
},
CBBE1R {
w: i8,
},
CBM1R {
w: i8,
},
CBPS1R {
w: i8,
},
CBA1R {
w: i8,
},
CBG1R {
w: i8,
},
CBGE1R {
w: i8,
},
CBNZ1R {
w: i8,
},
CBNV1R {
w: i8,
},
CBNC1R {
w: i8,
},
CBNP1R {
w: i8,
},
CBP2A {
w: i8,
},
CBC2A {
w: i8,
},
CBV2A {
w: i8,
},
CBZ2A {
w: i8,
},
CBL2A {
w: i8,
},
CBLE2A {
w: i8,
},
CBBE2A {
w: i8,
},
CBM2A {
w: i8,
},
CBPS2A {
w: i8,
},
CBA2A {
w: i8,
},
CBG2A {
w: i8,
},
CBGE2A {
w: i8,
},
CBNZ2A {
w: i8,
},
CBNV2A {
w: i8,
},
CBNC2A {
w: i8,
},
CBNP2A {
w: i8,
},
CBP2R {
w: i8,
},
CBC2R {
w: i8,
},
CBV2R {
w: i8,
},
CBZ2R {
w: i8,
},
CBL2R {
w: i8,
},
CBLE2R {
w: i8,
},
CBBE2R {
w: i8,
},
CBM2R {
w: i8,
},
CBPS2R {
w: i8,
},
CBA2R {
w: i8,
},
CBG2R {
w: i8,
},
CBGE2R {
w: i8,
},
CBNZ2R {
w: i8,
},
CBNV2R {
w: i8,
},
CBNC2R {
w: i8,
},
CBNP2R {
w: i8,
},
JmpA {
ss: u16,
},
CallA {
ss: u16,
},
FcallA {
ss: u16,
},
Ret,
Scall,
Int {
i: u16,
},
IjmpA {
r: CleverRegister,
},
IcallA {
r: CleverRegister,
},
IfcallA,
JmpSM {
ss: u16,
},
CallSM {
v: bool,
ss: u16,
},
RetRSM,
JmpR {
ss: u16,
},
CallR {
ss: u16,
},
FcallR {
ss: u16,
},
IjmpR {
r: CleverRegister,
},
IcallR {
r: CleverRegister,
},
IfcallR,
JmpSMR {
ss: u16,
},
CallSMR {
ss: u16,
v: bool,
},
Halt,
Pcfl,
FlAll,
Dflush,
Iflush,
In {
ss: u16,
},
Out {
ss: u16,
},
StoRegF,
RstRegF,
Scret,
Iret,
Hcall,
Hret,
Hresume,
VMCreate,
VMDestroy,
Und255,
}Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
Und0
Add
Sub
And
Or
Xor
Mul
Div
Mov
Lea
MovRD
Fields
MovRS
Fields
LeaRD
Fields
Nop10
Nop11
Nop12
Nop13
Push
Pop
PushR
Fields
PopR
Fields
Stogpr
Stoar
Rstogpr
Rstoar
Pushgpr
Pushar
Popgpr
Popar
Movsx
Bswap
Movsif
Movxf
Movfsi
Movfx
Cvtf
Repbi
Fields
§
cc: ConditionCodeRepbc
Bcpy
Bsto
Bsca
Bcmp
Btst
Lsh
Rsh
Arsh
Lshc
Rshc
Lrot
Rrot
LshR
Fields
RshR
Fields
ArshR
Fields
LshcR
Fields
RshcR
Fields
LrotR
Fields
RrotR
Fields
Imul
AddRD
Fields
SubRD
Fields
AndRD
Fields
OrRD
Fields
XorRD
Fields
BNot
Neg
Idiv
AddRS
Fields
SubRS
Fields
AndRS
Fields
OrRS
Fields
XorRS
Fields
BNotR
Fields
NegR
Fields
Cmp
Test
CmpR
Fields
TestR
Fields
Round
Ceil
Floor
FAbs
FNeg
FInv
FAdd
FSub
FMul
FDiv
FRem
FFma
FCmpz
FCmp
Exp
Ln
Lg
Sin
Cos
Tan
Asin
Acos
Atan
Exp2
Log10
Lnp1
Expm1
Sqrt
FRaiseExcept
FTriggerExcept
Xchg
Cmpxchg
Wcmpxchg
Fence
RPoll
Fields
Vec
Vmov
VShuffle
CBP0A
CBC0A
CBV0A
CBZ0A
CBL0A
CBLE0A
CBBE0A
CBM0A
CBPS0A
CBA0A
CBG0A
CBGE0A
CBNZ0A
CBNV0A
CBNC0A
CBNP0A
CBP0R
CBC0R
CBV0R
CBZ0R
CBL0R
CBLE0R
CBBE0R
CBM0R
CBPS0R
CBA0R
CBG0R
CBGE0R
CBNZ0R
CBNV0R
CBNC0R
CBNP0R
CBP1A
CBC1A
CBV1A
CBZ1A
CBL1A
CBLE1A
CBBE1A
CBM1A
CBPS1A
CBA1A
CBG1A
CBGE1A
CBNZ1A
CBNV1A
CBNC1A
CBNP1A
CBP1R
CBC1R
CBV1R
CBZ1R
CBL1R
CBLE1R
CBBE1R
CBM1R
CBPS1R
CBA1R
CBG1R
CBGE1R
CBNZ1R
CBNV1R
CBNC1R
CBNP1R
CBP2A
CBC2A
CBV2A
CBZ2A
CBL2A
CBLE2A
CBBE2A
CBM2A
CBPS2A
CBA2A
CBG2A
CBGE2A
CBNZ2A
CBNV2A
CBNC2A
CBNP2A
CBP2R
CBC2R
CBV2R
CBZ2R
CBL2R
CBLE2R
CBBE2R
CBM2R
CBPS2R
CBA2R
CBG2R
CBGE2R
CBNZ2R
CBNV2R
CBNC2R
CBNP2R
JmpA
CallA
FcallA
Ret
Scall
Int
IjmpA
Fields
IcallA
Fields
IfcallA
JmpSM
CallSM
RetRSM
JmpR
CallR
FcallR
IjmpR
Fields
IcallR
Fields
IfcallR
JmpSMR
CallSMR
Halt
Pcfl
FlAll
Dflush
Iflush
In
Out
StoRegF
RstRegF
Scret
Iret
Hcall
Hret
Hresume
VMCreate
VMDestroy
Und255
Implementations§
Source§impl CleverOpcode
impl CleverOpcode
pub fn from_opcode(opc: u16) -> Option<CleverOpcode>
pub fn extension(&self) -> CleverExtension
pub fn name(&self) -> &'static str
pub fn opcode(&self) -> u16
pub fn operands(&self) -> CleverOperandKind
Source§impl CleverOpcode
impl CleverOpcode
pub fn valid_prefix_for(&self, prefixed: &CleverOpcode) -> bool
Source§impl CleverOpcode
impl CleverOpcode
pub fn gpr_dest_specialization( &self, reg: CleverRegister, ) -> Option<CleverOpcode>
pub fn gpr_src_specialization( &self, reg: CleverRegister, ) -> Option<CleverOpcode>
pub fn is_gpr_left_spec(&self) -> bool
pub fn is_gpr_right_spec(&self) -> bool
pub fn get_spec_register(&self) -> Option<CleverRegister>
Source§impl CleverOpcode
impl CleverOpcode
Source§impl CleverOpcode
impl CleverOpcode
pub fn is_branch(&self) -> bool
pub fn is_cbranch(&self) -> bool
pub fn branch_pcrel(&self) -> Option<bool>
pub fn branch_set_relative(&self, isrel: bool) -> Option<CleverOpcode>
pub fn branch_condition(&self) -> Option<ConditionCode>
pub fn branch_weight(&self) -> Option<i8>
pub fn branch_width(&self) -> Option<u16>
pub fn cbranch(cc: ConditionCode, width: u16, pcrel: bool, weight: i8) -> Self
Trait Implementations§
Source§impl Clone for CleverOpcode
impl Clone for CleverOpcode
Source§fn clone(&self) -> CleverOpcode
fn clone(&self) -> CleverOpcode
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 Debug for CleverOpcode
impl Debug for CleverOpcode
Source§impl Display for CleverOpcode
impl Display for CleverOpcode
Source§impl Hash for CleverOpcode
impl Hash for CleverOpcode
Source§impl PartialEq for CleverOpcode
impl PartialEq for CleverOpcode
impl Copy for CleverOpcode
impl Eq for CleverOpcode
impl StructuralPartialEq for CleverOpcode
Auto Trait Implementations§
impl Freeze for CleverOpcode
impl RefUnwindSafe for CleverOpcode
impl Send for CleverOpcode
impl Sync for CleverOpcode
impl Unpin for CleverOpcode
impl UnwindSafe for CleverOpcode
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