ppc750cl/disasm/src/generated.rs

7834 lines
317 KiB
Rust

use crate::prelude::*;
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum Opcode {
Illegal = -1,
Add,
Addc,
Adde,
Addi,
Addic,
Addic_,
Addis,
Addme,
Addze,
And,
Andc,
Andi_,
Andis_,
B,
Bc,
Bcctr,
Bclr,
Cmp,
Cmpi,
Cmpl,
Cmpli,
Cntlzw,
Crand,
Crandc,
Creqv,
Crnand,
Crnor,
Cror,
Crorc,
Crxor,
Dcbf,
Dcbi,
Dcbst,
Dcbt,
Dcbtst,
Dcbz,
DcbzL,
Divw,
Divwu,
Eciwx,
Ecowx,
Eieio,
Eqv,
Extsb,
Extsh,
Fabs,
Fadd,
Fadds,
Fcmpo,
Fcmpu,
Fctiw,
Fctiwz,
Fdiv,
Fdivs,
Fmadd,
Fmadds,
Fmr,
Fmsub,
Fmsubs,
Fmul,
Fmuls,
Fnabs,
Fneg,
Fnmadd,
Fnmadds,
Fnmsub,
Fnmsubs,
Fres,
Frsp,
Frsqrte,
Fsel,
Fsub,
Fsubs,
Icbi,
Isync,
Lbz,
Lbzu,
Lbzux,
Lbzx,
Lfd,
Lfdu,
Lfdux,
Lfdx,
Lfs,
Lfsu,
Lfsux,
Lfsx,
Lha,
Lhau,
Lhaux,
Lhax,
Lhbrx,
Lhz,
Lhzu,
Lhzux,
Lhzx,
Lmw,
Lswi,
Lswx,
Lwarx,
Lwbrx,
Lwz,
Lwzu,
Lwzux,
Lwzx,
Mcrf,
Mcrfs,
Mcrxr,
Mfcr,
Mffs,
Mfmsr,
Mfspr,
Mfsr,
Mfsrin,
Mftb,
Mtcrf,
Mtfsb0,
Mtfsb1,
Mtfsf,
Mtfsfi,
Mtmsr,
Mtspr,
Mtsr,
Mtsrin,
Mulhw,
Mulhwu,
Mulli,
Mullw,
Nand,
Neg,
Nor,
Or,
Orc,
Ori,
Oris,
PsqL,
PsqLu,
PsqLux,
PsqLx,
PsqSt,
PsqStu,
PsqStux,
PsqStx,
PsAbs,
PsAdd,
PsCmpo0,
PsCmpo1,
PsCmpu0,
PsCmpu1,
PsDiv,
PsMadd,
PsMadds0,
PsMadds1,
PsMerge00,
PsMerge01,
PsMerge10,
PsMerge11,
PsMr,
PsMsub,
PsMul,
PsMuls0,
PsMuls1,
PsNabs,
PsNeg,
PsNmadd,
PsNmsub,
PsRes,
PsRsqrte,
PsSel,
PsSub,
PsSum0,
PsSum1,
Rfi,
Rlwimi,
Rlwinm,
Rlwnm,
Sc,
Slw,
Sraw,
Srawi,
Srw,
Stb,
Stbu,
Stbux,
Stbx,
Stfd,
Stfdu,
Stfdux,
Stfdx,
Stfiwx,
Stfs,
Stfsu,
Stfsux,
Stfsx,
Sth,
Sthbrx,
Sthu,
Sthux,
Sthx,
Stmw,
Stswi,
Stswx,
Stw,
Stwbrx,
Stwcx_,
Stwu,
Stwux,
Stwx,
Subf,
Subfc,
Subfe,
Subfic,
Subfme,
Subfze,
Sync,
Tlbie,
Tlbsync,
Tw,
Twi,
Xor,
Xori,
Xoris,
}
#[allow(clippy::all)]
impl Opcode {
pub(crate) fn _mnemonic(self) -> &'static str {
match self {
Opcode::Illegal => "<illegal>",
Opcode::Add => "add",
Opcode::Addc => "addc",
Opcode::Adde => "adde",
Opcode::Addi => "addi",
Opcode::Addic => "addic",
Opcode::Addic_ => "addic.",
Opcode::Addis => "addis",
Opcode::Addme => "addme",
Opcode::Addze => "addze",
Opcode::And => "and",
Opcode::Andc => "andc",
Opcode::Andi_ => "andi.",
Opcode::Andis_ => "andis.",
Opcode::B => "b",
Opcode::Bc => "bc",
Opcode::Bcctr => "bcctr",
Opcode::Bclr => "bclr",
Opcode::Cmp => "cmp",
Opcode::Cmpi => "cmpi",
Opcode::Cmpl => "cmpl",
Opcode::Cmpli => "cmpli",
Opcode::Cntlzw => "cntlzw",
Opcode::Crand => "crand",
Opcode::Crandc => "crandc",
Opcode::Creqv => "creqv",
Opcode::Crnand => "crnand",
Opcode::Crnor => "crnor",
Opcode::Cror => "cror",
Opcode::Crorc => "crorc",
Opcode::Crxor => "crxor",
Opcode::Dcbf => "dcbf",
Opcode::Dcbi => "dcbi",
Opcode::Dcbst => "dcbst",
Opcode::Dcbt => "dcbt",
Opcode::Dcbtst => "dcbtst",
Opcode::Dcbz => "dcbz",
Opcode::DcbzL => "dcbz_l",
Opcode::Divw => "divw",
Opcode::Divwu => "divwu",
Opcode::Eciwx => "eciwx",
Opcode::Ecowx => "ecowx",
Opcode::Eieio => "eieio",
Opcode::Eqv => "eqv",
Opcode::Extsb => "extsb",
Opcode::Extsh => "extsh",
Opcode::Fabs => "fabs",
Opcode::Fadd => "fadd",
Opcode::Fadds => "fadds",
Opcode::Fcmpo => "fcmpo",
Opcode::Fcmpu => "fcmpu",
Opcode::Fctiw => "fctiw",
Opcode::Fctiwz => "fctiwz",
Opcode::Fdiv => "fdiv",
Opcode::Fdivs => "fdivs",
Opcode::Fmadd => "fmadd",
Opcode::Fmadds => "fmadds",
Opcode::Fmr => "fmr",
Opcode::Fmsub => "fmsub",
Opcode::Fmsubs => "fmsubs",
Opcode::Fmul => "fmul",
Opcode::Fmuls => "fmuls",
Opcode::Fnabs => "fnabs",
Opcode::Fneg => "fneg",
Opcode::Fnmadd => "fnmadd",
Opcode::Fnmadds => "fnmadds",
Opcode::Fnmsub => "fnmsub",
Opcode::Fnmsubs => "fnmsubs",
Opcode::Fres => "fres",
Opcode::Frsp => "frsp",
Opcode::Frsqrte => "frsqrte",
Opcode::Fsel => "fsel",
Opcode::Fsub => "fsub",
Opcode::Fsubs => "fsubs",
Opcode::Icbi => "icbi",
Opcode::Isync => "isync",
Opcode::Lbz => "lbz",
Opcode::Lbzu => "lbzu",
Opcode::Lbzux => "lbzux",
Opcode::Lbzx => "lbzx",
Opcode::Lfd => "lfd",
Opcode::Lfdu => "lfdu",
Opcode::Lfdux => "lfdux",
Opcode::Lfdx => "lfdx",
Opcode::Lfs => "lfs",
Opcode::Lfsu => "lfsu",
Opcode::Lfsux => "lfsux",
Opcode::Lfsx => "lfsx",
Opcode::Lha => "lha",
Opcode::Lhau => "lhau",
Opcode::Lhaux => "lhaux",
Opcode::Lhax => "lhax",
Opcode::Lhbrx => "lhbrx",
Opcode::Lhz => "lhz",
Opcode::Lhzu => "lhzu",
Opcode::Lhzux => "lhzux",
Opcode::Lhzx => "lhzx",
Opcode::Lmw => "lmw",
Opcode::Lswi => "lswi",
Opcode::Lswx => "lswx",
Opcode::Lwarx => "lwarx",
Opcode::Lwbrx => "lwbrx",
Opcode::Lwz => "lwz",
Opcode::Lwzu => "lwzu",
Opcode::Lwzux => "lwzux",
Opcode::Lwzx => "lwzx",
Opcode::Mcrf => "mcrf",
Opcode::Mcrfs => "mcrfs",
Opcode::Mcrxr => "mcrxr",
Opcode::Mfcr => "mfcr",
Opcode::Mffs => "mffs",
Opcode::Mfmsr => "mfmsr",
Opcode::Mfspr => "mfspr",
Opcode::Mfsr => "mfsr",
Opcode::Mfsrin => "mfsrin",
Opcode::Mftb => "mftb",
Opcode::Mtcrf => "mtcrf",
Opcode::Mtfsb0 => "mtfsb0",
Opcode::Mtfsb1 => "mtfsb1",
Opcode::Mtfsf => "mtfsf",
Opcode::Mtfsfi => "mtfsfi",
Opcode::Mtmsr => "mtmsr",
Opcode::Mtspr => "mtspr",
Opcode::Mtsr => "mtsr",
Opcode::Mtsrin => "mtsrin",
Opcode::Mulhw => "mulhw",
Opcode::Mulhwu => "mulhwu",
Opcode::Mulli => "mulli",
Opcode::Mullw => "mullw",
Opcode::Nand => "nand",
Opcode::Neg => "neg",
Opcode::Nor => "nor",
Opcode::Or => "or",
Opcode::Orc => "orc",
Opcode::Ori => "ori",
Opcode::Oris => "oris",
Opcode::PsqL => "psq_l",
Opcode::PsqLu => "psq_lu",
Opcode::PsqLux => "psq_lux",
Opcode::PsqLx => "psq_lx",
Opcode::PsqSt => "psq_st",
Opcode::PsqStu => "psq_stu",
Opcode::PsqStux => "psq_stux",
Opcode::PsqStx => "psq_stx",
Opcode::PsAbs => "ps_abs",
Opcode::PsAdd => "ps_add",
Opcode::PsCmpo0 => "ps_cmpo0",
Opcode::PsCmpo1 => "ps_cmpo1",
Opcode::PsCmpu0 => "ps_cmpu0",
Opcode::PsCmpu1 => "ps_cmpu1",
Opcode::PsDiv => "ps_div",
Opcode::PsMadd => "ps_madd",
Opcode::PsMadds0 => "ps_madds0",
Opcode::PsMadds1 => "ps_madds1",
Opcode::PsMerge00 => "ps_merge00",
Opcode::PsMerge01 => "ps_merge01",
Opcode::PsMerge10 => "ps_merge10",
Opcode::PsMerge11 => "ps_merge11",
Opcode::PsMr => "ps_mr",
Opcode::PsMsub => "ps_msub",
Opcode::PsMul => "ps_mul",
Opcode::PsMuls0 => "ps_muls0",
Opcode::PsMuls1 => "ps_muls1",
Opcode::PsNabs => "ps_nabs",
Opcode::PsNeg => "ps_neg",
Opcode::PsNmadd => "ps_nmadd",
Opcode::PsNmsub => "ps_nmsub",
Opcode::PsRes => "ps_res",
Opcode::PsRsqrte => "ps_rsqrte",
Opcode::PsSel => "ps_sel",
Opcode::PsSub => "ps_sub",
Opcode::PsSum0 => "ps_sum0",
Opcode::PsSum1 => "ps_sum1",
Opcode::Rfi => "rfi",
Opcode::Rlwimi => "rlwimi",
Opcode::Rlwinm => "rlwinm",
Opcode::Rlwnm => "rlwnm",
Opcode::Sc => "sc",
Opcode::Slw => "slw",
Opcode::Sraw => "sraw",
Opcode::Srawi => "srawi",
Opcode::Srw => "srw",
Opcode::Stb => "stb",
Opcode::Stbu => "stbu",
Opcode::Stbux => "stbux",
Opcode::Stbx => "stbx",
Opcode::Stfd => "stfd",
Opcode::Stfdu => "stfdu",
Opcode::Stfdux => "stfdux",
Opcode::Stfdx => "stfdx",
Opcode::Stfiwx => "stfiwx",
Opcode::Stfs => "stfs",
Opcode::Stfsu => "stfsu",
Opcode::Stfsux => "stfsux",
Opcode::Stfsx => "stfsx",
Opcode::Sth => "sth",
Opcode::Sthbrx => "sthbrx",
Opcode::Sthu => "sthu",
Opcode::Sthux => "sthux",
Opcode::Sthx => "sthx",
Opcode::Stmw => "stmw",
Opcode::Stswi => "stswi",
Opcode::Stswx => "stswx",
Opcode::Stw => "stw",
Opcode::Stwbrx => "stwbrx",
Opcode::Stwcx_ => "stwcx.",
Opcode::Stwu => "stwu",
Opcode::Stwux => "stwux",
Opcode::Stwx => "stwx",
Opcode::Subf => "subf",
Opcode::Subfc => "subfc",
Opcode::Subfe => "subfe",
Opcode::Subfic => "subfic",
Opcode::Subfme => "subfme",
Opcode::Subfze => "subfze",
Opcode::Sync => "sync",
Opcode::Tlbie => "tlbie",
Opcode::Tlbsync => "tlbsync",
Opcode::Tw => "tw",
Opcode::Twi => "twi",
Opcode::Xor => "xor",
Opcode::Xori => "xori",
Opcode::Xoris => "xoris",
}
}
pub(crate) fn _detect(code: u32) -> Self {
if code & 0xfc0007fe == 0x7c000214 {
return Opcode::Add;
}
if code & 0xfc0007fe == 0x7c000014 {
return Opcode::Addc;
}
if code & 0xfc0007fe == 0x7c000114 {
return Opcode::Adde;
}
if code & 0xfc000000 == 0x38000000 {
return Opcode::Addi;
}
if code & 0xfc000000 == 0x30000000 {
return Opcode::Addic;
}
if code & 0xfc000000 == 0x34000000 {
return Opcode::Addic_;
}
if code & 0xfc000000 == 0x3c000000 {
return Opcode::Addis;
}
if code & 0xfc00fbfe == 0x7c0001d4 {
return Opcode::Addme;
}
if code & 0xfc00fbfe == 0x7c000194 {
return Opcode::Addze;
}
if code & 0xfc0007fe == 0x7c000038 {
return Opcode::And;
}
if code & 0xfc0007fe == 0x7c000078 {
return Opcode::Andc;
}
if code & 0xfc000000 == 0x70000000 {
return Opcode::Andi_;
}
if code & 0xfc000000 == 0x74000000 {
return Opcode::Andis_;
}
if code & 0xfc000000 == 0x48000000 {
return Opcode::B;
}
if code & 0xfc000000 == 0x40000000 {
return Opcode::Bc;
}
if code & 0xfc007ffe == 0x4c000420 {
return Opcode::Bcctr;
}
if code & 0xfc007ffe == 0x4c000020 {
return Opcode::Bclr;
}
if code & 0xfc4007ff == 0x7c000000 {
return Opcode::Cmp;
}
if code & 0xfc400000 == 0x2c000000 {
return Opcode::Cmpi;
}
if code & 0xfc4007ff == 0x7c000040 {
return Opcode::Cmpl;
}
if code & 0xfc400000 == 0x28000000 {
return Opcode::Cmpli;
}
if code & 0xfc00fffe == 0x7c000034 {
return Opcode::Cntlzw;
}
if code & 0xfc0007ff == 0x4c000202 {
return Opcode::Crand;
}
if code & 0xfc0007ff == 0x4c000102 {
return Opcode::Crandc;
}
if code & 0xfc0007ff == 0x4c000242 {
return Opcode::Creqv;
}
if code & 0xfc0007ff == 0x4c0001c2 {
return Opcode::Crnand;
}
if code & 0xfc0007ff == 0x4c000042 {
return Opcode::Crnor;
}
if code & 0xfc0007ff == 0x4c000382 {
return Opcode::Cror;
}
if code & 0xfc0007ff == 0x4c000342 {
return Opcode::Crorc;
}
if code & 0xfc0007ff == 0x4c000182 {
return Opcode::Crxor;
}
if code & 0xffe007ff == 0x7c0000ac {
return Opcode::Dcbf;
}
if code & 0xffe007ff == 0x7c0003ac {
return Opcode::Dcbi;
}
if code & 0xffe007ff == 0x7c00006c {
return Opcode::Dcbst;
}
if code & 0xffe007ff == 0x7c00022c {
return Opcode::Dcbt;
}
if code & 0xffe007ff == 0x7c0001ec {
return Opcode::Dcbtst;
}
if code & 0xffe007ff == 0x7c0007ec {
return Opcode::Dcbz;
}
if code & 0xffe007ff == 0x100007ec {
return Opcode::DcbzL;
}
if code & 0xfc0003fe == 0x7c0003d6 {
return Opcode::Divw;
}
if code & 0xfc0003fe == 0x7c000396 {
return Opcode::Divwu;
}
if code & 0xfc0007ff == 0x7c00026c {
return Opcode::Eciwx;
}
if code & 0xfc0007ff == 0x7c00036c {
return Opcode::Ecowx;
}
if code & 0xffffffff == 0x7c0006ac {
return Opcode::Eieio;
}
if code & 0xfc0003fe == 0x7c000238 {
return Opcode::Eqv;
}
if code & 0xfc00fffe == 0x7c000774 {
return Opcode::Extsb;
}
if code & 0xfc00fffe == 0x7c000734 {
return Opcode::Extsh;
}
if code & 0xfc1f07fe == 0xfc000210 {
return Opcode::Fabs;
}
if code & 0xfc0007fe == 0xfc00002a {
return Opcode::Fadd;
}
if code & 0xfc0007fe == 0xec00002a {
return Opcode::Fadds;
}
if code & 0xfc6007ff == 0xfc000040 {
return Opcode::Fcmpo;
}
if code & 0xfc6007ff == 0xfc000000 {
return Opcode::Fcmpu;
}
if code & 0xfc1f07fe == 0xfc00001c {
return Opcode::Fctiw;
}
if code & 0xfc1f07fe == 0xfc00001e {
return Opcode::Fctiwz;
}
if code & 0xfc0007fe == 0xfc000024 {
return Opcode::Fdiv;
}
if code & 0xfc0007fe == 0xec000024 {
return Opcode::Fdivs;
}
if code & 0xfc00003e == 0xfc00003a {
return Opcode::Fmadd;
}
if code & 0xfc00003e == 0xec00003a {
return Opcode::Fmadds;
}
if code & 0xfc1f07fe == 0xfc000090 {
return Opcode::Fmr;
}
if code & 0xfc00003e == 0xfc000038 {
return Opcode::Fmsub;
}
if code & 0xfc00003e == 0xec000038 {
return Opcode::Fmsubs;
}
if code & 0xfc00f83e == 0xfc000032 {
return Opcode::Fmul;
}
if code & 0xfc00f83e == 0xec000032 {
return Opcode::Fmuls;
}
if code & 0xfc1f07fe == 0xfc000110 {
return Opcode::Fnabs;
}
if code & 0xfc1f07fe == 0xfc000050 {
return Opcode::Fneg;
}
if code & 0xfc00003e == 0xfc00003e {
return Opcode::Fnmadd;
}
if code & 0xfc00003e == 0xec00003e {
return Opcode::Fnmadds;
}
if code & 0xfc00003e == 0xfc00003c {
return Opcode::Fnmsub;
}
if code & 0xfc00003e == 0xec00003c {
return Opcode::Fnmsubs;
}
if code & 0xfc1f07fe == 0xec000030 {
return Opcode::Fres;
}
if code & 0xfc1f07fe == 0xfc000018 {
return Opcode::Frsp;
}
if code & 0xfc1f07fe == 0xfc000034 {
return Opcode::Frsqrte;
}
if code & 0xfc00003e == 0xfc00002e {
return Opcode::Fsel;
}
if code & 0xfc0007fe == 0xfc000028 {
return Opcode::Fsub;
}
if code & 0xfc0007fe == 0xec000028 {
return Opcode::Fsubs;
}
if code & 0xffe007ff == 0x7c0007ac {
return Opcode::Icbi;
}
if code & 0xffffffff == 0x4c00012c {
return Opcode::Isync;
}
if code & 0xfc000000 == 0x88000000 {
return Opcode::Lbz;
}
if code & 0xfc000000 == 0x8c000000 {
return Opcode::Lbzu;
}
if code & 0xfc0007ff == 0x7c0000ee {
return Opcode::Lbzux;
}
if code & 0xfc0007ff == 0x7c0000ae {
return Opcode::Lbzx;
}
if code & 0xfc000000 == 0xc8000000 {
return Opcode::Lfd;
}
if code & 0xfc000000 == 0xcc000000 {
return Opcode::Lfdu;
}
if code & 0xfc0007ff == 0x7c0004ee {
return Opcode::Lfdux;
}
if code & 0xfc0007ff == 0x7c0004ae {
return Opcode::Lfdx;
}
if code & 0xfc000000 == 0xc0000000 {
return Opcode::Lfs;
}
if code & 0xfc000000 == 0xc4000000 {
return Opcode::Lfsu;
}
if code & 0xfc0007ff == 0x7c00046e {
return Opcode::Lfsux;
}
if code & 0xfc0007ff == 0x7c00042e {
return Opcode::Lfsx;
}
if code & 0xfc000000 == 0xa8000000 {
return Opcode::Lha;
}
if code & 0xfc000000 == 0xac000000 {
return Opcode::Lhau;
}
if code & 0xfc0007ff == 0x7c0002ee {
return Opcode::Lhaux;
}
if code & 0xfc0007ff == 0x7c0002ae {
return Opcode::Lhax;
}
if code & 0xfc0007ff == 0x7c00062c {
return Opcode::Lhbrx;
}
if code & 0xfc000000 == 0xa0000000 {
return Opcode::Lhz;
}
if code & 0xfc000000 == 0xa4000000 {
return Opcode::Lhzu;
}
if code & 0xfc0007ff == 0x7c00026e {
return Opcode::Lhzux;
}
if code & 0xfc0007ff == 0x7c00022e {
return Opcode::Lhzx;
}
if code & 0xfc000000 == 0xb8000000 {
return Opcode::Lmw;
}
if code & 0xfc0007ff == 0x7c0004aa {
return Opcode::Lswi;
}
if code & 0xfc0007ff == 0x7c00042a {
return Opcode::Lswx;
}
if code & 0xfc0007ff == 0x7c000028 {
return Opcode::Lwarx;
}
if code & 0xfc0007ff == 0x7c00042c {
return Opcode::Lwbrx;
}
if code & 0xfc000000 == 0x80000000 {
return Opcode::Lwz;
}
if code & 0xfc000000 == 0x84000000 {
return Opcode::Lwzu;
}
if code & 0xfc0007ff == 0x7c00006e {
return Opcode::Lwzux;
}
if code & 0xfc0007ff == 0x7c00002e {
return Opcode::Lwzx;
}
if code & 0xfc300fff == 0x4c000000 {
return Opcode::Mcrf;
}
if code & 0xfc30ffff == 0xfc000080 {
return Opcode::Mcrfs;
}
if code & 0xfc30ffff == 0x7c000400 {
return Opcode::Mcrxr;
}
if code & 0xfc1fffff == 0x7c000026 {
return Opcode::Mfcr;
}
if code & 0xfc1ffffe == 0xfc00048e {
return Opcode::Mffs;
}
if code & 0xfc1fffff == 0x7c0000a6 {
return Opcode::Mfmsr;
}
if code & 0xfc0007ff == 0x7c0002a6 {
return Opcode::Mfspr;
}
if code & 0xfc10ffff == 0x7c0004a6 {
return Opcode::Mfsr;
}
if code & 0xfc1f07ff == 0x7c000526 {
return Opcode::Mfsrin;
}
if code & 0xfc0007ff == 0x7c0002e6 {
return Opcode::Mftb;
}
if code & 0xfc100fff == 0x7c000120 {
return Opcode::Mtcrf;
}
if code & 0xfc1ffffe == 0xfc00008c {
return Opcode::Mtfsb0;
}
if code & 0xfc1ffffe == 0xfc00004c {
return Opcode::Mtfsb1;
}
if code & 0xfe0107fe == 0xfc00058e {
return Opcode::Mtfsf;
}
if code & 0xfc7f0ffe == 0xfc00010c {
return Opcode::Mtfsfi;
}
if code & 0xfc1fffff == 0x7c000124 {
return Opcode::Mtmsr;
}
if code & 0xfc0007ff == 0x7c0003a6 {
return Opcode::Mtspr;
}
if code & 0xfc10ffff == 0x7c0001a4 {
return Opcode::Mtsr;
}
if code & 0xfc1f07ff == 0x7c0001e4 {
return Opcode::Mtsrin;
}
if code & 0xfc0007fe == 0x7c000096 {
return Opcode::Mulhw;
}
if code & 0xfc0007fe == 0x7c000016 {
return Opcode::Mulhwu;
}
if code & 0xfc000000 == 0x1c000000 {
return Opcode::Mulli;
}
if code & 0xfc0003fe == 0x7c0001d6 {
return Opcode::Mullw;
}
if code & 0xfc0007fe == 0x7c0003b8 {
return Opcode::Nand;
}
if code & 0xfc00fffe == 0x7c0000d0 {
return Opcode::Neg;
}
if code & 0xfc0007fe == 0x7c0000f8 {
return Opcode::Nor;
}
if code & 0xfc0007fe == 0x7c000378 {
return Opcode::Or;
}
if code & 0xfc0007fe == 0x7c000338 {
return Opcode::Orc;
}
if code & 0xfc000000 == 0x60000000 {
return Opcode::Ori;
}
if code & 0xfc000000 == 0x64000000 {
return Opcode::Oris;
}
if code & 0xfc000000 == 0xe0000000 {
return Opcode::PsqL;
}
if code & 0xfc000000 == 0xe4000000 {
return Opcode::PsqLu;
}
if code & 0xfc00007f == 0x1000004c {
return Opcode::PsqLux;
}
if code & 0xfc00007f == 0x1000000c {
return Opcode::PsqLx;
}
if code & 0xfc000000 == 0xf0000000 {
return Opcode::PsqSt;
}
if code & 0xfc000000 == 0xf4000000 {
return Opcode::PsqStu;
}
if code & 0xfc00007f == 0x1000004e {
return Opcode::PsqStux;
}
if code & 0xfc00007f == 0x1000000e {
return Opcode::PsqStx;
}
if code & 0xfc1f07fe == 0x10000210 {
return Opcode::PsAbs;
}
if code & 0xfc0007fe == 0x1000002a {
return Opcode::PsAdd;
}
if code & 0xfc6007ff == 0x10000040 {
return Opcode::PsCmpo0;
}
if code & 0xfc6007ff == 0x100000c0 {
return Opcode::PsCmpo1;
}
if code & 0xfc6007ff == 0x10000000 {
return Opcode::PsCmpu0;
}
if code & 0xfc6007ff == 0x10000080 {
return Opcode::PsCmpu1;
}
if code & 0xfc0007fe == 0x10000024 {
return Opcode::PsDiv;
}
if code & 0xfc00003e == 0x1000003a {
return Opcode::PsMadd;
}
if code & 0xfc00003e == 0x1000001c {
return Opcode::PsMadds0;
}
if code & 0xfc00003e == 0x1000001e {
return Opcode::PsMadds1;
}
if code & 0xfc0007fe == 0x10000420 {
return Opcode::PsMerge00;
}
if code & 0xfc0007fe == 0x10000460 {
return Opcode::PsMerge01;
}
if code & 0xfc0007fe == 0x100004a0 {
return Opcode::PsMerge10;
}
if code & 0xfc0007fe == 0x100004e0 {
return Opcode::PsMerge11;
}
if code & 0xfc1f07fe == 0x10000090 {
return Opcode::PsMr;
}
if code & 0xfc00003e == 0x10000038 {
return Opcode::PsMsub;
}
if code & 0xfc00f83e == 0x10000032 {
return Opcode::PsMul;
}
if code & 0xfc00f83e == 0x10000018 {
return Opcode::PsMuls0;
}
if code & 0xfc00f83e == 0x1000001a {
return Opcode::PsMuls1;
}
if code & 0xfc1f07fe == 0x10000110 {
return Opcode::PsNabs;
}
if code & 0xfc1f07fe == 0x10000050 {
return Opcode::PsNeg;
}
if code & 0xfc00003e == 0x1000003e {
return Opcode::PsNmadd;
}
if code & 0xfc00003e == 0x1000003c {
return Opcode::PsNmsub;
}
if code & 0xfc1f07fe == 0x10000030 {
return Opcode::PsRes;
}
if code & 0xfc1f07fe == 0x10000034 {
return Opcode::PsRsqrte;
}
if code & 0xfc00003e == 0x1000002e {
return Opcode::PsSel;
}
if code & 0xfc0007fe == 0x10000028 {
return Opcode::PsSub;
}
if code & 0xfc00003e == 0x10000014 {
return Opcode::PsSum0;
}
if code & 0xfc00003e == 0x10000016 {
return Opcode::PsSum1;
}
if code & 0xfffff801 == 0x4c000000 {
return Opcode::Rfi;
}
if code & 0xfc000000 == 0x50000000 {
return Opcode::Rlwimi;
}
if code & 0xfc000000 == 0x54000000 {
return Opcode::Rlwinm;
}
if code & 0xfc000000 == 0x5c000000 {
return Opcode::Rlwnm;
}
if code & 0xffffffff == 0x44000002 {
return Opcode::Sc;
}
if code & 0xfc0007fe == 0x7c000030 {
return Opcode::Slw;
}
if code & 0xfc0007fe == 0x7c000630 {
return Opcode::Sraw;
}
if code & 0xfc0007fe == 0x7c000670 {
return Opcode::Srawi;
}
if code & 0xfc0007fe == 0x7c000430 {
return Opcode::Srw;
}
if code & 0xfc000000 == 0x98000000 {
return Opcode::Stb;
}
if code & 0xfc000000 == 0x9c000000 {
return Opcode::Stbu;
}
if code & 0xfc0007ff == 0x7c0001ee {
return Opcode::Stbux;
}
if code & 0xfc0007ff == 0x7c0001ae {
return Opcode::Stbx;
}
if code & 0xfc000000 == 0xd8000000 {
return Opcode::Stfd;
}
if code & 0xfc000000 == 0xdc000000 {
return Opcode::Stfdu;
}
if code & 0xfc0007ff == 0x7c0005ee {
return Opcode::Stfdux;
}
if code & 0xfc0007ff == 0x7c0005ae {
return Opcode::Stfdx;
}
if code & 0xfc0007ff == 0x7c0007ae {
return Opcode::Stfiwx;
}
if code & 0xfc000000 == 0xd0000000 {
return Opcode::Stfs;
}
if code & 0xfc000000 == 0xd4000000 {
return Opcode::Stfsu;
}
if code & 0xfc0007ff == 0x7c00056e {
return Opcode::Stfsux;
}
if code & 0xfc0007ff == 0x7c00052e {
return Opcode::Stfsx;
}
if code & 0xfc000000 == 0xb0000000 {
return Opcode::Sth;
}
if code & 0xfc0007ff == 0x7c00072c {
return Opcode::Sthbrx;
}
if code & 0xfc000000 == 0xb4000000 {
return Opcode::Sthu;
}
if code & 0xfc0007ff == 0x7c00036e {
return Opcode::Sthux;
}
if code & 0xfc0007ff == 0x7c00032e {
return Opcode::Sthx;
}
if code & 0xfc000000 == 0xbc000000 {
return Opcode::Stmw;
}
if code & 0xfc0007ff == 0x7c0005aa {
return Opcode::Stswi;
}
if code & 0xfc0007ff == 0x7c00052a {
return Opcode::Stswx;
}
if code & 0xfc000000 == 0x90000000 {
return Opcode::Stw;
}
if code & 0xfc0007ff == 0x7c00052c {
return Opcode::Stwbrx;
}
if code & 0xfc0007ff == 0x7c00012d {
return Opcode::Stwcx_;
}
if code & 0xfc000000 == 0x94000000 {
return Opcode::Stwu;
}
if code & 0xfc0007ff == 0x7c00016e {
return Opcode::Stwux;
}
if code & 0xfc0007ff == 0x7c00012e {
return Opcode::Stwx;
}
if code & 0xfc0003fe == 0x7c000050 {
return Opcode::Subf;
}
if code & 0xfc0003fe == 0x7c000010 {
return Opcode::Subfc;
}
if code & 0xfc0003fe == 0x7c000110 {
return Opcode::Subfe;
}
if code & 0xfc000000 == 0x20000000 {
return Opcode::Subfic;
}
if code & 0xfc00fbfe == 0x7c0001d0 {
return Opcode::Subfme;
}
if code & 0xfc00fbfe == 0x7c000190 {
return Opcode::Subfze;
}
if code & 0xffffffff == 0x7c0004ac {
return Opcode::Sync;
}
if code & 0xffff07ff == 0x7c000264 {
return Opcode::Tlbie;
}
if code & 0xffffffff == 0x7c00046c {
return Opcode::Tlbsync;
}
if code & 0xfc0007ff == 0x7c000008 {
return Opcode::Tw;
}
if code & 0xfc000000 == 0xc0000000 {
return Opcode::Twi;
}
if code & 0xfc0007fe == 0x7c000278 {
return Opcode::Xor;
}
if code & 0xfc000000 == 0x68000000 {
return Opcode::Xori;
}
if code & 0xfc000000 == 0x6c000000 {
return Opcode::Xoris;
}
Opcode::Illegal
}
}
#[allow(non_camel_case_types)]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub enum Field {
simm(Simm),
uimm(Uimm),
offset(Offset),
ps_offset(Offset),
BO(OpaqueU),
BI(CRBit),
BH(OpaqueU),
BD(BranchDest),
LI(BranchDest),
SH(OpaqueU),
MB(OpaqueU),
ME(OpaqueU),
rS(GPR),
rD(GPR),
rA(GPR),
rB(GPR),
rC(GPR),
sr(SR),
spr(SPR),
frS(FPR),
frD(FPR),
frA(FPR),
frB(FPR),
frC(FPR),
crbD(CRBit),
crbA(CRBit),
crbB(CRBit),
crfD(CRField),
crfS(CRField),
crm(OpaqueU),
ps_I(GQR),
ps_IX(GQR),
ps_W(OpaqueU),
ps_WX(OpaqueU),
NB(OpaqueU),
tbr(OpaqueU),
mtfsf_FM(OpaqueU),
mtfsf_IMM(OpaqueU),
spr_SPRG(OpaqueU),
spr_BAT(OpaqueU),
TO(OpaqueU),
L(OpaqueU),
xer,
ctr,
lr,
}
impl Field {
pub fn argument(&self) -> Option<Argument> {
match self {
Field::simm(x) => Some(Argument::Simm(*x)),
Field::uimm(x) => Some(Argument::Uimm(*x)),
Field::offset(x) => Some(Argument::Offset(*x)),
Field::ps_offset(x) => Some(Argument::Offset(*x)),
Field::BO(x) => Some(Argument::OpaqueU(*x)),
Field::BI(x) => Some(Argument::CRBit(*x)),
Field::BH(x) => Some(Argument::OpaqueU(*x)),
Field::BD(x) => Some(Argument::BranchDest(*x)),
Field::LI(x) => Some(Argument::BranchDest(*x)),
Field::SH(x) => Some(Argument::OpaqueU(*x)),
Field::MB(x) => Some(Argument::OpaqueU(*x)),
Field::ME(x) => Some(Argument::OpaqueU(*x)),
Field::rS(x) => Some(Argument::GPR(*x)),
Field::rD(x) => Some(Argument::GPR(*x)),
Field::rA(x) => Some(Argument::GPR(*x)),
Field::rB(x) => Some(Argument::GPR(*x)),
Field::rC(x) => Some(Argument::GPR(*x)),
Field::sr(x) => Some(Argument::SR(*x)),
Field::spr(x) => Some(Argument::SPR(*x)),
Field::frS(x) => Some(Argument::FPR(*x)),
Field::frD(x) => Some(Argument::FPR(*x)),
Field::frA(x) => Some(Argument::FPR(*x)),
Field::frB(x) => Some(Argument::FPR(*x)),
Field::frC(x) => Some(Argument::FPR(*x)),
Field::crbD(x) => Some(Argument::CRBit(*x)),
Field::crbA(x) => Some(Argument::CRBit(*x)),
Field::crbB(x) => Some(Argument::CRBit(*x)),
Field::crfD(x) => Some(Argument::CRField(*x)),
Field::crfS(x) => Some(Argument::CRField(*x)),
Field::crm(x) => Some(Argument::OpaqueU(*x)),
Field::ps_I(x) => Some(Argument::GQR(*x)),
Field::ps_IX(x) => Some(Argument::GQR(*x)),
Field::ps_W(x) => Some(Argument::OpaqueU(*x)),
Field::ps_WX(x) => Some(Argument::OpaqueU(*x)),
Field::NB(x) => Some(Argument::OpaqueU(*x)),
Field::tbr(x) => Some(Argument::OpaqueU(*x)),
Field::mtfsf_FM(x) => Some(Argument::OpaqueU(*x)),
Field::mtfsf_IMM(x) => Some(Argument::OpaqueU(*x)),
Field::spr_SPRG(x) => Some(Argument::OpaqueU(*x)),
Field::spr_BAT(x) => Some(Argument::OpaqueU(*x)),
Field::TO(x) => Some(Argument::OpaqueU(*x)),
Field::L(x) => Some(Argument::OpaqueU(*x)),
_ => None,
}
}
pub fn name(&self) -> &'static str {
match self {
Field::simm(_) => "simm",
Field::uimm(_) => "uimm",
Field::offset(_) => "offset",
Field::ps_offset(_) => "ps_offset",
Field::BO(_) => "BO",
Field::BI(_) => "BI",
Field::BH(_) => "BH",
Field::BD(_) => "BD",
Field::LI(_) => "LI",
Field::SH(_) => "SH",
Field::MB(_) => "MB",
Field::ME(_) => "ME",
Field::rS(_) => "rS",
Field::rD(_) => "rD",
Field::rA(_) => "rA",
Field::rB(_) => "rB",
Field::rC(_) => "rC",
Field::sr(_) => "sr",
Field::spr(_) => "spr",
Field::frS(_) => "frS",
Field::frD(_) => "frD",
Field::frA(_) => "frA",
Field::frB(_) => "frB",
Field::frC(_) => "frC",
Field::crbD(_) => "crbD",
Field::crbA(_) => "crbA",
Field::crbB(_) => "crbB",
Field::crfD(_) => "crfD",
Field::crfS(_) => "crfS",
Field::crm(_) => "crm",
Field::ps_I(_) => "ps_I",
Field::ps_IX(_) => "ps_IX",
Field::ps_W(_) => "ps_W",
Field::ps_WX(_) => "ps_WX",
Field::NB(_) => "NB",
Field::tbr(_) => "tbr",
Field::mtfsf_FM(_) => "mtfsf_FM",
Field::mtfsf_IMM(_) => "mtfsf_IMM",
Field::spr_SPRG(_) => "spr_SPRG",
Field::spr_BAT(_) => "spr_BAT",
Field::TO(_) => "TO",
Field::L(_) => "L",
Field::xer => "xer",
Field::ctr => "ctr",
Field::lr => "lr",
}
}
}
#[allow(clippy::all, unused_mut)]
impl Ins {
pub(crate) fn _fields(&self) -> Vec<Field> {
match self.op {
Opcode::Illegal => vec![],
Opcode::Add => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Addc => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Adde => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Addi => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Addic => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Addic_ => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Addis => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::Addme => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Addze => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::And => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Andc => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Andi_ => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::Andis_ => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::B => vec![Field::LI(BranchDest(
((((((self.code >> 2u8) & 0xffffff) ^ 0x800000).wrapping_sub(0x800000)) as i32)
<< 2u8) as _,
))],
Opcode::Bc => vec![
Field::BO(OpaqueU(((self.code >> 21u8) & 0x1f) as _)),
Field::BI(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::BD(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32)
<< 2u8) as _,
)),
],
Opcode::Bcctr => vec![
Field::BO(OpaqueU(((self.code >> 21u8) & 0x1f) as _)),
Field::BI(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::BH(OpaqueU(((self.code >> 11u8) & 0x3) as _)),
],
Opcode::Bclr => vec![
Field::BO(OpaqueU(((self.code >> 21u8) & 0x1f) as _)),
Field::BI(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::BH(OpaqueU(((self.code >> 11u8) & 0x3) as _)),
],
Opcode::Cmp => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::L(OpaqueU(((self.code >> 21u8) & 0x1) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Cmpi => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::L(OpaqueU(((self.code >> 21u8) & 0x1) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Cmpl => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::L(OpaqueU(((self.code >> 21u8) & 0x1) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Cmpli => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::L(OpaqueU(((self.code >> 21u8) & 0x1) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::Cntlzw => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Crand => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Crandc => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Creqv => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Crnand => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Crnor => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Cror => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Crorc => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Crxor => vec![
Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbf => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbi => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbst => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbt => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbtst => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Dcbz => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::DcbzL => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Divw => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Divwu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Eciwx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Ecowx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Eieio => vec![],
Opcode::Eqv => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Extsb => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Extsh => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Fabs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fadd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fadds => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fcmpo => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fcmpu => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fctiw => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fctiwz => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fdiv => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fdivs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmadd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmadds => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmr => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmsub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmsubs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fmul => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
],
Opcode::Fmuls => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
],
Opcode::Fnabs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fneg => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fnmadd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fnmadds => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fnmsub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fnmsubs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fres => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Frsp => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Frsqrte => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fsel => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fsub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Fsubs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Icbi => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Isync => vec![],
Opcode::Lbz => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lbzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lbzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lbzx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lfd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfdu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfdux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lfdx => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lfs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfsu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfsux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lfsx => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lha => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhau => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhaux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lhax => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lhbrx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lhz => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lhzx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lmw => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lswi => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::NB(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lswx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lwarx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lwbrx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lwz => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lwzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lwzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Lwzx => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mcrf => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::crfS(CRField(((self.code >> 18u8) & 0x7) as _)),
],
Opcode::Mcrfs => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::crfS(CRField(((self.code >> 18u8) & 0x7) as _)),
],
Opcode::Mcrxr => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Mfcr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mffs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfmsr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfspr => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::spr(SPR(
(((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32 as _,
)),
],
Opcode::Mfsr => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::sr(SR(((self.code >> 16u8) & 0xf) as _)),
],
Opcode::Mfsrin => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mftb => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::tbr(OpaqueU(
(((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32 as _,
)),
],
Opcode::Mtcrf => vec![
Field::crm(OpaqueU(((self.code >> 12u8) & 0xff) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Mtfsb0 => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtfsb1 => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtfsf => vec![
Field::mtfsf_FM(OpaqueU(((self.code >> 17u8) & 0xff) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mtfsfi => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::mtfsf_IMM(OpaqueU(((self.code >> 12u8) & 0xf) as _)),
],
Opcode::Mtmsr => vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtspr => vec![
Field::spr(SPR(
(((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32 as _,
)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Mtsr => vec![
Field::sr(SR(((self.code >> 16u8) & 0xf) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
Opcode::Mtsrin => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mulhw => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mulhwu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Mulli => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Mullw => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Nand => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Neg => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Nor => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Or => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Orc => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Ori => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::Oris => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::PsqL => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::ps_offset(Offset(
((((self.code & 0xfff) ^ 0x800).wrapping_sub(0x800)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::ps_W(OpaqueU(((self.code >> 15u8) & 0x1) as _)),
Field::ps_I(GQR(((self.code >> 12u8) & 0x7) as _)),
],
Opcode::PsqLu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::ps_offset(Offset(
((((self.code & 0xfff) ^ 0x800).wrapping_sub(0x800)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::ps_W(OpaqueU(((self.code >> 15u8) & 0x1) as _)),
Field::ps_I(GQR(((self.code >> 12u8) & 0x7) as _)),
],
Opcode::PsqLux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
Field::ps_WX(OpaqueU(((self.code >> 10u8) & 0x1) as _)),
Field::ps_IX(GQR(((self.code >> 7u8) & 0x7) as _)),
],
Opcode::PsqLx => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
Field::ps_WX(OpaqueU(((self.code >> 10u8) & 0x1) as _)),
Field::ps_IX(GQR(((self.code >> 7u8) & 0x7) as _)),
],
Opcode::PsqSt => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::ps_offset(Offset(
((((self.code & 0xfff) ^ 0x800).wrapping_sub(0x800)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::ps_W(OpaqueU(((self.code >> 15u8) & 0x1) as _)),
Field::ps_I(GQR(((self.code >> 12u8) & 0x7) as _)),
],
Opcode::PsqStu => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::ps_offset(Offset(
((((self.code & 0xfff) ^ 0x800).wrapping_sub(0x800)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::ps_W(OpaqueU(((self.code >> 15u8) & 0x1) as _)),
Field::ps_I(GQR(((self.code >> 12u8) & 0x7) as _)),
],
Opcode::PsqStux => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
Field::ps_WX(OpaqueU(((self.code >> 10u8) & 0x1) as _)),
Field::ps_IX(GQR(((self.code >> 7u8) & 0x7) as _)),
],
Opcode::PsqStx => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
Field::ps_WX(OpaqueU(((self.code >> 10u8) & 0x1) as _)),
Field::ps_IX(GQR(((self.code >> 7u8) & 0x7) as _)),
],
Opcode::PsAbs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsAdd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsCmpo0 => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsCmpo1 => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsCmpu0 => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsCmpu1 => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsDiv => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMadd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMadds0 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMadds1 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMerge00 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMerge01 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMerge10 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMerge11 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMr => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMsub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsMul => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
],
Opcode::PsMuls0 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
],
Opcode::PsMuls1 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
],
Opcode::PsNabs => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsNeg => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsNmadd => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsNmsub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsRes => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsRsqrte => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsSel => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsSub => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsSum0 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::PsSum1 => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Rfi => vec![],
Opcode::Rlwimi => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::SH(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
Field::MB(OpaqueU(((self.code >> 6u8) & 0x1f) as _)),
Field::ME(OpaqueU(((self.code >> 1u8) & 0x1f) as _)),
],
Opcode::Rlwinm => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::SH(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
Field::MB(OpaqueU(((self.code >> 6u8) & 0x1f) as _)),
Field::ME(OpaqueU(((self.code >> 1u8) & 0x1f) as _)),
],
Opcode::Rlwnm => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
Field::MB(OpaqueU(((self.code >> 6u8) & 0x1f) as _)),
Field::ME(OpaqueU(((self.code >> 1u8) & 0x1f) as _)),
],
Opcode::Sc => vec![],
Opcode::Slw => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Sraw => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Srawi => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::SH(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Srw => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stb => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stbu => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stbux => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stbx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stfd => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stfdu => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stfdux => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stfdx => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stfiwx => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stfs => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stfsu => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stfsux => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stfsx => vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Sth => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Sthbrx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Sthu => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Sthux => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Sthx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stmw => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stswi => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::NB(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stswx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stw => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stwbrx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stwcx_ => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stwu => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Stwux => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Stwx => vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Subf => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Subfc => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Subfe => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Subfic => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Subfme => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Subfze => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Sync => vec![],
Opcode::Tlbie => vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))],
Opcode::Tlbsync => vec![],
Opcode::Tw => vec![
Field::TO(OpaqueU(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Twi => vec![
Field::TO(OpaqueU(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
],
Opcode::Xor => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
Opcode::Xori => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
Opcode::Xoris => vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::uimm(Uimm((self.code & 0xffff) as _)),
],
}
}
pub(crate) fn _defs(&self) -> Vec<Field> {
match self.op {
Opcode::Illegal => vec![],
Opcode::Add => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addc => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Adde => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addi => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addic => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addic_ => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addis => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addme => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Addze => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::And => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Andc => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Andi_ => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Andis_ => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::B => vec![],
Opcode::Bc => vec![],
Opcode::Bcctr => vec![],
Opcode::Bclr => vec![],
Opcode::Cmp => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Cmpi => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Cmpl => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Cmpli => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Cntlzw => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Crand => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Crandc => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Creqv => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Crnand => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Crnor => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Cror => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Crorc => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Crxor => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Dcbf => vec![],
Opcode::Dcbi => vec![],
Opcode::Dcbst => vec![],
Opcode::Dcbt => vec![],
Opcode::Dcbtst => vec![],
Opcode::Dcbz => vec![],
Opcode::DcbzL => vec![],
Opcode::Divw => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Divwu => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Eciwx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Ecowx => vec![],
Opcode::Eieio => vec![],
Opcode::Eqv => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Extsb => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Extsh => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Fabs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fadd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fadds => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fcmpo => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Fcmpu => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Fctiw => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fctiwz => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fdiv => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fdivs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmadd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmadds => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmr => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmsub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmsubs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmul => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fmuls => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fnabs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fneg => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fnmadd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fnmadds => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fnmsub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fnmsubs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fres => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Frsp => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Frsqrte => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fsel => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fsub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Fsubs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Icbi => vec![],
Opcode::Isync => vec![],
Opcode::Lbz => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lbzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lbzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lbzx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lfd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lfdu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfdux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfdx => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lfs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lfsu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfsux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lfsx => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lha => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lhau => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhaux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhax => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lhbrx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lhz => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lhzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lhzx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lmw => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lswi => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lswx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lwarx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lwbrx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lwz => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Lwzu => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lwzux => vec![
Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::Lwzx => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mcrf => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Mcrfs => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Mcrxr => vec![
Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _)),
Field::xer,
],
Opcode::Mfcr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mffs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfmsr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfspr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfsr => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mfsrin => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mftb => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtcrf => vec![],
Opcode::Mtfsb0 => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtfsb1 => vec![Field::crbD(CRBit(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mtfsf => vec![],
Opcode::Mtfsfi => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::Mtmsr => vec![],
Opcode::Mtspr => vec![],
Opcode::Mtsr => vec![],
Opcode::Mtsrin => vec![],
Opcode::Mulhw => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mulhwu => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mulli => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Mullw => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Nand => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Neg => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Nor => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Or => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Orc => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Ori => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Oris => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::PsqL => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsqLu => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::PsqLux => vec![
Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
],
Opcode::PsqLx => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsqSt => vec![],
Opcode::PsqStu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::PsqStux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::PsqStx => vec![],
Opcode::PsAbs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsAdd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsCmpo0 => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::PsCmpo1 => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::PsCmpu0 => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::PsCmpu1 => vec![Field::crfD(CRField(((self.code >> 23u8) & 0x7) as _))],
Opcode::PsDiv => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMadd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMadds0 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMadds1 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMerge00 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMerge01 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMerge10 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMerge11 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMr => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMsub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMul => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMuls0 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsMuls1 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsNabs => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsNeg => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsNmadd => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsNmsub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsRes => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsRsqrte => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsSel => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsSub => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsSum0 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::PsSum1 => vec![Field::frD(FPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Rfi => vec![],
Opcode::Rlwimi => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Rlwinm => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Rlwnm => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Sc => vec![],
Opcode::Slw => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Sraw => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Srawi => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Srw => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stb => vec![],
Opcode::Stbu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stbux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stbx => vec![],
Opcode::Stfd => vec![],
Opcode::Stfdu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stfdux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stfdx => vec![],
Opcode::Stfiwx => vec![],
Opcode::Stfs => vec![],
Opcode::Stfsu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stfsux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stfsx => vec![],
Opcode::Sth => vec![],
Opcode::Sthbrx => vec![],
Opcode::Sthu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Sthux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Sthx => vec![],
Opcode::Stmw => vec![],
Opcode::Stswi => vec![],
Opcode::Stswx => vec![],
Opcode::Stw => vec![],
Opcode::Stwbrx => vec![],
Opcode::Stwcx_ => vec![],
Opcode::Stwu => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stwux => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Stwx => vec![],
Opcode::Subf => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Subfc => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Subfe => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Subfic => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Subfme => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Subfze => vec![Field::rD(GPR(((self.code >> 21u8) & 0x1f) as _))],
Opcode::Sync => vec![],
Opcode::Tlbie => vec![],
Opcode::Tlbsync => vec![],
Opcode::Tw => vec![],
Opcode::Twi => vec![],
Opcode::Xor => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Xori => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
Opcode::Xoris => vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))],
}
}
pub(crate) fn _uses(&self) -> Vec<Field> {
match self.op {
Opcode::Illegal => vec![],
Opcode::Add => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Addc => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Adde => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Addi => {
let mut uses = vec![];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Addic => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Addic_ => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Addis => {
let mut uses = vec![];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Addme => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Addze => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::And => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Andc => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Andi_ => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Andis_ => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::B => {
let mut uses = vec![];
uses
}
Opcode::Bc => {
let mut uses = vec![];
uses
}
Opcode::Bcctr => {
let mut uses = vec![Field::ctr];
uses
}
Opcode::Bclr => {
let mut uses = vec![Field::lr];
uses
}
Opcode::Cmp => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Cmpi => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Cmpl => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Cmpli => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Cntlzw => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Crand => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Crandc => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Creqv => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Crnand => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Crnor => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Cror => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Crorc => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Crxor => {
let mut uses = vec![
Field::crbA(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Field::crbB(CRBit(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Dcbf => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Dcbi => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Dcbst => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Dcbt => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Dcbtst => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Dcbz => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::DcbzL => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Divw => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Divwu => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Eciwx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Ecowx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Eieio => {
let mut uses = vec![];
uses
}
Opcode::Eqv => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Extsb => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Extsh => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Fabs => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fadd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fadds => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fcmpo => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fcmpu => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fctiw => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fctiwz => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fdiv => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fdivs => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmadd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmadds => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmr => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fmsub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmsubs => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmul => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
];
uses
}
Opcode::Fmuls => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
];
uses
}
Opcode::Fnabs => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fneg => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fnmadd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fnmadds => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fnmsub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fnmsubs => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fres => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Frsp => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Frsqrte => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Fsel => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fsub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Fsubs => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Icbi => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Isync => {
let mut uses = vec![];
uses
}
Opcode::Lbz => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lbzu => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lbzux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lbzx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lfd => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lfdu => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lfdux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lfdx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lfs => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lfsu => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lfsux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lfsx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lha => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lhau => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lhaux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lhax => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lhbrx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lhz => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lhzu => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lhzux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lhzx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lmw => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lswi => {
let mut uses = vec![];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lswx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lwarx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lwbrx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lwz => {
let mut uses = vec![Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Lwzu => {
let mut uses = vec![
Field::offset(Offset(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _,
)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Lwzux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Lwzx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Mcrf => {
let mut uses = vec![Field::crfS(CRField(((self.code >> 18u8) & 0x7) as _))];
uses
}
Opcode::Mcrfs => {
let mut uses = vec![Field::crfS(CRField(((self.code >> 18u8) & 0x7) as _))];
uses
}
Opcode::Mcrxr => {
let mut uses = vec![];
uses
}
Opcode::Mfcr => {
let mut uses = vec![];
uses
}
Opcode::Mffs => {
let mut uses = vec![];
uses
}
Opcode::Mfmsr => {
let mut uses = vec![];
uses
}
Opcode::Mfspr => {
let mut uses = vec![];
uses
}
Opcode::Mfsr => {
let mut uses = vec![];
uses
}
Opcode::Mfsrin => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Mftb => {
let mut uses = vec![];
uses
}
Opcode::Mtcrf => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Mtfsb0 => {
let mut uses = vec![];
uses
}
Opcode::Mtfsb1 => {
let mut uses = vec![];
uses
}
Opcode::Mtfsf => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Mtfsfi => {
let mut uses = vec![];
uses
}
Opcode::Mtmsr => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Mtspr => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Mtsr => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Mtsrin => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Mulhw => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Mulhwu => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Mulli => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Mullw => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Nand => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Neg => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Nor => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Or => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Orc => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Ori => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Oris => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::PsqL => {
let mut uses = vec![];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsqLu => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::PsqLux => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsqLx => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsqSt => {
let mut uses = vec![Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsqStu => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::PsqStux => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsqStx => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsAbs => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsAdd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsCmpo0 => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsCmpo1 => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsCmpu0 => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsCmpu1 => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::PsDiv => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMadd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMadds0 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMadds1 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMerge00 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMerge01 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMerge10 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMerge11 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMr => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsMsub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMul => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMuls0 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
];
uses
}
Opcode::PsMuls1 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
];
uses
}
Opcode::PsNabs => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsNeg => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsNmadd => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsNmsub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsRes => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsRsqrte => {
let mut uses = vec![Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::PsSel => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsSub => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsSum0 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::PsSum1 => {
let mut uses = vec![
Field::frA(FPR(((self.code >> 16u8) & 0x1f) as _)),
Field::frC(FPR(((self.code >> 6u8) & 0x1f) as _)),
Field::frB(FPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Rfi => {
let mut uses = vec![];
uses
}
Opcode::Rlwimi => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::SH(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Rlwinm => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::SH(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Rlwnm => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Sc => {
let mut uses = vec![];
uses
}
Opcode::Slw => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Sraw => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Srawi => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Srw => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Stb => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stbu => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Stbux => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Stbx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stfd => {
let mut uses = vec![Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stfdu => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Stfdux => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Stfdx => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stfiwx => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stfs => {
let mut uses = vec![Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stfsu => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Stfsux => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Stfsx => {
let mut uses = vec![
Field::frS(FPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Sth => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Sthbrx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Sthu => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Sthux => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Sthx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stmw => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stswi => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stswx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stw => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stwbrx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stwcx_ => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Stwu => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
];
uses
}
Opcode::Stwux => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Stwx => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
if ((self.code >> 16u8) & 0x1f) != 0 {
uses.push(Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)));
}
uses
}
Opcode::Subf => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Subfc => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Subfe => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Subfic => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Subfme => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Subfze => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Sync => {
let mut uses = vec![];
uses
}
Opcode::Tlbie => {
let mut uses = vec![Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _))];
uses
}
Opcode::Tlbsync => {
let mut uses = vec![];
uses
}
Opcode::Tw => {
let mut uses = vec![
Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Twi => {
let mut uses = vec![Field::rA(GPR(((self.code >> 16u8) & 0x1f) as _))];
uses
}
Opcode::Xor => {
let mut uses = vec![
Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _)),
Field::rB(GPR(((self.code >> 11u8) & 0x1f) as _)),
];
uses
}
Opcode::Xori => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
Opcode::Xoris => {
let mut uses = vec![Field::rS(GPR(((self.code >> 21u8) & 0x1f) as _))];
uses
}
}
}
pub(crate) fn _suffix(&self) -> String {
match self.op {
Opcode::Illegal => String::new(),
Opcode::Add => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Addc => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Adde => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Addi => String::new(),
Opcode::Addic => String::new(),
Opcode::Addic_ => String::new(),
Opcode::Addis => String::new(),
Opcode::Addme => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Addze => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::And => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Andc => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Andi_ => String::new(),
Opcode::Andis_ => String::new(),
Opcode::B => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
s
}
Opcode::Bc => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
Opcode::Bcctr => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
Opcode::Bclr => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
Opcode::Cmp => String::new(),
Opcode::Cmpi => String::new(),
Opcode::Cmpl => String::new(),
Opcode::Cmpli => String::new(),
Opcode::Cntlzw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Crand => String::new(),
Opcode::Crandc => String::new(),
Opcode::Creqv => String::new(),
Opcode::Crnand => String::new(),
Opcode::Crnor => String::new(),
Opcode::Cror => String::new(),
Opcode::Crorc => String::new(),
Opcode::Crxor => String::new(),
Opcode::Dcbf => String::new(),
Opcode::Dcbi => String::new(),
Opcode::Dcbst => String::new(),
Opcode::Dcbt => String::new(),
Opcode::Dcbtst => String::new(),
Opcode::Dcbz => String::new(),
Opcode::DcbzL => String::new(),
Opcode::Divw => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Divwu => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Eciwx => String::new(),
Opcode::Ecowx => String::new(),
Opcode::Eieio => String::new(),
Opcode::Eqv => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Extsb => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Extsh => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fabs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fadd => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fadds => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fcmpo => String::new(),
Opcode::Fcmpu => String::new(),
Opcode::Fctiw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fctiwz => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fdiv => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fdivs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmadd => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmadds => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmr => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmsub => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmsubs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmul => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fmuls => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fnabs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fneg => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fnmadd => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fnmadds => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fnmsub => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fnmsubs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fres => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Frsp => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Frsqrte => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fsel => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fsub => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Fsubs => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Icbi => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Isync => String::new(),
Opcode::Lbz => String::new(),
Opcode::Lbzu => String::new(),
Opcode::Lbzux => String::new(),
Opcode::Lbzx => String::new(),
Opcode::Lfd => String::new(),
Opcode::Lfdu => String::new(),
Opcode::Lfdux => String::new(),
Opcode::Lfdx => String::new(),
Opcode::Lfs => String::new(),
Opcode::Lfsu => String::new(),
Opcode::Lfsux => String::new(),
Opcode::Lfsx => String::new(),
Opcode::Lha => String::new(),
Opcode::Lhau => String::new(),
Opcode::Lhaux => String::new(),
Opcode::Lhax => String::new(),
Opcode::Lhbrx => String::new(),
Opcode::Lhz => String::new(),
Opcode::Lhzu => String::new(),
Opcode::Lhzux => String::new(),
Opcode::Lhzx => String::new(),
Opcode::Lmw => String::new(),
Opcode::Lswi => String::new(),
Opcode::Lswx => String::new(),
Opcode::Lwarx => String::new(),
Opcode::Lwbrx => String::new(),
Opcode::Lwz => String::new(),
Opcode::Lwzu => String::new(),
Opcode::Lwzux => String::new(),
Opcode::Lwzx => String::new(),
Opcode::Mcrf => String::new(),
Opcode::Mcrfs => String::new(),
Opcode::Mcrxr => String::new(),
Opcode::Mfcr => String::new(),
Opcode::Mffs => String::new(),
Opcode::Mfmsr => String::new(),
Opcode::Mfspr => String::new(),
Opcode::Mfsr => String::new(),
Opcode::Mfsrin => String::new(),
Opcode::Mftb => String::new(),
Opcode::Mtcrf => String::new(),
Opcode::Mtfsb0 => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mtfsb1 => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mtfsf => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mtfsfi => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mtmsr => String::new(),
Opcode::Mtspr => String::new(),
Opcode::Mtsr => String::new(),
Opcode::Mtsrin => String::new(),
Opcode::Mulhw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mulhwu => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Mulli => String::new(),
Opcode::Mullw => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Nand => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Neg => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Nor => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Or => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Orc => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Ori => String::new(),
Opcode::Oris => String::new(),
Opcode::PsqL => String::new(),
Opcode::PsqLu => String::new(),
Opcode::PsqLux => String::new(),
Opcode::PsqLx => String::new(),
Opcode::PsqSt => String::new(),
Opcode::PsqStu => String::new(),
Opcode::PsqStux => String::new(),
Opcode::PsqStx => String::new(),
Opcode::PsAbs => String::new(),
Opcode::PsAdd => String::new(),
Opcode::PsCmpo0 => String::new(),
Opcode::PsCmpo1 => String::new(),
Opcode::PsCmpu0 => String::new(),
Opcode::PsCmpu1 => String::new(),
Opcode::PsDiv => String::new(),
Opcode::PsMadd => String::new(),
Opcode::PsMadds0 => String::new(),
Opcode::PsMadds1 => String::new(),
Opcode::PsMerge00 => String::new(),
Opcode::PsMerge01 => String::new(),
Opcode::PsMerge10 => String::new(),
Opcode::PsMerge11 => String::new(),
Opcode::PsMr => String::new(),
Opcode::PsMsub => String::new(),
Opcode::PsMul => String::new(),
Opcode::PsMuls0 => String::new(),
Opcode::PsMuls1 => String::new(),
Opcode::PsNabs => String::new(),
Opcode::PsNeg => String::new(),
Opcode::PsNmadd => String::new(),
Opcode::PsNmsub => String::new(),
Opcode::PsRes => String::new(),
Opcode::PsRsqrte => String::new(),
Opcode::PsSel => String::new(),
Opcode::PsSub => String::new(),
Opcode::PsSum0 => String::new(),
Opcode::PsSum1 => String::new(),
Opcode::Rfi => String::new(),
Opcode::Rlwimi => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Rlwinm => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Rlwnm => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Sc => String::new(),
Opcode::Slw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Sraw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Srawi => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Srw => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Stb => String::new(),
Opcode::Stbu => String::new(),
Opcode::Stbux => String::new(),
Opcode::Stbx => String::new(),
Opcode::Stfd => String::new(),
Opcode::Stfdu => String::new(),
Opcode::Stfdux => String::new(),
Opcode::Stfdx => String::new(),
Opcode::Stfiwx => String::new(),
Opcode::Stfs => String::new(),
Opcode::Stfsu => String::new(),
Opcode::Stfsux => String::new(),
Opcode::Stfsx => String::new(),
Opcode::Sth => String::new(),
Opcode::Sthbrx => String::new(),
Opcode::Sthu => String::new(),
Opcode::Sthux => String::new(),
Opcode::Sthx => String::new(),
Opcode::Stmw => String::new(),
Opcode::Stswi => String::new(),
Opcode::Stswx => String::new(),
Opcode::Stw => String::new(),
Opcode::Stwbrx => String::new(),
Opcode::Stwcx_ => String::new(),
Opcode::Stwu => String::new(),
Opcode::Stwux => String::new(),
Opcode::Stwx => String::new(),
Opcode::Subf => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Subfc => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Subfe => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Subfic => String::new(),
Opcode::Subfme => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Subfze => {
let mut s = String::with_capacity(4);
if self.bit(21usize) {
s.push('o');
}
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Sync => String::new(),
Opcode::Tlbie => String::new(),
Opcode::Tlbsync => String::new(),
Opcode::Tw => String::new(),
Opcode::Twi => String::new(),
Opcode::Xor => {
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
Opcode::Xori => String::new(),
Opcode::Xoris => String::new(),
}
}
pub(crate) fn _simplified(self) -> SimplifiedIns {
match self.op {
Opcode::Addi => {
if ((self.code >> 16u8) & 0x1f) == 0 {
return SimplifiedIns {
mnemonic: "li",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
}
Opcode::Addis => {
if ((self.code >> 16u8) & 0x1f) == 0 {
return SimplifiedIns {
mnemonic: "lis",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::Uimm(Uimm((self.code & 0xffff) as _)),
],
ins: self,
};
}
}
Opcode::Bc => {
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "blt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "blt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "ble",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "ble",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "beq",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "beq",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bge",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "bge",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "bgt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "bgt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "bne",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "bne",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bso",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bso",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bns",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bns",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 16 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bdnz",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 8 {
return SimplifiedIns {
mnemonic: "bdnzt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 0 {
return SimplifiedIns {
mnemonic: "bdnzf",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 18 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bdz",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 10 {
return SimplifiedIns {
mnemonic: "bdzt",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 2 {
return SimplifiedIns {
mnemonic: "bdzf",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if self.bit(30usize) {
s.push('a');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
>= 0
{
s.push('+');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000)
.wrapping_sub(0x2000))
as i32)
<< 2u8)
< 0
{
s.push('-');
}
s
}
},
args: vec![
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
Argument::BranchDest(BranchDest(
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000))
as i32)
<< 2u8) as _,
)),
],
ins: self,
};
}
}
Opcode::Bcctr => {
if ((self.code >> 21u8) & 0x1f) == 20 && ((self.code >> 16u8) & 0x1f) == 0 {
return SimplifiedIns {
mnemonic: "bctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bltctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "bltctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "blectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "blectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "beqctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "beqctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bgectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "bgectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "bgtctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "bgtctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "bnectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "bnectr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bsoctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bsoctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bnsctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bnsctr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
}
Opcode::Bclr => {
if ((self.code >> 21u8) & 0x1f) == 20 && ((self.code >> 16u8) & 0x1f) == 0 {
return SimplifiedIns {
mnemonic: "blr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bltlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "bltlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "blelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "blelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "beqlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "beqlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bgelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 0
{
return SimplifiedIns {
mnemonic: "bgelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 1
{
return SimplifiedIns {
mnemonic: "bgtlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 1
{
return SimplifiedIns {
mnemonic: "bgtlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 2
{
return SimplifiedIns {
mnemonic: "bnelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 2
{
return SimplifiedIns {
mnemonic: "bnelr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bsolr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 12
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bsolr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4 && ((self.code >> 16u8) & 0x1f) == 3
{
return SimplifiedIns {
mnemonic: "bnslr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 4
&& ((self.code >> 16u8) & 0x1f) & 0b11 == 3
{
return SimplifiedIns {
mnemonic: "bnslr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRField(CRField(((self.code >> 18u8) & 0x7) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 16 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bdnzlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 8 {
return SimplifiedIns {
mnemonic: "bdnztlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 0 {
return SimplifiedIns {
mnemonic: "bdnzflr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 18 && ((self.code >> 16u8) & 0x1f) == 0
{
return SimplifiedIns {
mnemonic: "bdzlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 10 {
return SimplifiedIns {
mnemonic: "bdztlr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _))],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) & 0b11110 == 0 {
return SimplifiedIns {
mnemonic: "bdzflr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('l');
}
if ((self.code >> 21u8) & 0x1f) & 1 == 1 {
s.push('+');
}
s
}
},
args: vec![Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _))],
ins: self,
};
}
}
Opcode::Cmp => {
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmpw",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmpw",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpd",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpd",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Cmpi => {
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmpwi",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmpwi",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpdi",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpdi",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
}
Opcode::Cmpl => {
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmplw",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmplw",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpld",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpld",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Cmpli => {
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmplwi",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Uimm(Uimm((self.code & 0xffff) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 0 {
return SimplifiedIns {
mnemonic: "cmplwi",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Uimm(Uimm((self.code & 0xffff) as _)),
],
ins: self,
};
}
if ((self.code >> 23u8) & 0x7) == 0 && ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpldi",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Uimm(Uimm((self.code & 0xffff) as _)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1) == 1 {
return SimplifiedIns {
mnemonic: "cmpldi",
suffix: String::new(),
args: vec![
Argument::CRField(CRField(((self.code >> 23u8) & 0x7) as _)),
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Uimm(Uimm((self.code & 0xffff) as _)),
],
ins: self,
};
}
}
Opcode::Creqv => {
if ((self.code >> 21u8) & 0x1f) == ((self.code >> 16u8) & 0x1f)
&& ((self.code >> 21u8) & 0x1f) == ((self.code >> 11u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "crset",
suffix: String::new(),
args: vec![Argument::CRBit(CRBit(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
}
Opcode::Crnor => {
if ((self.code >> 16u8) & 0x1f) == ((self.code >> 11u8) & 0x1f) {
return SimplifiedIns {
mnemonic: "crnot",
suffix: String::new(),
args: vec![
Argument::CRBit(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Cror => {
if ((self.code >> 16u8) & 0x1f) == ((self.code >> 11u8) & 0x1f) {
return SimplifiedIns {
mnemonic: "crmove",
suffix: String::new(),
args: vec![
Argument::CRBit(CRBit(((self.code >> 21u8) & 0x1f) as _)),
Argument::CRBit(CRBit(((self.code >> 16u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Crxor => {
if ((self.code >> 21u8) & 0x1f) == ((self.code >> 16u8) & 0x1f)
&& ((self.code >> 21u8) & 0x1f) == ((self.code >> 11u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "crclr",
suffix: String::new(),
args: vec![Argument::CRBit(CRBit(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
}
Opcode::Mfspr => {
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 1
{
return SimplifiedIns {
mnemonic: "mfxer",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 8
{
return SimplifiedIns {
mnemonic: "mflr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 9
{
return SimplifiedIns {
mnemonic: "mfctr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 18
{
return SimplifiedIns {
mnemonic: "mfdsisr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 19
{
return SimplifiedIns {
mnemonic: "mfdar",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 22
{
return SimplifiedIns {
mnemonic: "mfdec",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 25
{
return SimplifiedIns {
mnemonic: "mfsdr1",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 26
{
return SimplifiedIns {
mnemonic: "mfsrr0",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 27
{
return SimplifiedIns {
mnemonic: "mfsrr1",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111100
== 272
{
return SimplifiedIns {
mnemonic: "mfsprg",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 16u8) & 0x3) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 282
{
return SimplifiedIns {
mnemonic: "mfear",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 528
{
return SimplifiedIns {
mnemonic: "mfibatu",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 529
{
return SimplifiedIns {
mnemonic: "mfibatl",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 536
{
return SimplifiedIns {
mnemonic: "mfdbatu",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 537
{
return SimplifiedIns {
mnemonic: "mfdbatl",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
],
ins: self,
};
}
}
Opcode::Mtspr => {
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 1
{
return SimplifiedIns {
mnemonic: "mtxer",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 8
{
return SimplifiedIns {
mnemonic: "mtlr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 9
{
return SimplifiedIns {
mnemonic: "mtctr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 18
{
return SimplifiedIns {
mnemonic: "mtdsisr",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 19
{
return SimplifiedIns {
mnemonic: "mtdar",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 22
{
return SimplifiedIns {
mnemonic: "mtdec",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 25
{
return SimplifiedIns {
mnemonic: "mtsdr1",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 26
{
return SimplifiedIns {
mnemonic: "mtsrr0",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 27
{
return SimplifiedIns {
mnemonic: "mtsrr1",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111100
== 272
{
return SimplifiedIns {
mnemonic: "mtsprg",
suffix: String::new(),
args: vec![
Argument::OpaqueU(OpaqueU(((self.code >> 16u8) & 0x3) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 282
{
return SimplifiedIns {
mnemonic: "mtear",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 284
{
return SimplifiedIns {
mnemonic: "mttbl",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
== 285
{
return SimplifiedIns {
mnemonic: "mttbu",
suffix: String::new(),
args: vec![Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _))],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 528
{
return SimplifiedIns {
mnemonic: "mtibatu",
suffix: String::new(),
args: vec![
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 529
{
return SimplifiedIns {
mnemonic: "mtibatl",
suffix: String::new(),
args: vec![
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 536
{
return SimplifiedIns {
mnemonic: "mtdbatu",
suffix: String::new(),
args: vec![
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
if (((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32))
as u32
& 0b1111111001
== 537
{
return SimplifiedIns {
mnemonic: "mtdbatl",
suffix: String::new(),
args: vec![
Argument::OpaqueU(OpaqueU(((self.code >> 17u8) & 0x3) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Or => {
if ((self.code >> 21u8) & 0x1f) == ((self.code >> 11u8) & 0x1f) {
return SimplifiedIns {
mnemonic: "mr",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Ori => {
if ((self.code >> 16u8) & 0x1f) == 0
&& ((self.code >> 21u8) & 0x1f) == 0
&& (self.code & 0xffff) == 0
{
return SimplifiedIns {
mnemonic: "nop",
suffix: String::new(),
args: vec![],
ins: self,
};
}
}
Opcode::Rlwinm => {
if ((self.code >> 11u8) & 0x1f) == 0
&& ((self.code >> 6u8) & 0x1f) == 0
&& ((self.code >> 1u8) & 0x1f) < 32
{
return SimplifiedIns {
mnemonic: "clrrwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU((31 - ((self.code >> 1u8) & 0x1f)) as _)),
],
ins: self,
};
}
if ((self.code >> 11u8) & 0x1f) == 0 && ((self.code >> 1u8) & 0x1f) == 31 {
return SimplifiedIns {
mnemonic: "clrlwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 6u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 11u8) & 0x1f) < 32
&& ((self.code >> 6u8) & 0x1f) >= ((self.code >> 11u8) & 0x1f)
&& ((self.code >> 1u8) & 0x1f) == 31 - ((self.code >> 11u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "clrlslwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU((32 - ((self.code >> 11u8) & 0x1f)) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 6u8) & 0x1f) == 0
&& ((self.code >> 1u8) & 0x1f) == 31
&& ((self.code >> 11u8) & 0x1f) <= 16
{
return SimplifiedIns {
mnemonic: "rotlwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 6u8) & 0x1f) == 0
&& ((self.code >> 1u8) & 0x1f) == 31
&& ((self.code >> 11u8) & 0x1f) > 16
{
return SimplifiedIns {
mnemonic: "rotrwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU((32 - ((self.code >> 11u8) & 0x1f)) as _)),
],
ins: self,
};
}
if ((self.code >> 6u8) & 0x1f) == 0
&& 31 - ((self.code >> 11u8) & 0x1f) == ((self.code >> 1u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "slwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 1u8) & 0x1f) == 31
&& 32 - ((self.code >> 6u8) & 0x1f) == ((self.code >> 11u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "srwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 6u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 6u8) & 0x1f) == 0 {
return SimplifiedIns {
mnemonic: "extlwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU((((self.code >> 1u8) & 0x1f) + 1) as _)),
Argument::OpaqueU(OpaqueU(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
if ((self.code >> 1u8) & 0x1f) == 31
&& ((self.code >> 11u8) & 0x1f) >= 32 - ((self.code >> 6u8) & 0x1f)
{
return SimplifiedIns {
mnemonic: "extrwi",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::OpaqueU(OpaqueU((32 - ((self.code >> 6u8) & 0x1f)) as _)),
Argument::OpaqueU(OpaqueU(
(((self.code >> 11u8) & 0x1f) - (32 - ((self.code >> 6u8) & 0x1f)))
as _,
)),
],
ins: self,
};
}
}
Opcode::Rlwnm => {
if ((self.code >> 6u8) & 0x1f) == 0 && ((self.code >> 1u8) & 0x1f) == 31 {
return SimplifiedIns {
mnemonic: "rotlw",
suffix: {
{
let mut s = String::with_capacity(4);
if self.bit(31usize) {
s.push('.');
}
s
}
},
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 21u8) & 0x1f) as _)),
Argument::GPR(GPR(((self.code >> 11u8) & 0x1f) as _)),
],
ins: self,
};
}
}
Opcode::Twi => {
if ((self.code >> 21u8) & 0x1f) == 8 {
return SimplifiedIns {
mnemonic: "twgti",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
if ((self.code >> 21u8) & 0x1f) == 6 {
return SimplifiedIns {
mnemonic: "twllei",
suffix: String::new(),
args: vec![
Argument::GPR(GPR(((self.code >> 16u8) & 0x1f) as _)),
Argument::Simm(Simm(
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32)
as _,
)),
],
ins: self,
};
}
}
_ => {}
}
SimplifiedIns::basic_form(self)
}
}
#[allow(clippy::all, non_snake_case)]
impl Ins {
#[inline(always)]
pub fn field_simm(&self) -> isize {
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _
}
#[inline(always)]
pub fn field_uimm(&self) -> usize {
(self.code & 0xffff) as _
}
#[inline(always)]
pub fn field_offset(&self) -> isize {
((((self.code & 0xffff) ^ 0x8000).wrapping_sub(0x8000)) as i32) as _
}
#[inline(always)]
pub fn field_ps_offset(&self) -> isize {
((((self.code & 0xfff) ^ 0x800).wrapping_sub(0x800)) as i32) as _
}
#[inline(always)]
pub fn field_BO(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_BI(&self) -> usize {
((self.code >> 16u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_BH(&self) -> usize {
((self.code >> 11u8) & 0x3) as _
}
#[inline(always)]
pub fn field_BD(&self) -> isize {
((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32) << 2u8) as _
}
#[inline(always)]
pub fn field_LI(&self) -> isize {
((((((self.code >> 2u8) & 0xffffff) ^ 0x800000).wrapping_sub(0x800000)) as i32) << 2u8) as _
}
#[inline(always)]
pub fn field_SH(&self) -> usize {
((self.code >> 11u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_MB(&self) -> usize {
((self.code >> 6u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_ME(&self) -> usize {
((self.code >> 1u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_rS(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_rD(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_rA(&self) -> usize {
((self.code >> 16u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_rB(&self) -> usize {
((self.code >> 11u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_rC(&self) -> usize {
((self.code >> 6u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_sr(&self) -> usize {
((self.code >> 16u8) & 0xf) as _
}
#[inline(always)]
pub fn field_spr(&self) -> usize {
(((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32)) as u32 as _
}
#[inline(always)]
pub fn field_frS(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_frD(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_frA(&self) -> usize {
((self.code >> 16u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_frB(&self) -> usize {
((self.code >> 11u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_frC(&self) -> usize {
((self.code >> 6u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_crbD(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_crbA(&self) -> usize {
((self.code >> 16u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_crbB(&self) -> usize {
((self.code >> 11u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_crfD(&self) -> usize {
((self.code >> 23u8) & 0x7) as _
}
#[inline(always)]
pub fn field_crfS(&self) -> usize {
((self.code >> 18u8) & 0x7) as _
}
#[inline(always)]
pub fn field_crm(&self) -> usize {
((self.code >> 12u8) & 0xff) as _
}
#[inline(always)]
pub fn field_ps_I(&self) -> usize {
((self.code >> 12u8) & 0x7) as _
}
#[inline(always)]
pub fn field_ps_IX(&self) -> usize {
((self.code >> 7u8) & 0x7) as _
}
#[inline(always)]
pub fn field_ps_W(&self) -> usize {
((self.code >> 15u8) & 0x1) as _
}
#[inline(always)]
pub fn field_ps_WX(&self) -> usize {
((self.code >> 10u8) & 0x1) as _
}
#[inline(always)]
pub fn field_NB(&self) -> usize {
((self.code >> 11u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_tbr(&self) -> usize {
(((((self.code >> 11u8) & 0x3ff) & 0b11111_00000u32) >> 5u32)
| ((((self.code >> 11u8) & 0x3ff) & 0b00000_11111u32) << 5u32)) as u32 as _
}
#[inline(always)]
pub fn field_mtfsf_FM(&self) -> usize {
((self.code >> 17u8) & 0xff) as _
}
#[inline(always)]
pub fn field_mtfsf_IMM(&self) -> usize {
((self.code >> 12u8) & 0xf) as _
}
#[inline(always)]
pub fn field_spr_SPRG(&self) -> usize {
((self.code >> 16u8) & 0x3) as _
}
#[inline(always)]
pub fn field_spr_BAT(&self) -> usize {
((self.code >> 17u8) & 0x3) as _
}
#[inline(always)]
pub fn field_TO(&self) -> usize {
((self.code >> 21u8) & 0x1f) as _
}
#[inline(always)]
pub fn field_L(&self) -> usize {
((self.code >> 21u8) & 0x1) as _
}
#[inline(always)]
pub fn field_OE(&self) -> bool {
self.bit(21usize)
}
#[inline(always)]
pub fn field_Rc(&self) -> bool {
self.bit(31usize)
}
#[inline(always)]
pub fn field_LK(&self) -> bool {
self.bit(31usize)
}
#[inline(always)]
pub fn field_AA(&self) -> bool {
self.bit(30usize)
}
#[inline(always)]
pub fn field_BP(&self) -> bool {
((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32) << 2u8)
>= 0
}
#[inline(always)]
pub fn field_BNP(&self) -> bool {
((self.code >> 21u8) & 0x1f) & 1 == 1
&& ((((((self.code >> 2u8) & 0x3fff) ^ 0x2000).wrapping_sub(0x2000)) as i32) << 2u8) < 0
}
#[inline(always)]
pub fn field_BP_ND(&self) -> bool {
((self.code >> 21u8) & 0x1f) & 1 == 1
}
}