use crate::prelude::*;
#[must_use]
#[derive(Copy, Clone, Debug)]
pub(crate) enum Inst {
AddRId(Register, u32),
AddRR(Register, Register),
ArithSd(ArithSdKind, Register, Register),
CMovCc(ConditionCode, Register, Register),
Call(LabelId),
CallApi(Api),
CallApiCheck(Api),
Clear(Register),
Custom(&'static [u8]),
CvtSi2Sd(Register, Register),
CvtTSd2Si(Register, Register),
DecMd(Address),
DecR(Register),
IDivR(Register),
IMulRR(Register, Register),
IncMd(Address),
IncR(Register),
JCc(ConditionCode, LabelId),
Jmp(LabelId),
Lbl(LabelId),
LeaRM(Register, Address),
LogicRR(Logic, Register, Register),
LogicRbRb(Logic, Register, Register),
MovBB((Operand<u8>, Operand<u8>)),
MovDD((Operand<u32>, Operand<u32>)),
MovMSd(Address, Register),
MovQQ((Operand<u64>, Operand<u64>)),
MovRefSd(Register, Register),
MovSdM(Register, Address),
MovSdRef(Register, Register),
MovSxDRMd(Register, Address),
Pop(Register),
Push(Register),
SetCc(Register, ConditionCode),
ShiftR(ShiftDirection, Register, Shift),
SqrtSd(Register, Register),
SubRId(Register, u32),
SubRR(Register, Register),
UComISd(Register, Register),
UnaryR(UnaryKind, Register),
UnaryRb(UnaryKind, Register),
}