use crate::types::*;
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Instruction {
Lui(UType),
Auipc(UType),
Jal(JType),
Jalr(IType),
Beq(BType),
Bne(BType),
Blt(BType),
Bge(BType),
Bltu(BType),
Bgeu(BType),
Lb(IType),
Lh(IType),
Lw(IType),
Lbu(IType),
Lhu(IType),
Lwu(IType),
Ld(IType),
Sb(SType),
Sh(SType),
Sw(SType),
Sd(SType),
Addi(IType),
Slti(IType),
Sltiu(IType),
Xori(IType),
Ori(IType),
Andi(IType),
Slli(ShiftType),
Srli(ShiftType),
Srai(ShiftType),
Add(RType),
Sub(RType),
Sll(RType),
Slt(RType),
Sltu(RType),
Xor(RType),
Srl(RType),
Sra(RType),
Or(RType),
And(RType),
Mul(RType),
Mulh(RType),
Mulhsu(RType),
Mulhu(RType),
Div(RType),
Divu(RType),
Rem(RType),
Remu(RType),
Fence(FenceType),
FenceI,
Ecall,
Ebreak,
Uret,
Sret,
Mret,
Wfi,
SfenceVma(RType),
Csrrw(CsrType),
Csrrs(CsrType),
Csrrc(CsrType),
Csrrwi(CsrIType),
Csrrsi(CsrIType),
Csrrci(CsrIType),
Addiw(IType),
Slliw(ShiftType),
Srliw(ShiftType),
Sraiw(ShiftType),
Addw(RType),
Subw(RType),
Sllw(RType),
Srlw(RType),
Sraw(RType),
Mulw(RType),
Divw(RType),
Divuw(RType),
Remw(RType),
Remuw(RType),
Flw(IType),
Fsw(SType),
Fmadds(R4Type),
Fmsubs(R4Type),
Fnmsubs(R4Type),
Fnmadds(R4Type),
Fadds(RType),
Fsubs(RType),
Fmuls(RType),
Fdivs(RType),
Fsqrts(RType),
Fsgnjs(RType),
Fsgnjns(RType),
Fsgnjxs(RType),
Fmins(RType),
Fmaxs(RType),
Fcvtws(RType),
Fcvtwus(RType),
Fmvxw(RType),
Feqs(RType),
Flts(RType),
Fles(RType),
Fclasss(RType),
Fcvtsw(RType),
Fcvtswu(RType),
Fmvwx(RType),
AmoswapW(RType),
AmoaddW(RType),
AmoxorW(RType),
AmoandW(RType),
AmoorW(RType),
AmominW(RType),
AmomaxW(RType),
AmominuW(RType),
AmomaxuW(RType),
LrW(RType),
ScW(RType),
AmoswapD(RType),
AmoaddD(RType),
AmoxorD(RType),
AmoandD(RType),
AmoorD(RType),
AmominD(RType),
AmomaxD(RType),
AmominuD(RType),
AmomaxuD(RType),
LrD(RType),
ScD(RType),
Illegal,
#[doc(hidden)]
__Nonexhaustive,
}