diff --git a/Cargo.lock b/Cargo.lock index f7892df..e340529 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -268,11 +268,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "powerpc" -version = "0.4.0" +version = "0.4.1" [[package]] name = "powerpc-asm" -version = "0.4.0" +version = "0.4.1" dependencies = [ "phf", "thiserror", @@ -280,7 +280,7 @@ dependencies = [ [[package]] name = "powerpc-fuzz" -version = "0.4.0" +version = "0.4.1" dependencies = [ "clap", "num_cpus", @@ -289,7 +289,7 @@ dependencies = [ [[package]] name = "powerpc-genisa" -version = "0.4.0" +version = "0.4.1" dependencies = [ "anyhow", "indexmap", diff --git a/Cargo.toml b/Cargo.toml index 190c047..18f5e63 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["asm", "disasm", "fuzz", "genisa"] resolver = "2" [workspace.package] -version = "0.4.0" +version = "0.4.1" edition = "2021" authors = ["Luke Street "] license = "MIT OR Apache-2.0" diff --git a/asm/src/generated.rs b/asm/src/generated.rs index 32e4015..5c498de 100644 --- a/asm/src/generated.rs +++ b/asm/src/generated.rs @@ -2874,6 +2874,36 @@ fn gen_fsel(args: &Arguments, modifiers: u32) -> Result { } Ok(code) } +fn gen_fsqrt(args: &Arguments, modifiers: u32) -> Result { + check_arg_count(args, 2)?; + let mut code = 0xfc00002c | modifiers; + // frD + { + let arg = parse_unsigned(args, 0, 0x0, 0x1f)?; + code |= (arg & 0x1f) << 21; + } + // frB + { + let arg = parse_unsigned(args, 1, 0x0, 0x1f)?; + code |= (arg & 0x1f) << 11; + } + Ok(code) +} +fn gen_fsqrts(args: &Arguments, modifiers: u32) -> Result { + check_arg_count(args, 2)?; + let mut code = 0xec00002c | modifiers; + // frD + { + let arg = parse_unsigned(args, 0, 0x0, 0x1f)?; + code |= (arg & 0x1f) << 21; + } + // frB + { + let arg = parse_unsigned(args, 1, 0x0, 0x1f)?; + code |= (arg & 0x1f) << 11; + } + Ok(code) +} fn gen_fsub(args: &Arguments, modifiers: u32) -> Result { check_arg_count(args, 3)?; let mut code = 0xfc000028 | modifiers; @@ -4328,6 +4358,21 @@ fn gen_mfmsr(args: &Arguments, modifiers: u32) -> Result { } Ok(code) } +fn gen_mfocrf(args: &Arguments, modifiers: u32) -> Result { + check_arg_count(args, 2)?; + let mut code = 0x7c100026 | modifiers; + // rD + { + let arg = parse_unsigned(args, 0, 0x0, 0x1f)?; + code |= (arg & 0x1f) << 21; + } + // crm + { + let arg = parse_unsigned(args, 1, 0x0, 0xff)?; + code |= (arg & 0xff) << 12; + } + Ok(code) +} fn gen_mfsdr1(args: &Arguments, modifiers: u32) -> Result { check_arg_count(args, 1)?; let mut code = 0x7c1902a6 | modifiers; @@ -12267,1260 +12312,1266 @@ type MnemonicFn = fn(&Arguments, u32) -> Result; static MNEMONIC_MAP: phf::Map<&'static str, (MnemonicFn, u32)> = ::phf::Map { key: 16287231350648472473, disps: &[ - (0, 15), - (0, 34), - (0, 47), (0, 75), - (0, 61), - (0, 40), - (0, 1), - (0, 4), - (0, 82), - (0, 6), - (0, 0), - (0, 6), - (0, 47), - (0, 313), + (0, 26), + (0, 30), + (0, 103), + (0, 376), + (0, 631), + (0, 191), (0, 5), - (0, 37), - (0, 13), - (0, 0), - (0, 82), - (0, 0), - (0, 9), - (0, 27), - (0, 101), - (0, 312), - (0, 80), - (1, 879), - (0, 740), - (0, 7), - (1, 4), - (0, 16), - (0, 5), - (0, 546), - (0, 46), - (0, 86), - (0, 15), - (0, 457), - (0, 39), - (0, 1), - (0, 19), - (0, 29), - (2, 163), - (0, 232), - (0, 50), - (0, 610), - (0, 185), - (0, 180), - (0, 3), - (0, 47), - (0, 16), - (0, 111), - (0, 196), - (0, 83), - (0, 44), - (0, 104), - (0, 0), - (0, 488), (0, 3), + (0, 299), (0, 35), - (1, 529), - (0, 1), - (3, 124), - (0, 45), - (0, 28), - (0, 154), - (0, 269), - (0, 83), - (0, 50), - (0, 24), - (1, 69), - (0, 335), - (0, 37), - (0, 90), - (0, 667), - (0, 51), - (0, 17), (0, 3), - (0, 26), - (0, 164), - (1, 240), - (0, 15), - (0, 140), - (0, 16), - (0, 172), - (0, 598), - (1, 748), - (0, 19), - (0, 363), - (1, 0), - (0, 0), - (1, 268), - (0, 64), - (0, 53), - (0, 46), - (0, 4), - (0, 374), - (0, 10), - (0, 0), - (0, 20), - (0, 297), - (1, 544), - (0, 14), - (0, 26), - (0, 0), - (1, 33), - (0, 678), - (0, 2), - (0, 2), - (0, 11), - (0, 11), - (0, 1), - (0, 106), - (1, 587), - (0, 6), - (0, 173), - (4, 615), - (0, 159), - (0, 14), - (0, 76), - (3, 38), + (0, 7), + (0, 5), + (0, 610), (0, 8), - (0, 71), + (0, 978), + (0, 82), + (0, 37), + (0, 5), + (0, 2), + (0, 146), + (0, 151), + (0, 18), + (0, 18), + (0, 26), + (0, 31), + (0, 144), + (0, 135), + (0, 514), + (0, 5), + (0, 64), + (0, 170), + (0, 889), + (0, 81), + (0, 177), + (0, 4), + (0, 3), + (0, 273), + (0, 186), + (0, 313), + (0, 650), + (0, 2), + (0, 833), + (0, 40), + (1, 14), + (0, 191), + (0, 95), + (0, 971), + (2, 532), + (0, 48), + (0, 277), + (1, 294), + (1, 123), (0, 0), - (1, 914), + (0, 169), + (0, 5), + (0, 4), + (0, 24), + (0, 0), + (0, 13), + (0, 23), + (0, 0), + (0, 0), + (0, 91), + (0, 6), + (0, 699), + (0, 683), + (0, 823), + (0, 4), + (0, 53), + (0, 3), + (2, 565), + (0, 143), + (0, 1014), + (0, 1), + (0, 189), + (0, 748), + (3, 749), + (0, 125), + (0, 1), + (0, 323), + (3, 295), + (0, 22), + (1, 614), + (1, 1037), + (1, 702), + (0, 26), + (0, 12), + (0, 13), + (0, 29), + (0, 733), + (0, 1), + (2, 221), + (0, 219), + (0, 56), (0, 1), (0, 121), - (0, 161), - (0, 183), - (0, 9), - (0, 789), - (0, 176), - (1, 73), - (0, 173), - (0, 215), - (2, 943), - (0, 149), - (3, 189), - (0, 234), - (0, 107), + (0, 36), (0, 0), - (0, 438), - (1, 418), - (0, 4), - (1, 9), - (0, 167), - (0, 20), - (0, 231), + (0, 656), + (0, 674), + (0, 897), + (0, 461), + (0, 1), + (0, 8), + (0, 23), + (0, 76), + (0, 695), + (0, 23), + (0, 1), + (1, 682), + (0, 329), + (0, 39), + (0, 1), + (0, 606), + (0, 512), (0, 0), - (0, 833), - (1, 13), - (1, 210), - (1, 910), - (0, 774), - (0, 108), - (0, 20), - (1, 507), - (0, 183), - (0, 1), - (0, 111), - (0, 1), - (0, 1), - (1, 951), - (0, 940), + (1, 0), + (0, 40), + (2, 243), + (0, 68), (0, 3), - (3, 453), - (0, 395), - (0, 11), - (1, 90), - (0, 6), - (0, 415), - (0, 437), - (1, 144), - (5, 448), - (0, 147), - (0, 1), - (1, 311), - (0, 1), - (0, 162), - (0, 429), + (0, 985), + (9, 415), + (0, 288), (0, 238), - (0, 5), - (0, 627), - (0, 738), - (6, 728), - (1, 246), - (0, 38), - (0, 243), - (0, 535), - (0, 528), - (0, 996), - (0, 0), - (8, 35), - (0, 10), - (5, 865), - (1, 481), - (0, 7), - (1, 365), - (2, 245), - (0, 350), - (2, 603), - (0, 228), - (0, 115), - (0, 326), - (4, 420), + (0, 17), + (3, 490), + (0, 975), + (0, 43), + (0, 898), + (2, 37), + (0, 830), + (0, 723), + (2, 545), + (0, 13), + (0, 9), + (0, 354), + (3, 785), + (1, 783), (0, 21), - (3, 839), - (17, 494), - (2, 64), - (0, 727), - (6, 817), + (1, 786), + (2, 897), + (0, 32), + (0, 214), + (0, 471), + (0, 1), + (0, 2), + (7, 1041), + (3, 573), + (1, 570), + (0, 299), + (0, 446), + (0, 1), + (0, 2), + (0, 141), + (0, 0), + (0, 5), + (0, 13), + (0, 4), + (1, 77), + (10, 489), + (9, 1022), + (1, 482), + (0, 3), + (9, 805), + (0, 10), + (0, 295), + (0, 2), + (15, 624), + (1, 938), + (0, 0), + (1, 47), + (0, 16), + (3, 416), + (0, 0), + (0, 50), + (0, 102), + (2, 906), + (0, 74), + (0, 625), + (0, 31), + (0, 514), + (0, 198), + (0, 826), + (0, 44), + (0, 24), + (0, 0), + (0, 0), + (0, 284), + (1, 622), + (0, 1), + (0, 822), + (3, 62), + (3, 437), + (28, 789), + (0, 675), + (12, 200), + (0, 8), + (0, 8), + (0, 1), + (0, 742), + (4, 151), + (0, 0), + (4, 180), + (0, 9), + (0, 7), + (0, 69), + (23, 704), ], entries: &[ - ("stwbrx", (gen_stwbrx, 0x0)), - ("bgtctr+", (gen_bgtctr, 0x200000)), - ("crmove", (gen_crmove, 0x0)), - ("fabs.", (gen_fabs, 0x1)), - ("lbzu", (gen_lbzu, 0x0)), - ("sthux", (gen_sthux, 0x0)), - ("vrfin", (gen_vrfin, 0x0)), - ("mulhwu", (gen_mulhwu, 0x0)), - ("ps_cmpo0", (gen_ps_cmpo0, 0x0)), - ("vmsum4fp128", (gen_vmsum4fp128, 0x0)), - ("andis.", (gen_andis_, 0x0)), - ("bdnz-", (gen_bdnz, 0x200000)), - ("bdnzl+", (gen_bdnz, 0x200001)), - ("fmadd", (gen_fmadd, 0x0)), - ("bdzfla+", (gen_bdzf, 0x200003)), - ("addco.", (gen_addc, 0x401)), - ("bclrl", (gen_bclr, 0x1)), - ("ps_sel.", (gen_ps_sel, 0x1)), - ("mfctr", (gen_mfctr, 0x0)), - ("mulld.", (gen_mulld, 0x1)), - ("mfdsisr", (gen_mfdsisr, 0x0)), - ("addeo.", (gen_adde, 0x401)), - ("bdnza+", (gen_bdnz, 0x200002)), - ("bnsla-", (gen_bns, 0x200003)), - ("vcmpgtsh.", (gen_vcmpgtsh, 0x400)), - ("bcctr+", (gen_bcctr, 0x200000)), - ("vavgsh", (gen_vavgsh, 0x0)), - ("vmr", (gen_vmr, 0x0)), - ("vsubshs", (gen_vsubshs, 0x0)), - ("mtsprg", (gen_mtsprg, 0x0)), - ("add.", (gen_add, 0x1)), - ("vnot", (gen_vnot, 0x0)), - ("bdnzta", (gen_bdnzt, 0x2)), - ("mfdbatu", (gen_mfdbatu, 0x0)), - ("vminsh", (gen_vminsh, 0x0)), - ("ps_cmpu1", (gen_ps_cmpu1, 0x0)), - ("bltlrl+", (gen_bltlr, 0x200001)), - ("bgtctrl", (gen_bgtctr, 0x1)), - ("lfdu", (gen_lfdu, 0x0)), - ("stwux", (gen_stwux, 0x0)), - ("rldic.", (gen_rldic, 0x1)), - ("bdzfa+", (gen_bdzf, 0x200002)), - ("blr", (gen_blr, 0x0)), - ("crclr", (gen_crclr, 0x0)), - ("vrfip128", (gen_vrfip128, 0x0)), - ("lvrxl128", (gen_lvrxl128, 0x0)), - ("bdzta-", (gen_bdzt, 0x200002)), - ("rotld.", (gen_rotld, 0x1)), - ("mulldo", (gen_mulld, 0x400)), - ("fmul", (gen_fmul, 0x0)), - ("vcmpgtub.", (gen_vcmpgtub, 0x400)), - ("addze.", (gen_addze, 0x1)), - ("vexptefp", (gen_vexptefp, 0x0)), - ("bdzfa-", (gen_bdzf, 0x200002)), - ("stvx", (gen_stvx, 0x0)), - ("rldimi", (gen_rldimi, 0x0)), - ("vmaddfp128", (gen_vmaddfp128, 0x0)), - ("vcmpequb", (gen_vcmpequb, 0x0)), - ("lwbrx", (gen_lwbrx, 0x0)), - ("srd", (gen_srd, 0x0)), - ("fnmsub", (gen_fnmsub, 0x0)), - ("fdiv", (gen_fdiv, 0x0)), - ("mcrfs", (gen_mcrfs, 0x0)), - ("vpkshss128", (gen_vpkshss128, 0x0)), - ("fadd", (gen_fadd, 0x0)), - ("beqa", (gen_beq, 0x2)), - ("bctrl", (gen_bctr, 0x1)), - ("bns-", (gen_bns, 0x200000)), - ("ble+", (gen_ble, 0x200000)), - ("bsoctrl", (gen_bsoctr, 0x1)), - ("lhax", (gen_lhax, 0x0)), - ("xori", (gen_xori, 0x0)), - ("bnsctr", (gen_bnsctr, 0x0)), - ("vslw", (gen_vslw, 0x0)), - ("beq", (gen_beq, 0x0)), - ("crset", (gen_crset, 0x0)), - ("tweq", (gen_tweq, 0x0)), - ("bdnzt+", (gen_bdnzt, 0x200000)), - ("crand", (gen_crand, 0x0)), - ("addic", (gen_addic, 0x0)), - ("bgelrl+", (gen_bgelr, 0x200001)), - ("mfxer", (gen_mfxer, 0x0)), - ("fmsub.", (gen_fmsub, 0x1)), - ("ptesync", (gen_ptesync, 0x0)), - ("vpkuwum128", (gen_vpkuwum128, 0x0)), - ("bltl+", (gen_blt, 0x200001)), - ("fctid", (gen_fctid, 0x0)), - ("cmpw", (gen_cmpw, 0x0)), - ("bdnzf+", (gen_bdnzf, 0x200000)), - ("fdivs.", (gen_fdivs, 0x1)), - ("bdnzla-", (gen_bdnz, 0x200003)), - ("vsububs", (gen_vsububs, 0x0)), - ("vminsw", (gen_vminsw, 0x0)), - ("ps_merge00", (gen_ps_merge00, 0x0)), - ("bge", (gen_bge, 0x0)), - ("ps_madds0.", (gen_ps_madds0, 0x1)), - ("vrlh", (gen_vrlh, 0x0)), - ("dst", (gen_dst, 0x0)), - ("cmplwi", (gen_cmplwi, 0x0)), - ("ps_madd", (gen_ps_madd, 0x0)), - ("mulhw.", (gen_mulhw, 0x1)), - ("cntlzw", (gen_cntlzw, 0x0)), - ("addmeo", (gen_addme, 0x400)), - ("bcl", (gen_bc, 0x1)), - ("sthbrx", (gen_sthbrx, 0x0)), - ("bgtla-", (gen_bgt, 0x200003)), - ("stswx", (gen_stswx, 0x0)), - ("bdzflrl+", (gen_bdzflr, 0x200001)), - ("mfcr", (gen_mfcr, 0x0)), - ("vpkswss", (gen_vpkswss, 0x0)), - ("bdztla+", (gen_bdzt, 0x200003)), - ("subfe", (gen_subfe, 0x0)), - ("rldic", (gen_rldic, 0x0)), - ("tlbie", (gen_tlbie, 0x0)), - ("lvewx", (gen_lvewx, 0x0)), - ("fdivs", (gen_fdivs, 0x0)), - ("mtctr", (gen_mtctr, 0x0)), - ("clrlslwi", (gen_clrlslwi, 0x0)), - ("subic.", (gen_subic_, 0x0)), - ("twgti", (gen_twgti, 0x0)), - ("sc", (gen_sc, 0x0)), - ("bgela", (gen_bge, 0x3)), - ("vsplth", (gen_vsplth, 0x0)), - ("vaddubs", (gen_vaddubs, 0x0)), - ("vspltw128", (gen_vspltw128, 0x0)), - ("mtsrr1", (gen_mtsrr1, 0x0)), - ("psq_lux", (gen_psq_lux, 0x0)), - ("stvrx128", (gen_stvrx128, 0x0)), - ("vpkd3d128", (gen_vpkd3d128, 0x0)), - ("bltla+", (gen_blt, 0x200003)), - ("beqla+", (gen_beq, 0x200003)), - ("bgtl", (gen_bgt, 0x1)), - ("mcrf", (gen_mcrf, 0x0)), - ("lfdux", (gen_lfdux, 0x0)), - ("bgtl+", (gen_bgt, 0x200001)), - ("vcfux", (gen_vcfux, 0x0)), - ("vmrghw", (gen_vmrghw, 0x0)), - ("ps_abs.", (gen_ps_abs, 0x1)), - ("dstt", (gen_dst, 0x2000000)), - ("vslb", (gen_vslb, 0x0)), - ("blrl", (gen_blr, 0x1)), - ("bltla-", (gen_blt, 0x200003)), - ("ldux", (gen_ldux, 0x0)), - ("lvsr128", (gen_lvsr128, 0x0)), - ("rlwnm.", (gen_rlwnm, 0x1)), - ("bge-", (gen_bge, 0x200000)), - ("lvlxl128", (gen_lvlxl128, 0x0)), - ("bcl-", (gen_bc, 0x200001)), - ("subfo", (gen_subf, 0x400)), - ("beqctrl", (gen_beqctr, 0x1)), - ("fsel.", (gen_fsel, 0x1)), - ("lwax", (gen_lwax, 0x0)), - ("fadd.", (gen_fadd, 0x1)), - ("vsrah", (gen_vsrah, 0x0)), - ("slbie", (gen_slbie, 0x0)), - ("bgelr", (gen_bgelr, 0x0)), - ("lhau", (gen_lhau, 0x0)), - ("cmpldi", (gen_cmpldi, 0x0)), - ("divwuo.", (gen_divwu, 0x401)), - ("crxor", (gen_crxor, 0x0)), - ("stfdu", (gen_stfdu, 0x0)), - ("vrsqrtefp", (gen_vrsqrtefp, 0x0)), - ("bdnzlr+", (gen_bdnzlr, 0x200000)), - ("psq_l", (gen_psq_l, 0x0)), - ("beqlr+", (gen_beqlr, 0x200000)), - ("bgectr+", (gen_bgectr, 0x200000)), - ("divdu", (gen_divdu, 0x0)), - ("vavgsw", (gen_vavgsw, 0x0)), - ("mfspr", (gen_mfspr, 0x0)), - ("mtsdr1", (gen_mtsdr1, 0x0)), - ("stbux", (gen_stbux, 0x0)), - ("blelrl+", (gen_blelr, 0x200001)), - ("vcmpgtub", (gen_vcmpgtub, 0x0)), - ("fmsubs", (gen_fmsubs, 0x0)), - ("bgela+", (gen_bge, 0x200003)), - ("vavguw", (gen_vavguw, 0x0)), - ("mulld", (gen_mulld, 0x0)), - ("vsraw128", (gen_vsraw128, 0x0)), - ("bdzl", (gen_bdz, 0x1)), - ("mfsprg", (gen_mfsprg, 0x0)), - ("vminsb", (gen_vminsb, 0x0)), - ("bdnztlr", (gen_bdnztlr, 0x0)), - ("psq_lu", (gen_psq_lu, 0x0)), - ("stdux", (gen_stdux, 0x0)), - ("slwi", (gen_slwi, 0x0)), - ("bdzlrl", (gen_bdzlr, 0x1)), - ("vcmpequw128", (gen_vcmpequw128, 0x0)), - ("dcbz", (gen_dcbz, 0x0)), - ("frsqrte.", (gen_frsqrte, 0x1)), - ("lwz", (gen_lwz, 0x0)), - ("bc-", (gen_bc, 0x200000)), - ("vsro", (gen_vsro, 0x0)), - ("vmladduhm", (gen_vmladduhm, 0x0)), - ("lvxl128", (gen_lvxl128, 0x0)), - ("bsolr", (gen_bsolr, 0x0)), - ("bltlrl", (gen_bltlr, 0x1)), - ("bsoa-", (gen_bso, 0x200002)), - ("vsel", (gen_vsel, 0x0)), - ("mtibatu", (gen_mtibatu, 0x0)), - ("slw.", (gen_slw, 0x1)), - ("ps_madds1.", (gen_ps_madds1, 0x1)), - ("stvxl", (gen_stvxl, 0x0)), - ("mtspr", (gen_mtspr, 0x0)), - ("stdu", (gen_stdu, 0x0)), - ("stfd", (gen_stfd, 0x0)), - ("vmuleub", (gen_vmuleub, 0x0)), - ("mttbl", (gen_mttbl, 0x0)), - ("extlwi", (gen_extlwi, 0x0)), - ("vavgsb", (gen_vavgsb, 0x0)), - ("vmrglw128", (gen_vmrglw128, 0x0)), - ("vminfp", (gen_vminfp, 0x0)), - ("neg", (gen_neg, 0x0)), - ("or.", (gen_or, 0x1)), - ("mtdbatl", (gen_mtdbatl, 0x0)), - ("andc", (gen_andc, 0x0)), - ("blelrl", (gen_blelr, 0x1)), - ("bsola+", (gen_bso, 0x200003)), - ("vperm128", (gen_vperm128, 0x0)), - ("slw", (gen_slw, 0x0)), - ("sthu", (gen_sthu, 0x0)), - ("vxor128", (gen_vxor128, 0x0)), - ("mfsrr0", (gen_mfsrr0, 0x0)), - ("divduo", (gen_divdu, 0x400)), - ("bdzfl", (gen_bdzf, 0x1)), - ("bnsl+", (gen_bns, 0x200001)), - ("ps_nmadd", (gen_ps_nmadd, 0x0)), - ("ori", (gen_ori, 0x0)), - ("mulldo.", (gen_mulld, 0x401)), - ("addo.", (gen_add, 0x401)), - ("bdzl-", (gen_bdz, 0x200001)), - ("fctiw", (gen_fctiw, 0x0)), - ("dcbzl", (gen_dcbzl, 0x0)), - ("vsum4shs", (gen_vsum4shs, 0x0)), - ("bdztlr+", (gen_bdztlr, 0x200000)), - ("vmrglh", (gen_vmrglh, 0x0)), - ("vpkswus", (gen_vpkswus, 0x0)), - ("subfic", (gen_subfic, 0x0)), - ("lhzu", (gen_lhzu, 0x0)), - ("beqa+", (gen_beq, 0x200002)), - ("ps_add.", (gen_ps_add, 0x1)), - ("fctiwz", (gen_fctiwz, 0x0)), - ("divw.", (gen_divw, 0x1)), - ("andc.", (gen_andc, 0x1)), - ("vmaxuw", (gen_vmaxuw, 0x0)), - ("blt", (gen_blt, 0x0)), - ("blela-", (gen_ble, 0x200003)), - ("vexptefp128", (gen_vexptefp128, 0x0)), - ("neg.", (gen_neg, 0x1)), - ("vmaxsw", (gen_vmaxsw, 0x0)), - ("vaddshs", (gen_vaddshs, 0x0)), - ("bdnzfla+", (gen_bdnzf, 0x200003)), - ("lhz", (gen_lhz, 0x0)), - ("sradi.", (gen_sradi, 0x1)), - ("vcmpgefp.", (gen_vcmpgefp, 0x400)), - ("vcmpequb.", (gen_vcmpequb, 0x400)), - ("vpkuwus128", (gen_vpkuwus128, 0x0)), - ("vcmpgefp128.", (gen_vcmpgefp128, 0x40)), - ("bnsla+", (gen_bns, 0x200003)), - ("vcmpequw128.", (gen_vcmpequw128, 0x40)), - ("sthx", (gen_sthx, 0x0)), - ("bdnztla-", (gen_bdnzt, 0x200003)), - ("vcmpgtuh.", (gen_vcmpgtuh, 0x400)), - ("fadds", (gen_fadds, 0x0)), - ("nor.", (gen_nor, 0x1)), - ("fsub.", (gen_fsub, 0x1)), - ("vpkuhus", (gen_vpkuhus, 0x0)), - ("subfme.", (gen_subfme, 0x1)), - ("vcmpgefp", (gen_vcmpgefp, 0x0)), - ("fcfid.", (gen_fcfid, 0x1)), - ("vcmpbfp", (gen_vcmpbfp, 0x0)), - ("subfeo", (gen_subfe, 0x400)), - ("twllei", (gen_twllei, 0x0)), - ("bdzt", (gen_bdzt, 0x0)), - ("vmsum3fp128", (gen_vmsum3fp128, 0x0)), - ("bdnztl", (gen_bdnzt, 0x1)), - ("dcbi", (gen_dcbi, 0x0)), - ("fneg.", (gen_fneg, 0x1)), - ("vrfim", (gen_vrfim, 0x0)), - ("bdnzfl+", (gen_bdnzf, 0x200001)), - ("vaddcuw", (gen_vaddcuw, 0x0)), - ("bgta", (gen_bgt, 0x2)), - ("vpkuwus", (gen_vpkuwus, 0x0)), - ("ps_nmsub", (gen_ps_nmsub, 0x0)), - ("rfid", (gen_rfid, 0x0)), - ("bnea+", (gen_bne, 0x200002)), - ("fsel", (gen_fsel, 0x0)), - ("subfmeo.", (gen_subfme, 0x401)), - ("rlwimi", (gen_rlwimi, 0x0)), - ("ps_mr", (gen_ps_mr, 0x0)), - ("stb", (gen_stb, 0x0)), - ("psq_stu", (gen_psq_stu, 0x0)), - ("bdnzla", (gen_bdnz, 0x3)), - ("vmsummbm", (gen_vmsummbm, 0x0)), - ("ba", (gen_b, 0x2)), - ("bdzlrl+", (gen_bdzlr, 0x200001)), - ("extsb", (gen_extsb, 0x0)), - ("fnabs", (gen_fnabs, 0x0)), - ("bdnzflr", (gen_bdnzflr, 0x0)), - ("rlwinm.", (gen_rlwinm, 0x1)), - ("fctidz", (gen_fctidz, 0x0)), - ("fnmadds", (gen_fnmadds, 0x0)), - ("addzeo", (gen_addze, 0x400)), - ("vsubsws", (gen_vsubsws, 0x0)), - ("beqctr+", (gen_beqctr, 0x200000)), - ("vslo128", (gen_vslo128, 0x0)), - ("vrfin128", (gen_vrfin128, 0x0)), - ("twi", (gen_twi, 0x0)), - ("nor", (gen_nor, 0x0)), - ("ps_madds0", (gen_ps_madds0, 0x0)), - ("sraw.", (gen_sraw, 0x1)), - ("ps_sum0.", (gen_ps_sum0, 0x1)), - ("ps_neg", (gen_ps_neg, 0x0)), - ("mullw", (gen_mullw, 0x0)), - ("fnmadd", (gen_fnmadd, 0x0)), - ("bsoa+", (gen_bso, 0x200002)), - ("fnabs.", (gen_fnabs, 0x1)), - ("ps_rsqrte", (gen_ps_rsqrte, 0x0)), - ("dcbf", (gen_dcbf, 0x0)), - ("vcmpgefp128", (gen_vcmpgefp128, 0x0)), - ("subis", (gen_subis, 0x0)), - ("vrfiz", (gen_vrfiz, 0x0)), - ("vlogefp", (gen_vlogefp, 0x0)), - ("vpermwi128", (gen_vpermwi128, 0x0)), - ("blel", (gen_ble, 0x1)), - ("subfe.", (gen_subfe, 0x1)), - ("addze", (gen_addze, 0x0)), - ("bdnztlrl", (gen_bdnztlr, 0x1)), - ("subfco", (gen_subfc, 0x400)), - ("icbi", (gen_icbi, 0x0)), - ("crnand", (gen_crnand, 0x0)), - ("divwu.", (gen_divwu, 0x1)), - ("bdztl-", (gen_bdzt, 0x200001)), - ("lwa", (gen_lwa, 0x0)), - ("tdnei", (gen_tdnei, 0x0)), - ("vsubsbs", (gen_vsubsbs, 0x0)), - ("vnmsubfp", (gen_vnmsubfp, 0x0)), - ("bsol-", (gen_bso, 0x200001)), - ("vrfip", (gen_vrfip, 0x0)), - ("bca", (gen_bc, 0x2)), - ("bsolrl", (gen_bsolr, 0x1)), - ("bdzla", (gen_bdz, 0x3)), - ("trap", (gen_trap, 0x0)), - ("cmpwi", (gen_cmpwi, 0x0)), - ("mtfsfi", (gen_mtfsfi, 0x0)), - ("vcmpgtsh", (gen_vcmpgtsh, 0x0)), - ("fctiwz.", (gen_fctiwz, 0x1)), - ("stwu", (gen_stwu, 0x0)), - ("vsrw128", (gen_vsrw128, 0x0)), - ("subfo.", (gen_subf, 0x401)), - ("bdnzl", (gen_bdnz, 0x1)), - ("vmulesb", (gen_vmulesb, 0x0)), - ("crorc", (gen_crorc, 0x0)), - ("lhbrx", (gen_lhbrx, 0x0)), - ("bdzfa", (gen_bdzf, 0x2)), - ("add", (gen_add, 0x0)), - ("bltctr+", (gen_bltctr, 0x200000)), - ("vminuh", (gen_vminuh, 0x0)), - ("vsldoi128", (gen_vsldoi128, 0x0)), - ("bns+", (gen_bns, 0x200000)), - ("lvrxl", (gen_lvrxl, 0x0)), - ("vspltb", (gen_vspltb, 0x0)), - ("cmpl", (gen_cmpl, 0x0)), - ("lswi", (gen_lswi, 0x0)), - ("fcfid", (gen_fcfid, 0x0)), - ("fnmadds.", (gen_fnmadds, 0x1)), - ("bgta+", (gen_bgt, 0x200002)), - ("cntlzd.", (gen_cntlzd, 0x1)), - ("fnmadd.", (gen_fnmadd, 0x1)), - ("ps_sum0", (gen_ps_sum0, 0x0)), - ("srad", (gen_srad, 0x0)), - ("mulhdu", (gen_mulhdu, 0x0)), - ("or", (gen_or, 0x0)), - ("bgel-", (gen_bge, 0x200001)), - ("vcmpeqfp", (gen_vcmpeqfp, 0x0)), - ("ps_div.", (gen_ps_div, 0x1)), - ("cmpi", (gen_cmpi, 0x0)), - ("sld", (gen_sld, 0x0)), - ("vspltisw", (gen_vspltisw, 0x0)), - ("rotlwi.", (gen_rotlwi, 0x1)), - ("stbu", (gen_stbu, 0x0)), - ("stvebx", (gen_stvebx, 0x0)), - ("bltctrl", (gen_bltctr, 0x1)), - ("lhaux", (gen_lhaux, 0x0)), - ("rotrwi", (gen_rotrwi, 0x0)), - ("subfzeo", (gen_subfze, 0x400)), - ("bsolr+", (gen_bsolr, 0x200000)), - ("vor", (gen_vor, 0x0)), - ("stwx", (gen_stwx, 0x0)), - ("bsolrl+", (gen_bsolr, 0x200001)), - ("vcmpgtfp.", (gen_vcmpgtfp, 0x400)), - ("bnela", (gen_bne, 0x3)), - ("vrlb", (gen_vrlb, 0x0)), - ("cmpdi", (gen_cmpdi, 0x0)), - ("cntlzd", (gen_cntlzd, 0x0)), - ("adde.", (gen_adde, 0x1)), - ("vslh", (gen_vslh, 0x0)), - ("mfmsr", (gen_mfmsr, 0x0)), - ("frsp", (gen_frsp, 0x0)), - ("mr", (gen_mr, 0x0)), - ("fdiv.", (gen_fdiv, 0x1)), - ("bnectr+", (gen_bnectr, 0x200000)), - ("vctuxs", (gen_vctuxs, 0x0)), - ("rldcr", (gen_rldcr, 0x0)), - ("vcmpgtfp128.", (gen_vcmpgtfp128, 0x40)), - ("bdza+", (gen_bdz, 0x200002)), - ("lvsl", (gen_lvsl, 0x0)), - ("frsqrte", (gen_frsqrte, 0x0)), - ("stfsu", (gen_stfsu, 0x0)), - ("bgea", (gen_bge, 0x2)), - ("mtxer", (gen_mtxer, 0x0)), - ("cror", (gen_cror, 0x0)), - ("bdzfl+", (gen_bdzf, 0x200001)), - ("ps_msub.", (gen_ps_msub, 0x1)), - ("ps_sum1", (gen_ps_sum1, 0x0)), - ("tw", (gen_tw, 0x0)), - ("lbz", (gen_lbz, 0x0)), - ("lfsx", (gen_lfsx, 0x0)), - ("vmrglw", (gen_vmrglw, 0x0)), - ("divd.", (gen_divd, 0x1)), - ("vsraw", (gen_vsraw, 0x0)), - ("bdnztlr+", (gen_bdnztlr, 0x200000)), - ("ps_merge01", (gen_ps_merge01, 0x0)), - ("bnsla", (gen_bns, 0x3)), - ("vspltisb", (gen_vspltisb, 0x0)), - ("mulli", (gen_mulli, 0x0)), - ("vcmpeqfp128.", (gen_vcmpeqfp128, 0x40)), - ("bsola-", (gen_bso, 0x200003)), - ("fnmsub.", (gen_fnmsub, 0x1)), - ("bgel", (gen_bge, 0x1)), - ("vmrghw128", (gen_vmrghw128, 0x0)), - ("subfzeo.", (gen_subfze, 0x401)), - ("blectr+", (gen_blectr, 0x200000)), - ("mullw.", (gen_mullw, 0x1)), - ("blel+", (gen_ble, 0x200001)), - ("bgelr+", (gen_bgelr, 0x200000)), - ("fcmpu", (gen_fcmpu, 0x0)), - ("lfdx", (gen_lfdx, 0x0)), - ("extsh", (gen_extsh, 0x0)), - ("td", (gen_td, 0x0)), - ("vrsqrtefp128", (gen_vrsqrtefp128, 0x0)), - ("fmuls.", (gen_fmuls, 0x1)), - ("mtdsisr", (gen_mtdsisr, 0x0)), - ("extlwi.", (gen_extlwi, 0x1)), - ("vcmpbfp128", (gen_vcmpbfp128, 0x0)), - ("stvlxl", (gen_stvlxl, 0x0)), - ("ps_muls1.", (gen_ps_muls1, 0x1)), - ("vavguh", (gen_vavguh, 0x0)), - ("vsum2sws", (gen_vsum2sws, 0x0)), - ("bnel-", (gen_bne, 0x200001)), - ("vslw128", (gen_vslw128, 0x0)), - ("divwo", (gen_divw, 0x400)), - ("vcmpeqfp.", (gen_vcmpeqfp, 0x400)), - ("creqv", (gen_creqv, 0x0)), - ("beqlrl+", (gen_beqlr, 0x200001)), - ("vsl", (gen_vsl, 0x0)), - ("lwzx", (gen_lwzx, 0x0)), - ("ps_merge11", (gen_ps_merge11, 0x0)), - ("dststt", (gen_dstst, 0x2000000)), - ("vmaxub", (gen_vmaxub, 0x0)), - ("vsubfp", (gen_vsubfp, 0x0)), - ("stdx", (gen_stdx, 0x0)), - ("bdztla-", (gen_bdzt, 0x200003)), - ("bdnzfla", (gen_bdnzf, 0x3)), - ("clrrwi", (gen_clrrwi, 0x0)), - ("psq_st", (gen_psq_st, 0x0)), - ("bdztlrl+", (gen_bdztlr, 0x200001)), - ("lvrx128", (gen_lvrx128, 0x0)), - ("bcctrl+", (gen_bcctr, 0x200001)), - ("bdzfla-", (gen_bdzf, 0x200003)), - ("divwuo", (gen_divwu, 0x400)), - ("vsububm", (gen_vsububm, 0x0)), - ("vand128", (gen_vand128, 0x0)), - ("vcmpgtsb.", (gen_vcmpgtsb, 0x400)), - ("divw", (gen_divw, 0x0)), - ("tdlnl", (gen_tdlnl, 0x0)), - ("sld.", (gen_sld, 0x1)), - ("bgtla", (gen_bgt, 0x3)), - ("lfd", (gen_lfd, 0x0)), - ("subfc", (gen_subfc, 0x0)), - ("vpkswss128", (gen_vpkswss128, 0x0)), - ("frsp.", (gen_frsp, 0x1)), - ("ps_madd.", (gen_ps_madd, 0x1)), - ("bnelrl", (gen_bnelr, 0x1)), - ("nego", (gen_neg, 0x400)), - ("extrwi", (gen_extrwi, 0x0)), - ("bdnzfl-", (gen_bdnzf, 0x200001)), - ("bdzlr+", (gen_bdzlr, 0x200000)), - ("lvlx", (gen_lvlx, 0x0)), - ("vsubuhm", (gen_vsubuhm, 0x0)), - ("vupkd3d128", (gen_vupkd3d128, 0x0)), - ("mtsr", (gen_mtsr, 0x0)), - ("vmulouh", (gen_vmulouh, 0x0)), - ("vcmpequw", (gen_vcmpequw, 0x0)), - ("mfdbatl", (gen_mfdbatl, 0x0)), - ("bnsctrl", (gen_bnsctr, 0x1)), - ("fsubs.", (gen_fsubs, 0x1)), - ("vmulfp128", (gen_vmulfp128, 0x0)), - ("bdzta+", (gen_bdzt, 0x200002)), - ("lbzux", (gen_lbzux, 0x0)), - ("bcla", (gen_bc, 0x3)), - ("vmaddfp", (gen_vmaddfp, 0x0)), - ("blea-", (gen_ble, 0x200002)), - ("vsubuws", (gen_vsubuws, 0x0)), - ("bgta-", (gen_bgt, 0x200002)), - ("bdnzfa-", (gen_bdnzf, 0x200002)), - ("subf.", (gen_subf, 0x1)), - ("stvlxl128", (gen_stvlxl128, 0x0)), - ("vupkhpx", (gen_vupkhpx, 0x0)), - ("fctidz.", (gen_fctidz, 0x1)), - ("mtfsfi.", (gen_mtfsfi, 0x1)), - ("bne", (gen_bne, 0x0)), - ("bgt+", (gen_bgt, 0x200000)), - ("b", (gen_b, 0x0)), - ("crnot", (gen_crnot, 0x0)), - ("bdzta", (gen_bdzt, 0x2)), - ("bdnzflr+", (gen_bdnzflr, 0x200000)), - ("beql-", (gen_beq, 0x200001)), - ("vsubcuw", (gen_vsubcuw, 0x0)), - ("vupklsh", (gen_vupklsh, 0x0)), - ("bnslrl", (gen_bnslr, 0x1)), - ("bcla-", (gen_bc, 0x200003)), - ("stvlx", (gen_stvlx, 0x0)), - ("bca+", (gen_bc, 0x200002)), - ("vmsumshm", (gen_vmsumshm, 0x0)), - ("rldimi.", (gen_rldimi, 0x1)), - ("ps_merge01.", (gen_ps_merge01, 0x1)), - ("divd", (gen_divd, 0x0)), - ("vrlimi128", (gen_vrlimi128, 0x0)), - ("blta-", (gen_blt, 0x200002)), - ("vadduws", (gen_vadduws, 0x0)), - ("mulhd", (gen_mulhd, 0x0)), - ("srawi.", (gen_srawi, 0x1)), - ("bnectrl", (gen_bnectr, 0x1)), - ("lis", (gen_lis, 0x0)), - ("ps_sub", (gen_ps_sub, 0x0)), - ("beqlrl", (gen_beqlr, 0x1)), - ("bdnzta+", (gen_bdnzt, 0x200002)), - ("dcbst", (gen_dcbst, 0x0)), - ("vmaxfp128", (gen_vmaxfp128, 0x0)), - ("vupklsb128", (gen_vupklsb128, 0x0)), - ("bdzflr", (gen_bdzflr, 0x0)), - ("stfdx", (gen_stfdx, 0x0)), - ("bca-", (gen_bc, 0x200002)), - ("vcmpgtuw.", (gen_vcmpgtuw, 0x400)), - ("vsrw", (gen_vsrw, 0x0)), - ("stvrxl128", (gen_stvrxl128, 0x0)), - ("vspltw", (gen_vspltw, 0x0)), - ("vmulosb", (gen_vmulosb, 0x0)), - ("slwi.", (gen_slwi, 0x1)), - ("bdza", (gen_bdz, 0x2)), - ("bsoa", (gen_bso, 0x2)), - ("beq-", (gen_beq, 0x200000)), - ("dcbt", (gen_dcbt, 0x0)), - ("addmeo.", (gen_addme, 0x401)), - ("vcmpgtuh", (gen_vcmpgtuh, 0x0)), - ("fctiw.", (gen_fctiw, 0x1)), - ("ldu", (gen_ldu, 0x0)), - ("fres.", (gen_fres, 0x1)), - ("ps_mul", (gen_ps_mul, 0x0)), - ("beql", (gen_beq, 0x1)), - ("vctsxs128", (gen_vctsxs128, 0x0)), - ("bnsl-", (gen_bns, 0x200001)), - ("ps_merge10", (gen_ps_merge10, 0x0)), - ("subfeo.", (gen_subfe, 0x401)), - ("addo", (gen_add, 0x400)), - ("subfco.", (gen_subfc, 0x401)), - ("bne+", (gen_bne, 0x200000)), - ("xoris", (gen_xoris, 0x0)), - ("vsum4ubs", (gen_vsum4ubs, 0x0)), - ("bdzt-", (gen_bdzt, 0x200000)), - ("vrfiz128", (gen_vrfiz128, 0x0)), - ("mullwo.", (gen_mullw, 0x401)), - ("vupkhsb128", (gen_vupkhsb128, 0x0)), - ("mtfsf.", (gen_mtfsf, 0x1)), - ("orc.", (gen_orc, 0x1)), - ("clrlwi", (gen_clrlwi, 0x0)), ("dstst", (gen_dstst, 0x0)), - ("fmadd.", (gen_fmadd, 0x1)), - ("blela+", (gen_ble, 0x200003)), - ("divdo", (gen_divd, 0x400)), - ("rldicl.", (gen_rldicl, 0x1)), - ("bnectrl+", (gen_bnectr, 0x200001)), - ("ps_div", (gen_ps_div, 0x0)), - ("vminfp128", (gen_vminfp128, 0x0)), - ("bnsa+", (gen_bns, 0x200002)), - ("stvrx", (gen_stvrx, 0x0)), - ("ps_nabs", (gen_ps_nabs, 0x0)), - ("bdztla", (gen_bdzt, 0x3)), - ("addco", (gen_addc, 0x400)), - ("divdu.", (gen_divdu, 0x1)), - ("mulhdu.", (gen_mulhdu, 0x1)), - ("mulhw", (gen_mulhw, 0x0)), - ("divdo.", (gen_divd, 0x401)), - ("slbia", (gen_slbia, 0x0)), - ("vmuloub", (gen_vmuloub, 0x0)), - ("bdnztla+", (gen_bdnzt, 0x200003)), - ("mtlr", (gen_mtlr, 0x0)), - ("bnela-", (gen_bne, 0x200003)), - ("bnslr+", (gen_bnslr, 0x200000)), - ("stmw", (gen_stmw, 0x0)), - ("mtfsb0.", (gen_mtfsb0, 0x1)), - ("fneg", (gen_fneg, 0x0)), - ("stvx128", (gen_stvx128, 0x0)), - ("stvrxl", (gen_stvrxl, 0x0)), - ("ld", (gen_ld, 0x0)), - ("ps_msub", (gen_ps_msub, 0x0)), - ("mtear", (gen_mtear, 0x0)), - ("ps_nmadd.", (gen_ps_nmadd, 0x1)), - ("vmaxuh", (gen_vmaxuh, 0x0)), - ("vcmpeqfp128", (gen_vcmpeqfp128, 0x0)), - ("addeo", (gen_adde, 0x400)), ("rotld", (gen_rotld, 0x0)), - ("srawi", (gen_srawi, 0x0)), - ("fmuls", (gen_fmuls, 0x0)), - ("cmplw", (gen_cmplw, 0x0)), - ("fabs", (gen_fabs, 0x0)), - ("stvewx128", (gen_stvewx128, 0x0)), - ("stw", (gen_stw, 0x0)), - ("bdzflr+", (gen_bdzflr, 0x200000)), - ("bdnz+", (gen_bdnz, 0x200000)), - ("ldarx", (gen_ldarx, 0x0)), - ("lbzx", (gen_lbzx, 0x0)), - ("vcmpgtfp", (gen_vcmpgtfp, 0x0)), - ("mfsr", (gen_mfsr, 0x0)), - ("ecowx", (gen_ecowx, 0x0)), - ("ps_mul.", (gen_ps_mul, 0x1)), - ("ble-", (gen_ble, 0x200000)), - ("vnor128", (gen_vnor128, 0x0)), - ("blel-", (gen_ble, 0x200001)), - ("vpkuhum128", (gen_vpkuhum128, 0x0)), - ("bdzla-", (gen_bdz, 0x200003)), - ("bgectrl+", (gen_bgectr, 0x200001)), - ("vctsxs", (gen_vctsxs, 0x0)), - ("dssall", (gen_dssall, 0x0)), - ("bnsa", (gen_bns, 0x2)), - ("bltl-", (gen_blt, 0x200001)), - ("mtsrdin", (gen_mtsrdin, 0x0)), - ("beql+", (gen_beq, 0x200001)), - ("ps_mr.", (gen_ps_mr, 0x1)), - ("bgtla+", (gen_bgt, 0x200003)), - ("mfvscr", (gen_mfvscr, 0x0)), - ("vsr", (gen_vsr, 0x0)), - ("bgtlrl", (gen_bgtlr, 0x1)), - ("bgectr", (gen_bgectr, 0x0)), - ("fmsubs.", (gen_fmsubs, 0x1)), - ("vaddubm", (gen_vaddubm, 0x0)), - ("psq_lx", (gen_psq_lx, 0x0)), - ("bdnzt-", (gen_bdnzt, 0x200000)), - ("crandc", (gen_crandc, 0x0)), - ("lmw", (gen_lmw, 0x0)), - ("subi", (gen_subi, 0x0)), - ("ps_res.", (gen_ps_res, 0x1)), - ("mullwo", (gen_mullw, 0x400)), - ("bltl", (gen_blt, 0x1)), - ("bdzl+", (gen_bdz, 0x200001)), - ("rldicl", (gen_rldicl, 0x0)), - ("vmaxsh", (gen_vmaxsh, 0x0)), - ("blea", (gen_ble, 0x2)), - ("fcmpo", (gen_fcmpo, 0x0)), - ("icbi.", (gen_icbi, 0x1)), - ("vminub", (gen_vminub, 0x0)), - ("lwaux", (gen_lwaux, 0x0)), - ("bgelrl", (gen_bgelr, 0x1)), - ("nego.", (gen_neg, 0x401)), - ("fmsub", (gen_fmsub, 0x0)), - ("vadduwm", (gen_vadduwm, 0x0)), - ("bgtlr+", (gen_bgtlr, 0x200000)), - ("bdnzflrl+", (gen_bdnzflr, 0x200001)), - ("bnelr+", (gen_bnelr, 0x200000)), - ("extsh.", (gen_extsh, 0x1)), - ("lfsu", (gen_lfsu, 0x0)), - ("dss", (gen_dss, 0x0)), - ("mfibatu", (gen_mfibatu, 0x0)), - ("vsldoi", (gen_vsldoi, 0x0)), - ("adde", (gen_adde, 0x0)), - ("subic", (gen_subic, 0x0)), - ("eieio", (gen_eieio, 0x0)), - ("rotrwi.", (gen_rotrwi, 0x1)), - ("srw.", (gen_srw, 0x1)), - ("subfmeo", (gen_subfme, 0x400)), - ("vsubfp128", (gen_vsubfp128, 0x0)), - ("mfear", (gen_mfear, 0x0)), - ("vmsumubm", (gen_vmsumubm, 0x0)), - ("bsoctr", (gen_bsoctr, 0x0)), - ("rldcl", (gen_rldcl, 0x0)), - ("ps_muls0.", (gen_ps_muls0, 0x1)), - ("bnea", (gen_bne, 0x2)), - ("bgtlr", (gen_bgtlr, 0x0)), - ("vsubuwm", (gen_vsubuwm, 0x0)), - ("vcfsx128", (gen_vcfsx128, 0x0)), - ("lvx", (gen_lvx, 0x0)), - ("bnsa-", (gen_bns, 0x200002)), - ("vcfsx", (gen_vcfsx, 0x0)), - ("beqctr", (gen_beqctr, 0x0)), - ("srd.", (gen_srd, 0x1)), - ("bltlr+", (gen_bltlr, 0x200000)), - ("stfdux", (gen_stfdux, 0x0)), - ("ps_sum1.", (gen_ps_sum1, 0x1)), - ("bla", (gen_b, 0x3)), - ("ps_res", (gen_ps_res, 0x0)), - ("bltla", (gen_blt, 0x3)), - ("andi.", (gen_andi_, 0x0)), - ("cmpli", (gen_cmpli, 0x0)), - ("fmadds", (gen_fmadds, 0x0)), - ("and.", (gen_and, 0x1)), - ("vsro128", (gen_vsro128, 0x0)), - ("bgela-", (gen_bge, 0x200003)), - ("vmhaddshs", (gen_vmhaddshs, 0x0)), - ("vmsumshs", (gen_vmsumshs, 0x0)), - ("eqv.", (gen_eqv, 0x1)), - ("fnmsubs.", (gen_fnmsubs, 0x1)), - ("vsrh", (gen_vsrh, 0x0)), - ("mttbu", (gen_mttbu, 0x0)), - ("eqv", (gen_eqv, 0x0)), - ("orc", (gen_orc, 0x0)), - ("bclr+", (gen_bclr, 0x200000)), - ("ps_merge10.", (gen_ps_merge10, 0x1)), - ("addzeo.", (gen_addze, 0x401)), - ("vmaxfp", (gen_vmaxfp, 0x0)), - ("vslo", (gen_vslo, 0x0)), - ("bdztl+", (gen_bdzt, 0x200001)), - ("ps_rsqrte.", (gen_ps_rsqrte, 0x1)), - ("bclrl+", (gen_bclr, 0x200001)), - ("fmul.", (gen_fmul, 0x1)), - ("vspltisw128", (gen_vspltisw128, 0x0)), - ("stfsx", (gen_stfsx, 0x0)), - ("vaddsws", (gen_vaddsws, 0x0)), - ("vcmpgtsw.", (gen_vcmpgtsw, 0x400)), - ("lwzu", (gen_lwzu, 0x0)), - ("stvehx", (gen_stvehx, 0x0)), - ("beqlr", (gen_beqlr, 0x0)), - ("bdnztl-", (gen_bdnzt, 0x200001)), - ("eciwx", (gen_eciwx, 0x0)), - ("vupkhsh128", (gen_vupkhsh128, 0x0)), - ("stfs", (gen_stfs, 0x0)), - ("rlwimi.", (gen_rlwimi, 0x1)), - ("rlwinm", (gen_rlwinm, 0x0)), - ("vminuw", (gen_vminuw, 0x0)), - ("vcmpequh.", (gen_vcmpequh, 0x400)), - ("mffs", (gen_mffs, 0x0)), - ("stwcx.", (gen_stwcx_, 0x0)), - ("rldicr", (gen_rldicr, 0x0)), - ("mtfsf", (gen_mtfsf, 0x0)), - ("bnslr", (gen_bnslr, 0x0)), - ("stdcx.", (gen_stdcx_, 0x0)), - ("fres", (gen_fres, 0x0)), - ("bdz+", (gen_bdz, 0x200000)), - ("vrlw128", (gen_vrlw128, 0x0)), - ("bdztlr", (gen_bdztlr, 0x0)), - ("mtmsrd", (gen_mtmsrd, 0x0)), - ("vmsumuhm", (gen_vmsumuhm, 0x0)), - ("sradi", (gen_sradi, 0x0)), - ("psq_stx", (gen_psq_stx, 0x0)), - ("vpkpx", (gen_vpkpx, 0x0)), + ("vrfin128", (gen_vrfin128, 0x0)), + ("bdzla", (gen_bdz, 0x3)), + ("bnectr", (gen_bnectr, 0x0)), + ("blelrl+", (gen_blelr, 0x200001)), ("vcmpbfp.", (gen_vcmpbfp, 0x400)), - ("bcctrl", (gen_bcctr, 0x1)), - ("extsw.", (gen_extsw, 0x1)), - ("bge+", (gen_bge, 0x200000)), - ("mfsrr1", (gen_mfsrr1, 0x0)), - ("subfze", (gen_subfze, 0x0)), - ("bso", (gen_bso, 0x0)), - ("bdzla+", (gen_bdz, 0x200003)), - ("vmrglb", (gen_vmrglb, 0x0)), - ("lvrx", (gen_lvrx, 0x0)), - ("cmpld", (gen_cmpld, 0x0)), - ("bc", (gen_bc, 0x0)), - ("lvlx128", (gen_lvlx128, 0x0)), - ("blectrl", (gen_blectr, 0x1)), - ("xor.", (gen_xor, 0x1)), - ("beqla", (gen_beq, 0x3)), - ("vsumsws", (gen_vsumsws, 0x0)), - ("mflr", (gen_mflr, 0x0)), - ("vaddfp128", (gen_vaddfp128, 0x0)), - ("vpkshus", (gen_vpkshus, 0x0)), - ("dcbz_l", (gen_dcbz_l, 0x0)), - ("vmulosh", (gen_vmulosh, 0x0)), - ("mtcrf", (gen_mtcrf, 0x0)), - ("bdztlrl", (gen_bdztlr, 0x1)), - ("bdnzf", (gen_bdnzf, 0x0)), - ("vrfim128", (gen_vrfim128, 0x0)), - ("beqa-", (gen_beq, 0x200002)), - ("bgectrl", (gen_bgectr, 0x1)), - ("vand", (gen_vand, 0x0)), - ("bgtctr", (gen_bgtctr, 0x0)), - ("ble", (gen_ble, 0x0)), - ("mtdec", (gen_mtdec, 0x0)), - ("bgtctrl+", (gen_bgtctr, 0x200001)), - ("lvehx", (gen_lvehx, 0x0)), - ("ps_nmsub.", (gen_ps_nmsub, 0x1)), - ("mtsrin", (gen_mtsrin, 0x0)), - ("bso-", (gen_bso, 0x200000)), - ("rfi", (gen_rfi, 0x0)), - ("vrlw", (gen_vrlw, 0x0)), - ("bso+", (gen_bso, 0x200000)), - ("oris", (gen_oris, 0x0)), - ("vsrb", (gen_vsrb, 0x0)), - ("addme", (gen_addme, 0x0)), - ("bltctr", (gen_bltctr, 0x0)), - ("subfme", (gen_subfme, 0x0)), - ("addis", (gen_addis, 0x0)), - ("fmadds.", (gen_fmadds, 0x1)), - ("bdz-", (gen_bdz, 0x200000)), - ("xor", (gen_xor, 0x0)), - ("stvewx", (gen_stvewx, 0x0)), - ("ps_muls0", (gen_ps_muls0, 0x0)), - ("bdzfla", (gen_bdzf, 0x3)), - ("mfdec", (gen_mfdec, 0x0)), - ("bdnztl+", (gen_bdnzt, 0x200001)), - ("stfiwx", (gen_stfiwx, 0x0)), - ("vsel128", (gen_vsel128, 0x0)), - ("bdnzlrl", (gen_bdnzlr, 0x1)), - ("rldicr.", (gen_rldicr, 0x1)), - ("mcrxr", (gen_mcrxr, 0x0)), - ("bsola", (gen_bso, 0x3)), - ("vmaddcfp128", (gen_vmaddcfp128, 0x0)), - ("blelr+", (gen_blelr, 0x200000)), - ("clrrwi.", (gen_clrrwi, 0x1)), - ("vaddsbs", (gen_vaddsbs, 0x0)), - ("vpkshss", (gen_vpkshss, 0x0)), - ("divduo.", (gen_divdu, 0x401)), - ("psq_stux", (gen_psq_stux, 0x0)), - ("bns", (gen_bns, 0x0)), - ("nand", (gen_nand, 0x0)), - ("bgt", (gen_bgt, 0x0)), - ("blt+", (gen_blt, 0x200000)), - ("bcctr", (gen_bcctr, 0x0)), - ("bdnztla", (gen_bdnzt, 0x3)), - ("vaddfp", (gen_vaddfp, 0x0)), - ("vpkuwum", (gen_vpkuwum, 0x0)), - ("bsoctr+", (gen_bsoctr, 0x200000)), - ("fctid.", (gen_fctid, 0x1)), - ("subfze.", (gen_subfze, 0x1)), - ("bctr", (gen_bctr, 0x0)), - ("ps_sel", (gen_ps_sel, 0x0)), - ("subfc.", (gen_subfc, 0x1)), - ("addic.", (gen_addic_, 0x0)), - ("vpkuhum", (gen_vpkuhum, 0x0)), - ("clrlwi.", (gen_clrlwi, 0x1)), - ("tdi", (gen_tdi, 0x0)), - ("lhzx", (gen_lhzx, 0x0)), - ("cmpd", (gen_cmpd, 0x0)), - ("mtfsb1", (gen_mtfsb1, 0x0)), - ("vavgub", (gen_vavgub, 0x0)), - ("bdnzfl", (gen_bdnzf, 0x1)), - ("lfsux", (gen_lfsux, 0x0)), - ("vmsumuhs", (gen_vmsumuhs, 0x0)), - ("bgea+", (gen_bge, 0x200002)), - ("nand.", (gen_nand, 0x1)), - ("vsum4sbs", (gen_vsum4sbs, 0x0)), - ("vnmsubfp128", (gen_vnmsubfp128, 0x0)), - ("bdzt+", (gen_bdzt, 0x200000)), - ("vcmpgtsw", (gen_vcmpgtsw, 0x0)), - ("lvewx128", (gen_lvewx128, 0x0)), - ("bdnzfa", (gen_bdnzf, 0x2)), - ("rotlw", (gen_rotlw, 0x0)), - ("vmrghh", (gen_vmrghh, 0x0)), - ("bsol", (gen_bso, 0x1)), - ("bnel+", (gen_bne, 0x200001)), - ("fmr", (gen_fmr, 0x0)), - ("bnelr", (gen_bnelr, 0x0)), - ("mtdar", (gen_mtdar, 0x0)), - ("vcmpequw.", (gen_vcmpequw, 0x400)), - ("vcmpbfp128.", (gen_vcmpbfp128, 0x40)), - ("bnsl", (gen_bns, 0x1)), - ("vupklsb", (gen_vupklsb, 0x0)), - ("vcmpequh", (gen_vcmpequh, 0x0)), - ("ps_nabs.", (gen_ps_nabs, 0x1)), - ("bdnzflrl", (gen_bdnzflr, 0x1)), - ("bgtl-", (gen_bgt, 0x200001)), - ("ps_madds1", (gen_ps_madds1, 0x0)), - ("vspltish", (gen_vspltish, 0x0)), - ("blt-", (gen_blt, 0x200000)), - ("mtfsb1.", (gen_mtfsb1, 0x1)), - ("bl", (gen_b, 0x1)), - ("crnor", (gen_crnor, 0x0)), - ("sraw", (gen_sraw, 0x0)), - ("vor128", (gen_vor128, 0x0)), - ("fsub", (gen_fsub, 0x0)), - ("bdnzla+", (gen_bdnz, 0x200003)), - ("bdnzlr", (gen_bdnzlr, 0x0)), - ("mfdar", (gen_mfdar, 0x0)), - ("stvxl128", (gen_stvxl128, 0x0)), - ("ps_cmpu0", (gen_ps_cmpu0, 0x0)), - ("lvsl128", (gen_lvsl128, 0x0)), - ("bdnzta-", (gen_bdnzt, 0x200002)), - ("mulhwu.", (gen_mulhwu, 0x1)), - ("addc", (gen_addc, 0x0)), - ("bnel", (gen_bne, 0x1)), - ("blelr", (gen_blelr, 0x0)), - ("std", (gen_std, 0x0)), + ("bdnztlr+", (gen_bdnztlr, 0x200000)), + ("vperm128", (gen_vperm128, 0x0)), + ("beqa+", (gen_beq, 0x200002)), + ("ldux", (gen_ldux, 0x0)), + ("neg.", (gen_neg, 0x1)), + ("ps_merge00", (gen_ps_merge00, 0x0)), + ("tdlti", (gen_tdlti, 0x0)), + ("ps_nmsub", (gen_ps_nmsub, 0x0)), + ("psq_lux", (gen_psq_lux, 0x0)), + ("lswi", (gen_lswi, 0x0)), + ("vminsh", (gen_vminsh, 0x0)), + ("bgtlr", (gen_bgtlr, 0x0)), + ("mtvscr", (gen_mtvscr, 0x0)), + ("fmadd.", (gen_fmadd, 0x1)), + ("ldu", (gen_ldu, 0x0)), + ("lhzux", (gen_lhzux, 0x0)), + ("crmove", (gen_crmove, 0x0)), ("ps_muls1", (gen_ps_muls1, 0x0)), - ("bdnzlrl+", (gen_bdnzlr, 0x200001)), - ("ps_merge00.", (gen_ps_merge00, 0x1)), - ("bgea-", (gen_bge, 0x200002)), - ("rldcl.", (gen_rldcl, 0x1)), - ("addi", (gen_addi, 0x0)), - ("divwo.", (gen_divw, 0x401)), - ("vlogefp128", (gen_vlogefp128, 0x0)), - ("vmuleuh", (gen_vmuleuh, 0x0)), - ("vupklpx", (gen_vupklpx, 0x0)), - ("lswx", (gen_lswx, 0x0)), - ("sync", (gen_sync, 0x0)), - ("srw", (gen_srw, 0x0)), - ("mr.", (gen_mr, 0x1)), - ("ps_neg.", (gen_ps_neg, 0x1)), - ("bsoctrl+", (gen_bsoctr, 0x200001)), - ("extsw", (gen_extsw, 0x0)), + ("addme.", (gen_addme, 0x1)), + ("bnel-", (gen_bne, 0x200001)), + ("ps_sel.", (gen_ps_sel, 0x1)), + ("dcbst", (gen_dcbst, 0x0)), + ("dssall", (gen_dssall, 0x0)), + ("mfsr", (gen_mfsr, 0x0)), + ("vsubuws", (gen_vsubuws, 0x0)), + ("fsqrts.", (gen_fsqrts, 0x1)), + ("bgta+", (gen_bgt, 0x200002)), + ("vrlimi128", (gen_vrlimi128, 0x0)), + ("fctid.", (gen_fctid, 0x1)), + ("dcbf", (gen_dcbf, 0x0)), + ("cmpldi", (gen_cmpldi, 0x0)), + ("bctr", (gen_bctr, 0x0)), + ("vmulfp128", (gen_vmulfp128, 0x0)), + ("bdnztla", (gen_bdnzt, 0x3)), + ("bcl-", (gen_bc, 0x200001)), + ("bgea+", (gen_bge, 0x200002)), + ("bgel-", (gen_bge, 0x200001)), + ("twllei", (gen_twllei, 0x0)), + ("mtsrd", (gen_mtsrd, 0x0)), + ("vmulosb", (gen_vmulosb, 0x0)), + ("addme", (gen_addme, 0x0)), + ("divd.", (gen_divd, 0x1)), + ("lhz", (gen_lhz, 0x0)), + ("vmhaddshs", (gen_vmhaddshs, 0x0)), + ("creqv", (gen_creqv, 0x0)), + ("vsldoi", (gen_vsldoi, 0x0)), + ("bgtctr+", (gen_bgtctr, 0x200000)), + ("bdnzfl+", (gen_bdnzf, 0x200001)), + ("stvx", (gen_stvx, 0x0)), + ("stdcx.", (gen_stdcx_, 0x0)), + ("vmladduhm", (gen_vmladduhm, 0x0)), + ("beqctr", (gen_beqctr, 0x0)), + ("stfiwx", (gen_stfiwx, 0x0)), + ("addco", (gen_addc, 0x400)), + ("ps_msub.", (gen_ps_msub, 0x1)), + ("vcmpgtuh", (gen_vcmpgtuh, 0x0)), + ("subfze.", (gen_subfze, 0x1)), + ("ps_merge10.", (gen_ps_merge10, 0x1)), + ("ps_rsqrte", (gen_ps_rsqrte, 0x0)), + ("fdivs", (gen_fdivs, 0x0)), + ("bgta", (gen_bgt, 0x2)), + ("divwuo.", (gen_divwu, 0x401)), + ("subic", (gen_subic, 0x0)), + ("lwzu", (gen_lwzu, 0x0)), + ("fadd", (gen_fadd, 0x0)), + ("lwax", (gen_lwax, 0x0)), + ("fabs", (gen_fabs, 0x0)), + ("beq+", (gen_beq, 0x200000)), + ("bdnzla+", (gen_bdnz, 0x200003)), + ("vmaxuw", (gen_vmaxuw, 0x0)), + ("lvlx128", (gen_lvlx128, 0x0)), + ("fsubs", (gen_fsubs, 0x0)), + ("vmaxsw", (gen_vmaxsw, 0x0)), + ("vmsumubm", (gen_vmsumubm, 0x0)), + ("fcfid", (gen_fcfid, 0x0)), + ("bnela+", (gen_bne, 0x200003)), + ("addis", (gen_addis, 0x0)), + ("vmulosh", (gen_vmulosh, 0x0)), + ("bdztlrl+", (gen_bdztlr, 0x200001)), + ("ps_madds1", (gen_ps_madds1, 0x0)), + ("bdzlr", (gen_bdzlr, 0x0)), + ("vmaddfp", (gen_vmaddfp, 0x0)), + ("vcmpequb.", (gen_vcmpequb, 0x400)), + ("bgel+", (gen_bge, 0x200001)), + ("bnelr", (gen_bnelr, 0x0)), + ("stwx", (gen_stwx, 0x0)), + ("lbzx", (gen_lbzx, 0x0)), + ("vmulesb", (gen_vmulesb, 0x0)), + ("bdza", (gen_bdz, 0x2)), + ("lvewx128", (gen_lvewx128, 0x0)), + ("psq_lx", (gen_psq_lx, 0x0)), + ("psq_stu", (gen_psq_stu, 0x0)), + ("vsububm", (gen_vsububm, 0x0)), + ("srawi.", (gen_srawi, 0x1)), + ("subfic", (gen_subfic, 0x0)), + ("vcfsx", (gen_vcfsx, 0x0)), + ("ps_mul", (gen_ps_mul, 0x0)), + ("rldimi", (gen_rldimi, 0x0)), + ("stwux", (gen_stwux, 0x0)), + ("fres", (gen_fres, 0x0)), + ("vsel", (gen_vsel, 0x0)), + ("bdzta+", (gen_bdzt, 0x200002)), + ("vrsqrtefp", (gen_vrsqrtefp, 0x0)), + ("dcbz", (gen_dcbz, 0x0)), + ("vspltisw", (gen_vspltisw, 0x0)), + ("vcmpequh.", (gen_vcmpequh, 0x400)), + ("ps_mr.", (gen_ps_mr, 0x1)), ("rlwnm", (gen_rlwnm, 0x0)), - ("cmp", (gen_cmp, 0x0)), - ("bdzfl-", (gen_bdzf, 0x200001)), - ("vadduhs", (gen_vadduhs, 0x0)), - ("bnslrl+", (gen_bnslr, 0x200001)), - ("lwsync", (gen_lwsync, 0x0)), - ("vsrab", (gen_vsrab, 0x0)), - ("lvx128", (gen_lvx128, 0x0)), - ("mtdbatu", (gen_mtdbatu, 0x0)), - ("bdzf+", (gen_bdzf, 0x200000)), + ("rldicr", (gen_rldicr, 0x0)), + ("vmaxsh", (gen_vmaxsh, 0x0)), + ("bgectr", (gen_bgectr, 0x0)), + ("subfco", (gen_subfc, 0x400)), + ("stvx128", (gen_stvx128, 0x0)), + ("fdiv", (gen_fdiv, 0x0)), + ("fsqrts", (gen_fsqrts, 0x0)), + ("rldicr.", (gen_rldicr, 0x1)), + ("vsum4ubs", (gen_vsum4ubs, 0x0)), + ("bge-", (gen_bge, 0x200000)), + ("ps_abs.", (gen_ps_abs, 0x1)), + ("lvewx", (gen_lvewx, 0x0)), + ("lhzx", (gen_lhzx, 0x0)), + ("cmpl", (gen_cmpl, 0x0)), + ("bnsa-", (gen_bns, 0x200002)), + ("mtfsf.", (gen_mtfsf, 0x1)), + ("blelr+", (gen_blelr, 0x200000)), + ("bltlr", (gen_bltlr, 0x0)), + ("bdnzfa+", (gen_bdnzf, 0x200002)), + ("vcmpequw128.", (gen_vcmpequw128, 0x40)), + ("vcmpgtfp128.", (gen_vcmpgtfp128, 0x40)), + ("bgtctr", (gen_bgtctr, 0x0)), + ("bsol-", (gen_bso, 0x200001)), + ("nand", (gen_nand, 0x0)), + ("or.", (gen_or, 0x1)), + ("beqctrl", (gen_beqctr, 0x1)), + ("std", (gen_std, 0x0)), + ("dcbtst", (gen_dcbtst, 0x0)), + ("mfsprg", (gen_mfsprg, 0x0)), + ("beqlr", (gen_beqlr, 0x0)), + ("bltla", (gen_blt, 0x3)), + ("vcmpequb", (gen_vcmpequb, 0x0)), + ("lfsx", (gen_lfsx, 0x0)), + ("fsub.", (gen_fsub, 0x1)), + ("vsubsbs", (gen_vsubsbs, 0x0)), + ("bdnzta+", (gen_bdnzt, 0x200002)), + ("cntlzd", (gen_cntlzd, 0x0)), + ("lvlx", (gen_lvlx, 0x0)), + ("bgea-", (gen_bge, 0x200002)), + ("vsubuwm", (gen_vsubuwm, 0x0)), + ("bgtlrl", (gen_bgtlr, 0x1)), + ("bca+", (gen_bc, 0x200002)), + ("mulldo", (gen_mulld, 0x400)), + ("bgtla", (gen_bgt, 0x3)), + ("ps_msub", (gen_ps_msub, 0x0)), + ("divw", (gen_divw, 0x0)), + ("bnsl+", (gen_bns, 0x200001)), + ("eqv", (gen_eqv, 0x0)), + ("and.", (gen_and, 0x1)), + ("dcbt", (gen_dcbt, 0x0)), + ("vmaxuh", (gen_vmaxuh, 0x0)), + ("bdnztla-", (gen_bdnzt, 0x200003)), + ("bdzlrl", (gen_bdzlr, 0x1)), + ("bgela-", (gen_bge, 0x200003)), + ("lis", (gen_lis, 0x0)), + ("bdztlr+", (gen_bdztlr, 0x200000)), + ("vsubfp", (gen_vsubfp, 0x0)), + ("bdnzla", (gen_bdnz, 0x3)), + ("vminuh", (gen_vminuh, 0x0)), + ("ps_neg", (gen_ps_neg, 0x0)), + ("vpkuwus", (gen_vpkuwus, 0x0)), + ("bdnza-", (gen_bdnz, 0x200002)), + ("tdge", (gen_tdge, 0x0)), + ("subfc.", (gen_subfc, 0x1)), + ("ps_sub.", (gen_ps_sub, 0x1)), + ("frsp", (gen_frsp, 0x0)), + ("stdux", (gen_stdux, 0x0)), + ("bdnztlr", (gen_bdnztlr, 0x0)), + ("vsplth", (gen_vsplth, 0x0)), + ("vminfp128", (gen_vminfp128, 0x0)), + ("mfsrin", (gen_mfsrin, 0x0)), + ("twlge", (gen_twlge, 0x0)), + ("bgtctrl", (gen_bgtctr, 0x1)), + ("sradi", (gen_sradi, 0x0)), + ("vupkhsh128", (gen_vupkhsh128, 0x0)), + ("fnmadd.", (gen_fnmadd, 0x1)), + ("mtibatl", (gen_mtibatl, 0x0)), + ("bnsla-", (gen_bns, 0x200003)), + ("vaddfp128", (gen_vaddfp128, 0x0)), + ("ps_abs", (gen_ps_abs, 0x0)), + ("tweq", (gen_tweq, 0x0)), + ("mfmsr", (gen_mfmsr, 0x0)), + ("vsubuhm", (gen_vsubuhm, 0x0)), + ("vmulesh", (gen_vmulesh, 0x0)), + ("bdnz-", (gen_bdnz, 0x200000)), + ("bdnzfla+", (gen_bdnzf, 0x200003)), + ("bdzflrl+", (gen_bdzflr, 0x200001)), + ("mtcrf", (gen_mtcrf, 0x0)), + ("mfsrr1", (gen_mfsrr1, 0x0)), + ("fadds", (gen_fadds, 0x0)), + ("addco.", (gen_addc, 0x401)), + ("divdo.", (gen_divd, 0x401)), + ("fmsubs.", (gen_fmsubs, 0x1)), + ("psq_stux", (gen_psq_stux, 0x0)), + ("lvx", (gen_lvx, 0x0)), + ("lhau", (gen_lhau, 0x0)), + ("rlwimi.", (gen_rlwimi, 0x1)), + ("bnectrl", (gen_bnectr, 0x1)), + ("rlwinm", (gen_rlwinm, 0x0)), + ("bdzfa-", (gen_bdzf, 0x200002)), + ("mr.", (gen_mr, 0x1)), + ("eieio", (gen_eieio, 0x0)), + ("vmrglw", (gen_vmrglw, 0x0)), + ("vmsum4fp128", (gen_vmsum4fp128, 0x0)), + ("clrlslwi", (gen_clrlslwi, 0x0)), + ("fmsub", (gen_fmsub, 0x0)), + ("vmaxfp", (gen_vmaxfp, 0x0)), + ("addmeo", (gen_addme, 0x400)), + ("b", (gen_b, 0x0)), + ("bdzt+", (gen_bdzt, 0x200000)), + ("vminuw", (gen_vminuw, 0x0)), + ("subis", (gen_subis, 0x0)), + ("vmrghw128", (gen_vmrghw128, 0x0)), + ("lvrx", (gen_lvrx, 0x0)), + ("lwa", (gen_lwa, 0x0)), + ("ps_madds1.", (gen_ps_madds1, 0x1)), + ("rfi", (gen_rfi, 0x0)), + ("vsro", (gen_vsro, 0x0)), + ("bctrl", (gen_bctr, 0x1)), + ("stswi", (gen_stswi, 0x0)), + ("bnsl-", (gen_bns, 0x200001)), + ("bdzfla", (gen_bdzf, 0x3)), + ("rldcr", (gen_rldcr, 0x0)), + ("bltlrl", (gen_bltlr, 0x1)), + ("cmplwi", (gen_cmplwi, 0x0)), + ("ps_add.", (gen_ps_add, 0x1)), + ("clrlwi", (gen_clrlwi, 0x0)), + ("crnor", (gen_crnor, 0x0)), + ("blel+", (gen_ble, 0x200001)), + ("tdnei", (gen_tdnei, 0x0)), + ("cmpw", (gen_cmpw, 0x0)), + ("divw.", (gen_divw, 0x1)), + ("blela+", (gen_ble, 0x200003)), + ("bsoa", (gen_bso, 0x2)), ("vpkuhus128", (gen_vpkuhus128, 0x0)), + ("mfdbatu", (gen_mfdbatu, 0x0)), + ("srwi", (gen_srwi, 0x0)), + ("mtxer", (gen_mtxer, 0x0)), + ("mtsrr0", (gen_mtsrr0, 0x0)), + ("mullw", (gen_mullw, 0x0)), + ("mfctr", (gen_mfctr, 0x0)), + ("bdzfla+", (gen_bdzf, 0x200003)), + ("lvsl", (gen_lvsl, 0x0)), + ("bltl", (gen_blt, 0x1)), + ("subfe.", (gen_subfe, 0x1)), + ("mulhdu", (gen_mulhdu, 0x0)), + ("fcmpu", (gen_fcmpu, 0x0)), + ("blea", (gen_ble, 0x2)), + ("bdnzf+", (gen_bdnzf, 0x200000)), + ("vctsxs", (gen_vctsxs, 0x0)), + ("subfzeo.", (gen_subfze, 0x401)), + ("bdztlrl", (gen_bdztlr, 0x1)), + ("vcmpgtsh", (gen_vcmpgtsh, 0x0)), + ("stfdx", (gen_stfdx, 0x0)), + ("add", (gen_add, 0x0)), + ("bnsa+", (gen_bns, 0x200002)), + ("ps_sub", (gen_ps_sub, 0x0)), + ("bdnzflr+", (gen_bdnzflr, 0x200000)), + ("bdza+", (gen_bdz, 0x200002)), + ("blectr+", (gen_blectr, 0x200000)), + ("vcfux128", (gen_vcfux128, 0x0)), + ("bdzta-", (gen_bdzt, 0x200002)), + ("lbz", (gen_lbz, 0x0)), + ("beql-", (gen_beq, 0x200001)), + ("bdzl+", (gen_bdz, 0x200001)), + ("fnmadds.", (gen_fnmadds, 0x1)), + ("crand", (gen_crand, 0x0)), + ("lmw", (gen_lmw, 0x0)), + ("beqla", (gen_beq, 0x3)), + ("beqlr+", (gen_beqlr, 0x200000)), + ("bdnzfa-", (gen_bdnzf, 0x200002)), + ("vmulouh", (gen_vmulouh, 0x0)), + ("bdzfl", (gen_bdzf, 0x1)), + ("bdnzfl", (gen_bdnzf, 0x1)), + ("bsoa+", (gen_bso, 0x200002)), + ("bge+", (gen_bge, 0x200000)), + ("vpkshus128", (gen_vpkshus128, 0x0)), + ("bltctr+", (gen_bltctr, 0x200000)), + ("vcmpeqfp128", (gen_vcmpeqfp128, 0x0)), + ("stdx", (gen_stdx, 0x0)), + ("fneg", (gen_fneg, 0x0)), + ("subic.", (gen_subic_, 0x0)), + ("vupklsh", (gen_vupklsh, 0x0)), + ("vmsumuhm", (gen_vmsumuhm, 0x0)), + ("mtdsisr", (gen_mtdsisr, 0x0)), + ("mulhw", (gen_mulhw, 0x0)), + ("vcmpgtuw", (gen_vcmpgtuw, 0x0)), + ("ps_mr", (gen_ps_mr, 0x0)), + ("bgtla-", (gen_bgt, 0x200003)), + ("subfeo.", (gen_subfe, 0x401)), + ("twgti", (gen_twgti, 0x0)), + ("blrl", (gen_blr, 0x1)), + ("vpermwi128", (gen_vpermwi128, 0x0)), + ("extlwi.", (gen_extlwi, 0x1)), + ("vcmpgtsb", (gen_vcmpgtsb, 0x0)), + ("rlwnm.", (gen_rlwnm, 0x1)), + ("vslw128", (gen_vslw128, 0x0)), + ("rldcr.", (gen_rldcr, 0x1)), + ("vpkswus128", (gen_vpkswus128, 0x0)), + ("addeo", (gen_adde, 0x400)), + ("bnsctrl", (gen_bnsctr, 0x1)), + ("beqa", (gen_beq, 0x2)), + ("bc+", (gen_bc, 0x200000)), + ("lvrxl", (gen_lvrxl, 0x0)), + ("vsubshs", (gen_vsubshs, 0x0)), + ("bnel", (gen_bne, 0x1)), + ("mttbu", (gen_mttbu, 0x0)), + ("tlbie", (gen_tlbie, 0x0)), + ("bso+", (gen_bso, 0x200000)), + ("mtsrr1", (gen_mtsrr1, 0x0)), + ("mtsprg", (gen_mtsprg, 0x0)), + ("fsqrt", (gen_fsqrt, 0x0)), + ("mftb", (gen_mftb, 0x0)), + ("bdzt", (gen_bdzt, 0x0)), + ("addze", (gen_addze, 0x0)), + ("stvewx", (gen_stvewx, 0x0)), + ("rlwimi", (gen_rlwimi, 0x0)), + ("mfibatl", (gen_mfibatl, 0x0)), + ("bdzf-", (gen_bdzf, 0x200000)), + ("vctsxs128", (gen_vctsxs128, 0x0)), + ("vrfin", (gen_vrfin, 0x0)), + ("cmplw", (gen_cmplw, 0x0)), + ("twui", (gen_twui, 0x0)), + ("xori", (gen_xori, 0x0)), + ("lwzux", (gen_lwzux, 0x0)), + ("bdnzfla", (gen_bdnzf, 0x3)), + ("bgtl", (gen_bgt, 0x1)), + ("fadds.", (gen_fadds, 0x1)), + ("vsrah", (gen_vsrah, 0x0)), + ("ps_nmadd", (gen_ps_nmadd, 0x0)), + ("ps_merge01", (gen_ps_merge01, 0x0)), + ("lwsync", (gen_lwsync, 0x0)), + ("oris", (gen_oris, 0x0)), + ("icbi.", (gen_icbi, 0x1)), + ("lvsr", (gen_lvsr, 0x0)), + ("vcmpgtsw.", (gen_vcmpgtsw, 0x400)), + ("srw", (gen_srw, 0x0)), + ("cntlzw", (gen_cntlzw, 0x0)), + ("bgectr+", (gen_bgectr, 0x200000)), + ("mtfsb1", (gen_mtfsb1, 0x0)), + ("vspltw128", (gen_vspltw128, 0x0)), + ("bnela-", (gen_bne, 0x200003)), + ("vspltisw128", (gen_vspltisw128, 0x0)), + ("vupkhsb", (gen_vupkhsb, 0x0)), + ("vsr", (gen_vsr, 0x0)), + ("vmrghh", (gen_vmrghh, 0x0)), + ("mtdbatl", (gen_mtdbatl, 0x0)), + ("sthu", (gen_sthu, 0x0)), + ("ps_res", (gen_ps_res, 0x0)), + ("vxor128", (gen_vxor128, 0x0)), + ("vcmpgefp.", (gen_vcmpgefp, 0x400)), + ("sld", (gen_sld, 0x0)), + ("bdnzta-", (gen_bdnzt, 0x200002)), + ("ps_madd", (gen_ps_madd, 0x0)), + ("icbi", (gen_icbi, 0x0)), + ("vaddshs", (gen_vaddshs, 0x0)), + ("bne-", (gen_bne, 0x200000)), + ("bdnz", (gen_bdnz, 0x0)), + ("sync", (gen_sync, 0x0)), + ("mtsrdin", (gen_mtsrdin, 0x0)), + ("bca-", (gen_bc, 0x200002)), + ("bdztl", (gen_bdzt, 0x1)), + ("extsh", (gen_extsh, 0x0)), + ("extlwi", (gen_extlwi, 0x0)), + ("beqla-", (gen_beq, 0x200003)), + ("divwo", (gen_divw, 0x400)), + ("vmrglw128", (gen_vmrglw128, 0x0)), + ("vupklpx", (gen_vupklpx, 0x0)), + ("ble+", (gen_ble, 0x200000)), + ("dcbz_l", (gen_dcbz_l, 0x0)), + ("stfs", (gen_stfs, 0x0)), + ("mulhwu", (gen_mulhwu, 0x0)), + ("fcfid.", (gen_fcfid, 0x1)), + ("vpkshss", (gen_vpkshss, 0x0)), + ("mtfsf", (gen_mtfsf, 0x0)), + ("fnabs", (gen_fnabs, 0x0)), + ("vspltisb", (gen_vspltisb, 0x0)), + ("andis.", (gen_andis_, 0x0)), + ("vcmpbfp128.", (gen_vcmpbfp128, 0x40)), + ("extsw.", (gen_extsw, 0x1)), + ("crnand", (gen_crnand, 0x0)), + ("mtdec", (gen_mtdec, 0x0)), + ("stvlx128", (gen_stvlx128, 0x0)), + ("vnor128", (gen_vnor128, 0x0)), + ("fnmsub", (gen_fnmsub, 0x0)), + ("dcbi", (gen_dcbi, 0x0)), + ("vminsb", (gen_vminsb, 0x0)), + ("bdnzflrl", (gen_bdnzflr, 0x1)), + ("ble-", (gen_ble, 0x200000)), + ("subfe", (gen_subfe, 0x0)), + ("addic", (gen_addic, 0x0)), + ("cmpld", (gen_cmpld, 0x0)), + ("vexptefp128", (gen_vexptefp128, 0x0)), + ("fmsub.", (gen_fmsub, 0x1)), + ("mtfsfi", (gen_mtfsfi, 0x0)), + ("bnea-", (gen_bne, 0x200002)), + ("ps_merge00.", (gen_ps_merge00, 0x1)), + ("stfsu", (gen_stfsu, 0x0)), + ("beqlrl+", (gen_beqlr, 0x200001)), + ("beql", (gen_beq, 0x1)), + ("slwi.", (gen_slwi, 0x1)), + ("mtfsb0", (gen_mtfsb0, 0x0)), + ("ps_merge11.", (gen_ps_merge11, 0x1)), + ("vcmpgtfp128", (gen_vcmpgtfp128, 0x0)), + ("vctuxs128", (gen_vctuxs128, 0x0)), + ("mcrfs", (gen_mcrfs, 0x0)), + ("bnsctrl+", (gen_bnsctr, 0x200001)), + ("addo", (gen_add, 0x400)), + ("ptesync", (gen_ptesync, 0x0)), + ("bdnztla+", (gen_bdnzt, 0x200003)), + ("sthx", (gen_sthx, 0x0)), + ("bgelrl+", (gen_bgelr, 0x200001)), + ("fctid", (gen_fctid, 0x0)), + ("extsw", (gen_extsw, 0x0)), + ("trap", (gen_trap, 0x0)), + ("vlogefp", (gen_vlogefp, 0x0)), + ("fcmpo", (gen_fcmpo, 0x0)), + ("fnmsubs.", (gen_fnmsubs, 0x1)), + ("vrefp", (gen_vrefp, 0x0)), + ("bdzfa+", (gen_bdzf, 0x200002)), + ("add.", (gen_add, 0x1)), + ("vsubcuw", (gen_vsubcuw, 0x0)), + ("fctiw.", (gen_fctiw, 0x1)), + ("srad.", (gen_srad, 0x1)), + ("lvxl", (gen_lvxl, 0x0)), + ("stfsx", (gen_stfsx, 0x0)), + ("rldic", (gen_rldic, 0x0)), + ("vand", (gen_vand, 0x0)), + ("vupklsh128", (gen_vupklsh128, 0x0)), + ("lfsu", (gen_lfsu, 0x0)), + ("fsub", (gen_fsub, 0x0)), + ("frsp.", (gen_frsp, 0x1)), + ("bgectrl", (gen_bgectr, 0x1)), + ("bdzflr", (gen_bdzflr, 0x0)), + ("bca", (gen_bc, 0x2)), + ("bdz+", (gen_bdz, 0x200000)), + ("vpkuwum128", (gen_vpkuwum128, 0x0)), + ("mtdbatu", (gen_mtdbatu, 0x0)), + ("bdztl+", (gen_bdzt, 0x200001)), + ("subfeo", (gen_subfe, 0x400)), + ("bgelr", (gen_bgelr, 0x0)), + ("vupklsb128", (gen_vupklsb128, 0x0)), + ("lwaux", (gen_lwaux, 0x0)), + ("tw", (gen_tw, 0x0)), + ("stdu", (gen_stdu, 0x0)), + ("bltlrl+", (gen_bltlr, 0x200001)), + ("fadd.", (gen_fadd, 0x1)), + ("divwo.", (gen_divw, 0x401)), + ("cmpdi", (gen_cmpdi, 0x0)), + ("psq_lu", (gen_psq_lu, 0x0)), + ("mfspr", (gen_mfspr, 0x0)), + ("bgtctrl+", (gen_bgtctr, 0x200001)), + ("fnmsubs", (gen_fnmsubs, 0x0)), + ("ps_mul.", (gen_ps_mul, 0x1)), + ("bgectrl+", (gen_bgectr, 0x200001)), + ("rldic.", (gen_rldic, 0x1)), + ("ps_merge11", (gen_ps_merge11, 0x0)), + ("bdnzl+", (gen_bdnz, 0x200001)), + ("mfsrr0", (gen_mfsrr0, 0x0)), + ("crorc", (gen_crorc, 0x0)), + ("vcmpgtuh.", (gen_vcmpgtuh, 0x400)), + ("dstt", (gen_dst, 0x2000000)), + ("fnmsub.", (gen_fnmsub, 0x1)), + ("bclr+", (gen_bclr, 0x200000)), + ("stwbrx", (gen_stwbrx, 0x0)), + ("vspltw", (gen_vspltw, 0x0)), + ("vcmpgtsw", (gen_vcmpgtsw, 0x0)), + ("subf", (gen_subf, 0x0)), + ("addc", (gen_addc, 0x0)), + ("lvsl128", (gen_lvsl128, 0x0)), + ("bgt", (gen_bgt, 0x0)), + ("subfmeo.", (gen_subfme, 0x401)), + ("bltctrl+", (gen_bltctr, 0x200001)), + ("vcmpgtsb.", (gen_vcmpgtsb, 0x400)), + ("fnabs.", (gen_fnabs, 0x1)), + ("subfo", (gen_subf, 0x400)), + ("fabs.", (gen_fabs, 0x1)), + ("bgelr+", (gen_bgelr, 0x200000)), + ("bsola", (gen_bso, 0x3)), + ("bcctr+", (gen_bcctr, 0x200000)), + ("bne", (gen_bne, 0x0)), + ("bgtlrl+", (gen_bgtlr, 0x200001)), + ("fneg.", (gen_fneg, 0x1)), + ("ecowx", (gen_ecowx, 0x0)), + ("lfdx", (gen_lfdx, 0x0)), + ("vcmpgtuw.", (gen_vcmpgtuw, 0x400)), + ("bdzlrl+", (gen_bdzlr, 0x200001)), + ("rldicl", (gen_rldicl, 0x0)), + ("bnelrl+", (gen_bnelr, 0x200001)), + ("bns+", (gen_bns, 0x200000)), + ("fctidz", (gen_fctidz, 0x0)), + ("vmrghw", (gen_vmrghw, 0x0)), + ("bsoctrl", (gen_bsoctr, 0x1)), + ("bcctrl", (gen_bcctr, 0x1)), + ("bgela+", (gen_bge, 0x200003)), + ("bdnzta", (gen_bdnzt, 0x2)), + ("fmadds", (gen_fmadds, 0x0)), + ("fmuls", (gen_fmuls, 0x0)), + ("bdztl-", (gen_bdzt, 0x200001)), + ("bdnza+", (gen_bdnz, 0x200002)), + ("bnslrl", (gen_bnslr, 0x1)), + ("bcla", (gen_bc, 0x3)), + ("mfibatu", (gen_mfibatu, 0x0)), + ("mtear", (gen_mtear, 0x0)), + ("vsrw128", (gen_vsrw128, 0x0)), + ("beq", (gen_beq, 0x0)), + ("lvlxl", (gen_lvlxl, 0x0)), + ("mullw.", (gen_mullw, 0x1)), + ("bdzlr+", (gen_bdzlr, 0x200000)), + ("bcl+", (gen_bc, 0x200001)), + ("bla", (gen_b, 0x3)), + ("vupkd3d128", (gen_vupkd3d128, 0x0)), + ("tdlnl", (gen_tdlnl, 0x0)), + ("vspltish", (gen_vspltish, 0x0)), + ("lfd", (gen_lfd, 0x0)), + ("ps_div.", (gen_ps_div, 0x1)), + ("lfsux", (gen_lfsux, 0x0)), + ("divduo.", (gen_divdu, 0x401)), + ("addeo.", (gen_adde, 0x401)), + ("rotlwi", (gen_rotlwi, 0x0)), + ("ps_sel", (gen_ps_sel, 0x0)), + ("stvehx", (gen_stvehx, 0x0)), + ("clrrwi", (gen_clrrwi, 0x0)), + ("nego.", (gen_neg, 0x401)), + ("twi", (gen_twi, 0x0)), + ("bdnztl-", (gen_bdnzt, 0x200001)), + ("vsrw", (gen_vsrw, 0x0)), + ("fnmadd", (gen_fnmadd, 0x0)), + ("vperm", (gen_vperm, 0x0)), + ("vaddfp", (gen_vaddfp, 0x0)), + ("mffs", (gen_mffs, 0x0)), + ("mflr", (gen_mflr, 0x0)), + ("bdzla+", (gen_bdz, 0x200003)), + ("crset", (gen_crset, 0x0)), + ("bsolrl", (gen_bsolr, 0x1)), + ("bdzla-", (gen_bdz, 0x200003)), + ("mulhd", (gen_mulhd, 0x0)), + ("blt+", (gen_blt, 0x200000)), + ("cntlzd.", (gen_cntlzd, 0x1)), + ("addic.", (gen_addic_, 0x0)), + ("bsoctr", (gen_bsoctr, 0x0)), + ("vmaxfp128", (gen_vmaxfp128, 0x0)), + ("vpkshss128", (gen_vpkshss128, 0x0)), + ("vmrglb", (gen_vmrglb, 0x0)), + ("bdzl-", (gen_bdz, 0x200001)), + ("xor.", (gen_xor, 0x1)), + ("vrfiz", (gen_vrfiz, 0x0)), + ("slbia", (gen_slbia, 0x0)), + ("stvlxl", (gen_stvlxl, 0x0)), + ("mtctr", (gen_mtctr, 0x0)), + ("dss", (gen_dss, 0x0)), + ("mullwo", (gen_mullw, 0x400)), + ("stvlxl128", (gen_stvlxl128, 0x0)), + ("vcmpgtub.", (gen_vcmpgtub, 0x400)), + ("bso", (gen_bso, 0x0)), + ("stbu", (gen_stbu, 0x0)), + ("bdnzlr+", (gen_bdnzlr, 0x200000)), + ("vupkhpx", (gen_vupkhpx, 0x0)), + ("bdztla-", (gen_bdzt, 0x200003)), + ("vsrb", (gen_vsrb, 0x0)), + ("bdnzt", (gen_bdnzt, 0x0)), + ("rotrwi", (gen_rotrwi, 0x0)), + ("divwu", (gen_divwu, 0x0)), + ("vcmpequw", (gen_vcmpequw, 0x0)), + ("bc", (gen_bc, 0x0)), + ("mtmsrd", (gen_mtmsrd, 0x0)), + ("bsola+", (gen_bso, 0x200003)), + ("mtfsfi.", (gen_mtfsfi, 0x1)), + ("rldimi.", (gen_rldimi, 0x1)), + ("bcctrl+", (gen_bcctr, 0x200001)), + ("bnelrl", (gen_bnelr, 0x1)), + ("bclr", (gen_bclr, 0x0)), + ("psq_l", (gen_psq_l, 0x0)), + ("nand.", (gen_nand, 0x1)), + ("bdzflr+", (gen_bdzflr, 0x200000)), + ("clrrwi.", (gen_clrrwi, 0x1)), + ("mulhd.", (gen_mulhd, 0x1)), + ("clrlslwi.", (gen_clrlslwi, 0x1)), + ("vnor", (gen_vnor, 0x0)), + ("bltlr+", (gen_bltlr, 0x200000)), + ("vadduwm", (gen_vadduwm, 0x0)), + ("ps_rsqrte.", (gen_ps_rsqrte, 0x1)), + ("srw.", (gen_srw, 0x1)), + ("vcmpbfp", (gen_vcmpbfp, 0x0)), + ("subfmeo", (gen_subfme, 0x400)), + ("bdnztlrl", (gen_bdnztlr, 0x1)), + ("bdnza", (gen_bdnz, 0x2)), + ("or", (gen_or, 0x0)), + ("rotld.", (gen_rotld, 0x1)), + ("bgtl+", (gen_bgt, 0x200001)), + ("lvrxl128", (gen_lvrxl128, 0x0)), + ("bsoctrl+", (gen_bsoctr, 0x200001)), + ("addzeo.", (gen_addze, 0x401)), + ("beqlrl", (gen_beqlr, 0x1)), + ("bgta-", (gen_bgt, 0x200002)), + ("mtmsr", (gen_mtmsr, 0x0)), + ("fmul", (gen_fmul, 0x0)), + ("ldarx", (gen_ldarx, 0x0)), + ("vaddsws", (gen_vaddsws, 0x0)), + ("adde.", (gen_adde, 0x1)), + ("mfcr", (gen_mfcr, 0x0)), + ("divduo", (gen_divdu, 0x400)), + ("vpkpx", (gen_vpkpx, 0x0)), + ("mfdsisr", (gen_mfdsisr, 0x0)), + ("blea+", (gen_ble, 0x200002)), + ("mfdbatl", (gen_mfdbatl, 0x0)), + ("mulli", (gen_mulli, 0x0)), + ("blea-", (gen_ble, 0x200002)), + ("cror", (gen_cror, 0x0)), + ("bgea", (gen_bge, 0x2)), + ("vrfiz128", (gen_vrfiz128, 0x0)), + ("bdzt-", (gen_bdzt, 0x200000)), + ("sraw", (gen_sraw, 0x0)), + ("vpkshus", (gen_vpkshus, 0x0)), + ("vsel128", (gen_vsel128, 0x0)), + ("vnmsubfp", (gen_vnmsubfp, 0x0)), + ("vrlb", (gen_vrlb, 0x0)), + ("tlbsync", (gen_tlbsync, 0x0)), + ("sradi.", (gen_sradi, 0x1)), + ("vmaxub", (gen_vmaxub, 0x0)), + ("fdiv.", (gen_fdiv, 0x1)), + ("vslw", (gen_vslw, 0x0)), + ("subfme", (gen_subfme, 0x0)), + ("mfear", (gen_mfear, 0x0)), + ("rldicl.", (gen_rldicl, 0x1)), + ("beqctrl+", (gen_beqctr, 0x200001)), + ("vminsw", (gen_vminsw, 0x0)), + ("ps_cmpo0", (gen_ps_cmpo0, 0x0)), + ("vrlw", (gen_vrlw, 0x0)), + ("mtsrin", (gen_mtsrin, 0x0)), + ("fsubs.", (gen_fsubs, 0x1)), + ("rldcl", (gen_rldcl, 0x0)), + ("bdnztl", (gen_bdnzt, 0x1)), + ("fctidz.", (gen_fctidz, 0x1)), + ("ps_sum0", (gen_ps_sum0, 0x0)), + ("frsqrte.", (gen_frsqrte, 0x1)), + ("bsolr+", (gen_bsolr, 0x200000)), + ("vaddsbs", (gen_vaddsbs, 0x0)), + ("bnela", (gen_bne, 0x3)), + ("rotlwi.", (gen_rotlwi, 0x1)), + ("vsum4sbs", (gen_vsum4sbs, 0x0)), + ("vmuloub", (gen_vmuloub, 0x0)), + ("vpkswus", (gen_vpkswus, 0x0)), + ("bgtl-", (gen_bgt, 0x200001)), + ("vcmpgefp", (gen_vcmpgefp, 0x0)), + ("dcbzl", (gen_dcbzl, 0x0)), + ("mulld.", (gen_mulld, 0x1)), + ("slbie", (gen_slbie, 0x0)), + ("subfo.", (gen_subf, 0x401)), + ("bnsl", (gen_bns, 0x1)), + ("stbx", (gen_stbx, 0x0)), + ("mulldo.", (gen_mulld, 0x401)), + ("vrfim128", (gen_vrfim128, 0x0)), + ("vcmpgefp128.", (gen_vcmpgefp128, 0x40)), + ("mfvscr", (gen_mfvscr, 0x0)), + ("mfdar", (gen_mfdar, 0x0)), + ("vsro128", (gen_vsro128, 0x0)), + ("mulld", (gen_mulld, 0x0)), + ("vandc", (gen_vandc, 0x0)), + ("bdzta", (gen_bdzt, 0x2)), + ("stwu", (gen_stwu, 0x0)), + ("addc.", (gen_addc, 0x1)), + ("tdi", (gen_tdi, 0x0)), + ("ps_muls1.", (gen_ps_muls1, 0x1)), + ("bgt-", (gen_bgt, 0x200000)), + ("vaddcuw", (gen_vaddcuw, 0x0)), + ("lvebx", (gen_lvebx, 0x0)), + ("vadduws", (gen_vadduws, 0x0)), + ("bdnzflr", (gen_bdnzflr, 0x0)), + ("vminfp", (gen_vminfp, 0x0)), + ("lbzux", (gen_lbzux, 0x0)), + ("vcmpeqfp128.", (gen_vcmpeqfp128, 0x40)), + ("blectr", (gen_blectr, 0x0)), + ("addmeo.", (gen_addme, 0x401)), + ("vmsumuhs", (gen_vmsumuhs, 0x0)), + ("vavguh", (gen_vavguh, 0x0)), + ("vrefp128", (gen_vrefp128, 0x0)), + ("rotrwi.", (gen_rotrwi, 0x1)), + ("bsol", (gen_bso, 0x1)), + ("orc", (gen_orc, 0x0)), + ("vslo", (gen_vslo, 0x0)), + ("vsrh", (gen_vsrh, 0x0)), + ("vslb", (gen_vslb, 0x0)), + ("addi", (gen_addi, 0x0)), + ("lhzu", (gen_lhzu, 0x0)), + ("eqv.", (gen_eqv, 0x1)), + ("fctiwz", (gen_fctiwz, 0x0)), + ("vsraw128", (gen_vsraw128, 0x0)), + ("cmpli", (gen_cmpli, 0x0)), + ("vrlw128", (gen_vrlw128, 0x0)), + ("ps_madd.", (gen_ps_madd, 0x1)), + ("bnel+", (gen_bne, 0x200001)), + ("ps_madds0.", (gen_ps_madds0, 0x1)), + ("vcfux", (gen_vcfux, 0x0)), + ("bns", (gen_bns, 0x0)), + ("bgt+", (gen_bgt, 0x200000)), + ("extrwi.", (gen_extrwi, 0x1)), + ("bnslrl+", (gen_bnslr, 0x200001)), + ("lfdu", (gen_lfdu, 0x0)), + ("vrfip128", (gen_vrfip128, 0x0)), + ("vmsum3fp128", (gen_vmsum3fp128, 0x0)), + ("bnsla", (gen_bns, 0x3)), + ("vandc128", (gen_vandc128, 0x0)), + ("lha", (gen_lha, 0x0)), + ("stvxl", (gen_stvxl, 0x0)), + ("bgelrl", (gen_bgelr, 0x1)), + ("ps_res.", (gen_ps_res, 0x1)), + ("bcla-", (gen_bc, 0x200003)), + ("bdz-", (gen_bdz, 0x200000)), + ("lbzu", (gen_lbzu, 0x0)), + ("lwzx", (gen_lwzx, 0x0)), + ("bdzfa", (gen_bdzf, 0x2)), + ("vsl", (gen_vsl, 0x0)), + ("vslo128", (gen_vslo128, 0x0)), + ("bsolrl+", (gen_bsolr, 0x200001)), + ("ps_nmsub.", (gen_ps_nmsub, 0x1)), + ("bgtla+", (gen_bgt, 0x200003)), + ("subfzeo", (gen_subfze, 0x400)), + ("bsolr", (gen_bsolr, 0x0)), + ("ps_div", (gen_ps_div, 0x0)), + ("cmpi", (gen_cmpi, 0x0)), + ("srd.", (gen_srd, 0x1)), + ("vpkd3d128", (gen_vpkd3d128, 0x0)), + ("crnot", (gen_crnot, 0x0)), + ("blela-", (gen_ble, 0x200003)), + ("vavgsw", (gen_vavgsw, 0x0)), + ("addze.", (gen_addze, 0x1)), + ("psq_st", (gen_psq_st, 0x0)), + ("bdzflrl", (gen_bdzflr, 0x1)), + ("stvrx", (gen_stvrx, 0x0)), + ("xor", (gen_xor, 0x0)), + ("bnea+", (gen_bne, 0x200002)), + ("bdnzf-", (gen_bdnzf, 0x200000)), + ("addzeo", (gen_addze, 0x400)), + ("divdu", (gen_divdu, 0x0)), + ("blr", (gen_blr, 0x0)), + ("lvrx128", (gen_lvrx128, 0x0)), + ("srwi.", (gen_srwi, 0x1)), + ("bdnzt+", (gen_bdnzt, 0x200000)), + ("andc", (gen_andc, 0x0)), + ("vminub", (gen_vminub, 0x0)), + ("vnot", (gen_vnot, 0x0)), + ("mulhdu.", (gen_mulhdu, 0x1)), + ("bnectr+", (gen_bnectr, 0x200000)), + ("vsum4shs", (gen_vsum4shs, 0x0)), + ("bdz", (gen_bdz, 0x0)), + ("bdztla+", (gen_bdzt, 0x200003)), + ("vsldoi128", (gen_vsldoi128, 0x0)), + ("nor", (gen_nor, 0x0)), + ("blelrl", (gen_blelr, 0x1)), + ("lvlxl128", (gen_lvlxl128, 0x0)), + ("stvrxl", (gen_stvrxl, 0x0)), + ("isync", (gen_isync, 0x0)), + ("ps_cmpu1", (gen_ps_cmpu1, 0x0)), + ("mtspr", (gen_mtspr, 0x0)), + ("mttbl", (gen_mttbl, 0x0)), + ("vsububs", (gen_vsububs, 0x0)), + ("bdnzfla-", (gen_bdnzf, 0x200003)), + ("crclr", (gen_crclr, 0x0)), + ("crandc", (gen_crandc, 0x0)), + ("extsb.", (gen_extsb, 0x1)), + ("mfsdr1", (gen_mfsdr1, 0x0)), + ("ps_sum1.", (gen_ps_sum1, 0x1)), + ("bcla+", (gen_bc, 0x200003)), + ("lvx128", (gen_lvx128, 0x0)), + ("bdzl", (gen_bdz, 0x1)), + ("sthbrx", (gen_sthbrx, 0x0)), + ("vavgub", (gen_vavgub, 0x0)), + ("bgtlr+", (gen_bgtlr, 0x200000)), + ("mullwo.", (gen_mullw, 0x401)), + ("bdnzlrl", (gen_bdnzlr, 0x1)), + ("rldcl.", (gen_rldcl, 0x1)), + ("bsoa-", (gen_bso, 0x200002)), + ("blt-", (gen_blt, 0x200000)), + ("vrfim", (gen_vrfim, 0x0)), + ("ps_merge01.", (gen_ps_merge01, 0x1)), + ("lvehx", (gen_lvehx, 0x0)), + ("blela", (gen_ble, 0x3)), + ("vsubsws", (gen_vsubsws, 0x0)), + ("vadduhm", (gen_vadduhm, 0x0)), + ("fmuls.", (gen_fmuls, 0x1)), + ("andi.", (gen_andi_, 0x0)), + ("bdnzlr", (gen_bdnzlr, 0x0)), + ("lhax", (gen_lhax, 0x0)), + ("vor128", (gen_vor128, 0x0)), + ("stswx", (gen_stswx, 0x0)), + ("vmaddcfp128", (gen_vmaddcfp128, 0x0)), + ("mr", (gen_mr, 0x0)), + ("vavgsb", (gen_vavgsb, 0x0)), + ("nop", (gen_nop, 0x0)), + ("stfd", (gen_stfd, 0x0)), + ("vmaddfp128", (gen_vmaddfp128, 0x0)), + ("stfdu", (gen_stfdu, 0x0)), + ("nego", (gen_neg, 0x400)), + ("mtsdr1", (gen_mtsdr1, 0x0)), + ("blta-", (gen_blt, 0x200002)), + ("ps_neg.", (gen_ps_neg, 0x1)), + ("andc.", (gen_andc, 0x1)), + ("subi", (gen_subi, 0x0)), + ("bsola-", (gen_bso, 0x200003)), ("vmhraddshs", (gen_vmhraddshs, 0x0)), ("ldx", (gen_ldx, 0x0)), - ("rldcr.", (gen_rldcr, 0x1)), - ("bdnzfla-", (gen_bdnzf, 0x200003)), - ("mtfsb0", (gen_mtfsb0, 0x0)), - ("vnor", (gen_vnor, 0x0)), - ("lha", (gen_lha, 0x0)), - ("dcbtst", (gen_dcbtst, 0x0)), - ("bnsctr+", (gen_bnsctr, 0x200000)), - ("vandc128", (gen_vandc128, 0x0)), - ("mtmsr", (gen_mtmsr, 0x0)), - ("stfsux", (gen_stfsux, 0x0)), - ("bdnzf-", (gen_bdnzf, 0x200000)), - ("ps_cmpo1", (gen_ps_cmpo1, 0x0)), - ("vadduhm", (gen_vadduhm, 0x0)), - ("fsubs", (gen_fsubs, 0x0)), - ("mfsdr1", (gen_mfsdr1, 0x0)), - ("stswi", (gen_stswi, 0x0)), - ("srwi", (gen_srwi, 0x0)), - ("bdzf-", (gen_bdzf, 0x200000)), - ("lwarx", (gen_lwarx, 0x0)), - ("ps_merge11.", (gen_ps_merge11, 0x1)), - ("twui", (gen_twui, 0x0)), - ("isync", (gen_isync, 0x0)), - ("mtvscr", (gen_mtvscr, 0x0)), - ("bdzflrl", (gen_bdzflr, 0x1)), - ("bltlr", (gen_bltlr, 0x0)), - ("mfsrin", (gen_mfsrin, 0x0)), - ("mtsrd", (gen_mtsrd, 0x0)), - ("mffs.", (gen_mffs, 0x1)), - ("and", (gen_and, 0x0)), - ("mtsrr0", (gen_mtsrr0, 0x0)), - ("vmulesh", (gen_vmulesh, 0x0)), - ("cntlzw.", (gen_cntlzw, 0x1)), - ("ps_abs", (gen_ps_abs, 0x0)), - ("extsb.", (gen_extsb, 0x1)), - ("nop", (gen_nop, 0x0)), - ("extrwi.", (gen_extrwi, 0x1)), - ("lfs", (gen_lfs, 0x0)), - ("rotlw.", (gen_rotlw, 0x1)), - ("bnectr", (gen_bnectr, 0x0)), - ("bdzlr", (gen_bdzlr, 0x0)), - ("bdnztlrl+", (gen_bdnztlr, 0x200001)), - ("bgtlrl+", (gen_bgtlr, 0x200001)), - ("vmaxsb", (gen_vmaxsb, 0x0)), - ("bne-", (gen_bne, 0x200000)), - ("fadds.", (gen_fadds, 0x1)), - ("vctuxs128", (gen_vctuxs128, 0x0)), - ("clrlslwi.", (gen_clrlslwi, 0x1)), - ("blta", (gen_blt, 0x2)), - ("mftb", (gen_mftb, 0x0)), - ("vsubuhs", (gen_vsubuhs, 0x0)), - ("mtibatl", (gen_mtibatl, 0x0)), - ("vrefp128", (gen_vrefp128, 0x0)), - ("bltctrl+", (gen_bltctr, 0x200001)), - ("blectrl+", (gen_blectr, 0x200001)), - ("stvlx128", (gen_stvlx128, 0x0)), - ("bsol+", (gen_bso, 0x200001)), - ("lvlxl", (gen_lvlxl, 0x0)), - ("bgel+", (gen_bge, 0x200001)), - ("srad.", (gen_srad, 0x1)), - ("mulhd.", (gen_mulhd, 0x1)), - ("twlge", (gen_twlge, 0x0)), - ("vrefp", (gen_vrefp, 0x0)), - ("tlbsync", (gen_tlbsync, 0x0)), - ("tdlti", (gen_tdlti, 0x0)), - ("lvxl", (gen_lvxl, 0x0)), - ("bcla+", (gen_bc, 0x200003)), - ("bdza-", (gen_bdz, 0x200002)), - ("beqla-", (gen_beq, 0x200003)), - ("vcfux128", (gen_vcfux128, 0x0)), - ("vupkhsb", (gen_vupkhsb, 0x0)), - ("addme.", (gen_addme, 0x1)), - ("blea+", (gen_ble, 0x200002)), - ("stbx", (gen_stbx, 0x0)), - ("bdztl", (gen_bdzt, 0x1)), - ("beq+", (gen_beq, 0x200000)), - ("vcmpgtfp128", (gen_vcmpgtfp128, 0x0)), - ("mfibatl", (gen_mfibatl, 0x0)), - ("vmrghb", (gen_vmrghb, 0x0)), - ("bdnzfa+", (gen_bdnzf, 0x200002)), - ("blta+", (gen_blt, 0x200002)), - ("bclr", (gen_bclr, 0x0)), - ("vxor", (gen_vxor, 0x0)), - ("lvebx", (gen_lvebx, 0x0)), - ("bc+", (gen_bc, 0x200000)), - ("subf", (gen_subf, 0x0)), - ("fmr.", (gen_fmr, 0x1)), - ("ps_sub.", (gen_ps_sub, 0x1)), - ("vandc", (gen_vandc, 0x0)), - ("bdnzl-", (gen_bdnz, 0x200001)), - ("bgt-", (gen_bgt, 0x200000)), - ("sth", (gen_sth, 0x0)), - ("lwzux", (gen_lwzux, 0x0)), - ("bdnza-", (gen_bdnz, 0x200002)), - ("li", (gen_li, 0x0)), - ("divwu", (gen_divwu, 0x0)), - ("vperm", (gen_vperm, 0x0)), - ("blela", (gen_ble, 0x3)), - ("bnelrl+", (gen_bnelr, 0x200001)), - ("bnela+", (gen_bne, 0x200003)), - ("bdzf", (gen_bdzf, 0x0)), - ("addc.", (gen_addc, 0x1)), - ("lvsr", (gen_lvsr, 0x0)), - ("tdge", (gen_tdge, 0x0)), - ("bnsctrl+", (gen_bnsctr, 0x200001)), - ("beqctrl+", (gen_beqctr, 0x200001)), - ("ps_add", (gen_ps_add, 0x0)), - ("fnmsubs", (gen_fnmsubs, 0x0)), + ("bcctr", (gen_bcctr, 0x0)), + ("vcmpgtfp", (gen_vcmpgtfp, 0x0)), + ("addo.", (gen_add, 0x401)), + ("vmsumshm", (gen_vmsumshm, 0x0)), + ("bltl+", (gen_blt, 0x200001)), ("vupkhsh", (gen_vupkhsh, 0x0)), - ("bdnzt", (gen_bdnzt, 0x0)), - ("vpkswus128", (gen_vpkswus128, 0x0)), - ("lhzux", (gen_lhzux, 0x0)), - ("bdnza", (gen_bdnz, 0x2)), - ("rotlwi", (gen_rotlwi, 0x0)), - ("vcmpgtsb", (gen_vcmpgtsb, 0x0)), - ("vpkshus128", (gen_vpkshus128, 0x0)), - ("bcl+", (gen_bc, 0x200001)), - ("vcmpgtuw", (gen_vcmpgtuw, 0x0)), - ("vupklsh128", (gen_vupklsh128, 0x0)), - ("bdnz", (gen_bdnz, 0x0)), - ("blectr", (gen_blectr, 0x0)), - ("bnea-", (gen_bne, 0x200002)), - ("srwi.", (gen_srwi, 0x1)), - ("bdz", (gen_bdz, 0x0)), + ("bltctr", (gen_bltctr, 0x0)), + ("fmr.", (gen_fmr, 0x1)), + ("vmsummbm", (gen_vmsummbm, 0x0)), + ("vmr", (gen_vmr, 0x0)), + ("bdnzf", (gen_bdnzf, 0x0)), + ("bdnztl+", (gen_bdnzt, 0x200001)), + ("frsqrte", (gen_frsqrte, 0x0)), + ("vslh", (gen_vslh, 0x0)), + ("rotlw", (gen_rotlw, 0x0)), + ("rotlw.", (gen_rotlw, 0x1)), + ("mffs.", (gen_mffs, 0x1)), + ("srad", (gen_srad, 0x0)), + ("ps_madds0", (gen_ps_madds0, 0x0)), + ("bdzfl-", (gen_bdzf, 0x200001)), + ("slwi", (gen_slwi, 0x0)), + ("lfdux", (gen_lfdux, 0x0)), + ("xoris", (gen_xoris, 0x0)), + ("sld.", (gen_sld, 0x1)), + ("bdnztlrl+", (gen_bdnztlr, 0x200001)), + ("fdivs.", (gen_fdivs, 0x1)), + ("divwu.", (gen_divwu, 0x1)), + ("vcmpequw128", (gen_vcmpequw128, 0x0)), + ("rfid", (gen_rfid, 0x0)), + ("bclrl", (gen_bclr, 0x1)), + ("vsubfp128", (gen_vsubfp128, 0x0)), + ("mulhwu.", (gen_mulhwu, 0x1)), + ("bns-", (gen_bns, 0x200000)), + ("blectrl+", (gen_blectr, 0x200001)), + ("bdzfla-", (gen_bdzf, 0x200003)), + ("blelr", (gen_blelr, 0x0)), + ("stvlx", (gen_stvlx, 0x0)), + ("ps_nabs.", (gen_ps_nabs, 0x1)), + ("stwcx.", (gen_stwcx_, 0x0)), + ("vpkuwus128", (gen_vpkuwus128, 0x0)), + ("nor.", (gen_nor, 0x1)), + ("blel", (gen_ble, 0x1)), + ("slw.", (gen_slw, 0x1)), + ("stvewx128", (gen_stvewx128, 0x0)), + ("bgela", (gen_bge, 0x3)), + ("ba", (gen_b, 0x2)), + ("ps_muls0", (gen_ps_muls0, 0x0)), + ("vmuleuh", (gen_vmuleuh, 0x0)), + ("subfze", (gen_subfze, 0x0)), + ("vcmpgtsh.", (gen_vcmpgtsh, 0x400)), + ("bnelr+", (gen_bnelr, 0x200000)), + ("mulhw.", (gen_mulhw, 0x1)), + ("bsol+", (gen_bso, 0x200001)), + ("fmadd", (gen_fmadd, 0x0)), + ("bdnzlrl+", (gen_bdnzlr, 0x200001)), + ("vspltb", (gen_vspltb, 0x0)), + ("bdnzfa", (gen_bdnzf, 0x2)), + ("beqa-", (gen_beq, 0x200002)), + ("vsubuhs", (gen_vsubuhs, 0x0)), + ("stb", (gen_stb, 0x0)), + ("vadduhs", (gen_vadduhs, 0x0)), + ("lhaux", (gen_lhaux, 0x0)), + ("bgel", (gen_bge, 0x1)), + ("vrfip", (gen_vrfip, 0x0)), + ("vrsqrtefp128", (gen_vrsqrtefp128, 0x0)), + ("beq-", (gen_beq, 0x200000)), + ("stvrxl128", (gen_stvrxl128, 0x0)), + ("bge", (gen_bge, 0x0)), + ("bdzf", (gen_bdzf, 0x0)), + ("vpkuhus", (gen_vpkuhus, 0x0)), + ("dststt", (gen_dstst, 0x2000000)), + ("bltla+", (gen_blt, 0x200003)), + ("bdnzl-", (gen_bdnz, 0x200001)), + ("ori", (gen_ori, 0x0)), + ("vpkswss", (gen_vpkswss, 0x0)), + ("bdzf+", (gen_bdzf, 0x200000)), + ("bnectrl+", (gen_bnectr, 0x200001)), + ("divd", (gen_divd, 0x0)), + ("blectrl", (gen_blectr, 0x1)), + ("subfco.", (gen_subfc, 0x401)), + ("vcmpgtfp.", (gen_vcmpgtfp, 0x400)), + ("ps_add", (gen_ps_add, 0x0)), + ("vavgsh", (gen_vavgsh, 0x0)), + ("bdnzfl-", (gen_bdnzf, 0x200001)), + ("stvebx", (gen_stvebx, 0x0)), + ("ps_cmpo1", (gen_ps_cmpo1, 0x0)), + ("subfc", (gen_subfc, 0x0)), + ("bnslr", (gen_bnslr, 0x0)), + ("bdztlr", (gen_bdztlr, 0x0)), + ("bdzfl+", (gen_bdzf, 0x200001)), + ("bltl-", (gen_blt, 0x200001)), + ("bltla-", (gen_blt, 0x200003)), + ("mtibatu", (gen_mtibatu, 0x0)), + ("ps_cmpu0", (gen_ps_cmpu0, 0x0)), + ("crxor", (gen_crxor, 0x0)), + ("fmsubs", (gen_fmsubs, 0x0)), + ("bltctrl", (gen_bltctr, 0x1)), + ("vcmpeqfp", (gen_vcmpeqfp, 0x0)), + ("vpkuhum", (gen_vpkuhum, 0x0)), + ("vsrab", (gen_vsrab, 0x0)), + ("lvxl128", (gen_lvxl128, 0x0)), + ("adde", (gen_adde, 0x0)), + ("vcfsx128", (gen_vcfsx128, 0x0)), + ("vcmpgtub", (gen_vcmpgtub, 0x0)), + ("vaddubs", (gen_vaddubs, 0x0)), + ("cmpd", (gen_cmpd, 0x0)), + ("blta", (gen_blt, 0x2)), + ("bc-", (gen_bc, 0x200000)), + ("vupklsb", (gen_vupklsb, 0x0)), + ("vor", (gen_vor, 0x0)), + ("lwz", (gen_lwz, 0x0)), + ("neg", (gen_neg, 0x0)), + ("fsqrt.", (gen_fsqrt, 0x1)), + ("extsh.", (gen_extsh, 0x1)), + ("orc.", (gen_orc, 0x1)), + ("vpkuwum", (gen_vpkuwum, 0x0)), + ("srd", (gen_srd, 0x0)), + ("extsb", (gen_extsb, 0x0)), + ("vcmpgefp128", (gen_vcmpgefp128, 0x0)), + ("sraw.", (gen_sraw, 0x1)), + ("bl", (gen_b, 0x1)), + ("bnsctr+", (gen_bnsctr, 0x200000)), + ("mtfsb1.", (gen_mtfsb1, 0x1)), + ("vcmpequh", (gen_vcmpequh, 0x0)), + ("bdnzt-", (gen_bdnzt, 0x200000)), + ("vpkswss128", (gen_vpkswss128, 0x0)), + ("fmr", (gen_fmr, 0x0)), + ("subfme.", (gen_subfme, 0x1)), + ("bcl", (gen_bc, 0x1)), + ("clrlwi.", (gen_clrlwi, 0x1)), + ("mfxer", (gen_mfxer, 0x0)), + ("ld", (gen_ld, 0x0)), + ("td", (gen_td, 0x0)), + ("ble", (gen_ble, 0x0)), + ("blt", (gen_blt, 0x0)), + ("and", (gen_and, 0x0)), + ("mtlr", (gen_mtlr, 0x0)), + ("vxor", (gen_vxor, 0x0)), + ("fsel", (gen_fsel, 0x0)), + ("mfdec", (gen_mfdec, 0x0)), + ("ps_merge10", (gen_ps_merge10, 0x0)), + ("vsraw", (gen_vsraw, 0x0)), + ("bdnz+", (gen_bdnz, 0x200000)), + ("lswx", (gen_lswx, 0x0)), + ("vsum2sws", (gen_vsum2sws, 0x0)), + ("bsoctr+", (gen_bsoctr, 0x200000)), + ("bnslr+", (gen_bnslr, 0x200000)), + ("ps_nabs", (gen_ps_nabs, 0x0)), + ("lwarx", (gen_lwarx, 0x0)), + ("vaddubm", (gen_vaddubm, 0x0)), + ("lhbrx", (gen_lhbrx, 0x0)), + ("stvrx128", (gen_stvrx128, 0x0)), + ("stvxl128", (gen_stvxl128, 0x0)), + ("divdu.", (gen_divdu, 0x1)), + ("bso-", (gen_bso, 0x200000)), + ("bclrl+", (gen_bclr, 0x200001)), + ("fres.", (gen_fres, 0x1)), + ("divwuo", (gen_divwu, 0x400)), + ("bdnzl", (gen_bdnz, 0x1)), + ("beqctr+", (gen_beqctr, 0x200000)), + ("stmw", (gen_stmw, 0x0)), + ("cmp", (gen_cmp, 0x0)), + ("vpkuhum128", (gen_vpkuhum128, 0x0)), + ("bdnzflrl+", (gen_bdnzflr, 0x200001)), + ("vcmpbfp128", (gen_vcmpbfp128, 0x0)), + ("vsumsws", (gen_vsumsws, 0x0)), + ("extrwi", (gen_extrwi, 0x0)), + ("li", (gen_li, 0x0)), + ("ps_sum0.", (gen_ps_sum0, 0x1)), + ("stw", (gen_stw, 0x0)), + ("vcmpeqfp.", (gen_vcmpeqfp, 0x400)), + ("sc", (gen_sc, 0x0)), + ("mtfsb0.", (gen_mtfsb0, 0x1)), + ("vctuxs", (gen_vctuxs, 0x0)), + ("subf.", (gen_subf, 0x1)), + ("mcrf", (gen_mcrf, 0x0)), + ("blel-", (gen_ble, 0x200001)), + ("lfs", (gen_lfs, 0x0)), + ("mfocrf", (gen_mfocrf, 0x0)), + ("sthux", (gen_sthux, 0x0)), + ("lvsr128", (gen_lvsr128, 0x0)), + ("beqla+", (gen_beq, 0x200003)), + ("fmadds.", (gen_fmadds, 0x1)), + ("vexptefp", (gen_vexptefp, 0x0)), + ("stbux", (gen_stbux, 0x0)), + ("ps_nmadd.", (gen_ps_nmadd, 0x1)), + ("mcrxr", (gen_mcrxr, 0x0)), + ("bdnzla-", (gen_bdnz, 0x200003)), + ("bnea", (gen_bne, 0x2)), + ("ps_muls0.", (gen_ps_muls0, 0x1)), + ("cntlzw.", (gen_cntlzw, 0x1)), + ("mtsr", (gen_mtsr, 0x0)), + ("vlogefp128", (gen_vlogefp128, 0x0)), + ("vcmpequw.", (gen_vcmpequw, 0x400)), + ("bnsa", (gen_bns, 0x2)), + ("blta+", (gen_blt, 0x200002)), + ("divdo", (gen_divd, 0x400)), + ("vavguw", (gen_vavguw, 0x0)), + ("vmaxsb", (gen_vmaxsb, 0x0)), + ("vand128", (gen_vand128, 0x0)), + ("vnmsubfp128", (gen_vnmsubfp128, 0x0)), + ("fctiwz.", (gen_fctiwz, 0x1)), + ("vrlh", (gen_vrlh, 0x0)), + ("stfdux", (gen_stfdux, 0x0)), + ("vupkhsb128", (gen_vupkhsb128, 0x0)), + ("vmrglh", (gen_vmrglh, 0x0)), + ("bdztla", (gen_bdzt, 0x3)), + ("bnsctr", (gen_bnsctr, 0x0)), + ("fnmadds", (gen_fnmadds, 0x0)), + ("slw", (gen_slw, 0x0)), + ("stfsux", (gen_stfsux, 0x0)), + ("cmpwi", (gen_cmpwi, 0x0)), + ("rlwinm.", (gen_rlwinm, 0x1)), + ("beql+", (gen_beq, 0x200001)), + ("fmul.", (gen_fmul, 0x1)), + ("bdza-", (gen_bdz, 0x200002)), + ("fsel.", (gen_fsel, 0x1)), + ("mtdar", (gen_mtdar, 0x0)), + ("lwbrx", (gen_lwbrx, 0x0)), + ("eciwx", (gen_eciwx, 0x0)), + ("vmrghb", (gen_vmrghb, 0x0)), + ("psq_stx", (gen_psq_stx, 0x0)), + ("vmsumshs", (gen_vmsumshs, 0x0)), + ("bne+", (gen_bne, 0x200000)), + ("bnsla+", (gen_bns, 0x200003)), + ("sth", (gen_sth, 0x0)), + ("fctiw", (gen_fctiw, 0x0)), + ("dst", (gen_dst, 0x0)), + ("vmuleub", (gen_vmuleub, 0x0)), + ("srawi", (gen_srawi, 0x0)), + ("ps_sum1", (gen_ps_sum1, 0x0)), ], }; pub fn assemble(mnemonic: &str, args: &Arguments) -> Result { diff --git a/disasm/src/generated.rs b/disasm/src/generated.rs index f04b70c..f7b11e9 100644 --- a/disasm/src/generated.rs +++ b/disasm/src/generated.rs @@ -66,8 +66,7 @@ static OPCODE_ENTRIES: [(u16, u16); 64] = [ (289, 290), (290, 291), (291, 297), - (297, 438), - (438, 439), + (297, 439), (439, 440), (440, 441), (441, 442), @@ -93,12 +92,13 @@ static OPCODE_ENTRIES: [(u16, u16); 64] = [ (461, 462), (462, 463), (463, 464), - (464, 467), - (467, 476), - (476, 477), - (477, 478), - (478, 480), - (480, 508), + (464, 465), + (465, 468), + (468, 478), + (478, 479), + (479, 480), + (480, 482), + (482, 511), ]; #[derive(Copy, Clone)] struct OpcodePattern { @@ -123,7 +123,7 @@ impl OpcodePattern { } } /// The bitmask and pattern for each opcode. -static OPCODE_PATTERNS: [OpcodePattern; 508] = [ +static OPCODE_PATTERNS: [OpcodePattern; 511] = [ // tdi OpcodePattern::extension(0xfc000000, 0x8000000, Extension::Ppc64), // twi @@ -922,6 +922,8 @@ static OPCODE_PATTERNS: [OpcodePattern; 508] = [ OpcodePattern::extension(0xfc0007ff, 0x7c0002ea, Extension::Ppc64), // lwax OpcodePattern::extension(0xfc0007ff, 0x7c0002aa, Extension::Ppc64), + // mfocrf + OpcodePattern::extension(0xfc100fff, 0x7c100026, Extension::Ppc64), // mtmsrd OpcodePattern::extension(0xfc1effff, 0x7c000164, Extension::Ppc64), // mtsrd @@ -1076,6 +1078,8 @@ static OPCODE_PATTERNS: [OpcodePattern; 508] = [ OpcodePattern::base(0xfc1f07fe, 0xec000030), // fsubs OpcodePattern::base(0xfc0007fe, 0xec000028), + // fsqrts + OpcodePattern::extension(0xfc1f07fe, 0xec00002c, Extension::Ppc64), // psq_st OpcodePattern::extension(0xfc000000, 0xf0000000, Extension::PairedSingles), // psq_stu @@ -1140,9 +1144,11 @@ static OPCODE_PATTERNS: [OpcodePattern; 508] = [ OpcodePattern::extension(0xfc1f07fe, 0xfc00065c, Extension::Ppc64), // fctidz OpcodePattern::extension(0xfc1f07fe, 0xfc00065e, Extension::Ppc64), + // fsqrt + OpcodePattern::extension(0xfc1f07fe, 0xfc00002c, Extension::Ppc64), ]; /// The name of each opcode. -static OPCODE_NAMES: [&str; 508] = [ +static OPCODE_NAMES: [&str; 511] = [ "tdi", "twi", "dcbz_l", @@ -1542,6 +1548,7 @@ static OPCODE_NAMES: [&str; 508] = [ "ldx", "lwaux", "lwax", + "mfocrf", "mtmsrd", "mtsrd", "mtsrdin", @@ -1619,6 +1626,7 @@ static OPCODE_NAMES: [&str; 508] = [ "fnmsubs", "fres", "fsubs", + "fsqrts", "psq_st", "psq_stu", "std", @@ -1651,6 +1659,7 @@ static OPCODE_NAMES: [&str; 508] = [ "fcfid", "fctid", "fctidz", + "fsqrt", ]; #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)] #[repr(u16)] @@ -2457,224 +2466,230 @@ pub enum Opcode { Lwaux = 397, /// lwax: Load Word Algebraic Indexed Lwax = 398, + /// mfocrf: Move from One Condition Register Field + Mfocrf = 399, /// mtmsrd: Move to Machine State Register Double Word - Mtmsrd = 399, + Mtmsrd = 400, /// mtsrd: Move to Segment Register Double Word - Mtsrd = 400, + Mtsrd = 401, /// mtsrdin: Move to Segment Register Double Word Indirect - Mtsrdin = 401, + Mtsrdin = 402, /// mulhd: Multiply High Double Word - Mulhd = 402, + Mulhd = 403, /// mulhdu: Multiply High Double Word Unsigned - Mulhdu = 403, + Mulhdu = 404, /// mulld: Multiply Low Double Word - Mulld = 404, + Mulld = 405, /// slbia: SLB Invalidate All - Slbia = 405, + Slbia = 406, /// slbie: SLB Invalidate Entry - Slbie = 406, + Slbie = 407, /// sld: Shift Left Double Word - Sld = 407, + Sld = 408, /// srad: Shift Right Algebraic Double Word - Srad = 408, + Srad = 409, /// sradi: Shift Right Algebraic Double Word Immediate - Sradi = 409, + Sradi = 410, /// srd: Shift Right Double Word - Srd = 410, + Srd = 411, /// stdcx.: Store Double Word Conditional Indexed - Stdcx_ = 411, + Stdcx_ = 412, /// stdux: Store Double Word with Update Indexed - Stdux = 412, + Stdux = 413, /// stdx: Store Double Word Indexed - Stdx = 413, + Stdx = 414, /// td: Trap Double Word - Td = 414, + Td = 415, /// dss: Data Stream Stop - Dss = 415, + Dss = 416, /// dst: Data Stream Touch - Dst = 416, + Dst = 417, /// dstst: Data Stream Touch for Store - Dstst = 417, + Dstst = 418, /// lvebx: Load Vector Element Byte Indexed - Lvebx = 418, + Lvebx = 419, /// lvehx: Load Vector Element Half Word Indexed - Lvehx = 419, + Lvehx = 420, /// lvewx: Load Vector Element Word Indexed - Lvewx = 420, + Lvewx = 421, /// lvlx: Load Vector Left Indexed - Lvlx = 421, + Lvlx = 422, /// lvlxl: Load Vector Left Indexed Last - Lvlxl = 422, + Lvlxl = 423, /// lvrx: Load Vector Right Indexed - Lvrx = 423, + Lvrx = 424, /// lvrxl: Load Vector Right Indexed Last - Lvrxl = 424, + Lvrxl = 425, /// lvsl: Load Vector for Shift Left - Lvsl = 425, + Lvsl = 426, /// lvsr: Load Vector for Shift Right - Lvsr = 426, + Lvsr = 427, /// lvx: Load Vector Indexed - Lvx = 427, + Lvx = 428, /// lvxl: Load Vector Indexed LRU - Lvxl = 428, + Lvxl = 429, /// stvebx: Store Vector Element Byte Indexed - Stvebx = 429, + Stvebx = 430, /// stvehx: Store Vector Element Half Word Indexed - Stvehx = 430, + Stvehx = 431, /// stvewx: Store Vector Element Word Indexed - Stvewx = 431, + Stvewx = 432, /// stvlx: Store Vector Left Indexed - Stvlx = 432, + Stvlx = 433, /// stvlxl: Store Vector Left Indexed Last - Stvlxl = 433, + Stvlxl = 434, /// stvrx: Store Vector Right Indexed - Stvrx = 434, + Stvrx = 435, /// stvrxl: Store Vector Right Indexed Last - Stvrxl = 435, + Stvrxl = 436, /// stvx: Store Vector Indexed - Stvx = 436, + Stvx = 437, /// stvxl: Store Vector Indexed LRU - Stvxl = 437, + Stvxl = 438, /// lwz: Load Word and Zero - Lwz = 438, + Lwz = 439, /// lwzu: Load Word and Zero with Update - Lwzu = 439, + Lwzu = 440, /// lbz: Load Byte and Zero - Lbz = 440, + Lbz = 441, /// lbzu: Load Byte and Zero with Update - Lbzu = 441, + Lbzu = 442, /// stw: Store Word - Stw = 442, + Stw = 443, /// stwu: Store Word with Update - Stwu = 443, + Stwu = 444, /// stb: Store Byte - Stb = 444, + Stb = 445, /// stbu: Store Byte with Update - Stbu = 445, + Stbu = 446, /// lhz: Load Half Word and Zero - Lhz = 446, + Lhz = 447, /// lhzu: Load Half Word and Zero with Update - Lhzu = 447, + Lhzu = 448, /// lha: Load Half Word Algebraic - Lha = 448, + Lha = 449, /// lhau: Load Half Word Algebraic with Update - Lhau = 449, + Lhau = 450, /// sth: Store Half Word - Sth = 450, + Sth = 451, /// sthu: Store Half Word with Update - Sthu = 451, + Sthu = 452, /// lmw: Load Multiple Word - Lmw = 452, + Lmw = 453, /// stmw: Store Multiple Word - Stmw = 453, + Stmw = 454, /// lfs: Load Floating-Point Single - Lfs = 454, + Lfs = 455, /// lfsu: Load Floating-Point Single with Update - Lfsu = 455, + Lfsu = 456, /// lfd: Load Floating-Point Double - Lfd = 456, + Lfd = 457, /// lfdu: Load Floating-Point Double with Update - Lfdu = 457, + Lfdu = 458, /// stfs: Store Floating-Point Single - Stfs = 458, + Stfs = 459, /// stfsu: Store Floating-Point Single with Update - Stfsu = 459, + Stfsu = 460, /// stfd: Store Floating-Point Double - Stfd = 460, + Stfd = 461, /// stfdu: Store Floating-Point Double with Update - Stfdu = 461, + Stfdu = 462, /// psq_l: Paired Single Quantized Load - PsqL = 462, + PsqL = 463, /// psq_lu: Paired Single Quantized Load with Update - PsqLu = 463, + PsqLu = 464, /// ld: Load Double Word - Ld = 464, + Ld = 465, /// ldu: Load Double Word with Update - Ldu = 465, + Ldu = 466, /// lwa: Load Word Algebraic - Lwa = 466, + Lwa = 467, /// fadds: Floating Add (Single-Precision) - Fadds = 467, + Fadds = 468, /// fdivs: Floating Divide (Single-Precision) - Fdivs = 468, + Fdivs = 469, /// fmadds: Floating Multiply-Add (Single-Precision) - Fmadds = 469, + Fmadds = 470, /// fmsubs: Floating Multiply-Subtract (Single-Precision) - Fmsubs = 470, + Fmsubs = 471, /// fmuls: Floating Multiply (Single-Precision) - Fmuls = 471, + Fmuls = 472, /// fnmadds: Floating Negative Multiply-Add (Single-Precision) - Fnmadds = 472, + Fnmadds = 473, /// fnmsubs: Floating Negative Multiply-Subtract (Single-Precision) - Fnmsubs = 473, + Fnmsubs = 474, /// fres: Floating Reciprocal Estimate Single - Fres = 474, + Fres = 475, /// fsubs: Floating Subtract (Single-Precision) - Fsubs = 475, + Fsubs = 476, + /// fsqrts: Floating Square Root (Single-Precision) + Fsqrts = 477, /// psq_st: Paired Single Quantized Store - PsqSt = 476, + PsqSt = 478, /// psq_stu: Paired Single Quantized Store with Update - PsqStu = 477, + PsqStu = 479, /// std: Store Double Word - Std = 478, + Std = 480, /// stdu: Store Double Word with Update - Stdu = 479, + Stdu = 481, /// fabs: Floating Absolute Value - Fabs = 480, + Fabs = 482, /// fadd: Floating Add (Double-Precision) - Fadd = 481, + Fadd = 483, /// fcmpo: Floating Compare Ordered - Fcmpo = 482, + Fcmpo = 484, /// fcmpu: Floating Compare Unordered - Fcmpu = 483, + Fcmpu = 485, /// fctiw: Floating Convert to Integer Word - Fctiw = 484, + Fctiw = 486, /// fctiwz: Floating Convert to Integer Word with Round toward Zero - Fctiwz = 485, + Fctiwz = 487, /// fdiv: Floating Divide (Double-Precision) - Fdiv = 486, + Fdiv = 488, /// fmadd: Floating Multiply-Add (Double-Precision) - Fmadd = 487, + Fmadd = 489, /// fmr: Floating Move Register (Double-Precision) - Fmr = 488, + Fmr = 490, /// fmsub: Floating Multiply-Subtract (Double-Precision) - Fmsub = 489, + Fmsub = 491, /// fmul: Floating Multiply (Double-Precision) - Fmul = 490, + Fmul = 492, /// fnabs: Floating Negative Absolute Value - Fnabs = 491, + Fnabs = 493, /// fneg: Floating Negate - Fneg = 492, + Fneg = 494, /// fnmadd: Floating Negative Multiply-Add (Double-Precision) - Fnmadd = 493, + Fnmadd = 495, /// fnmsub: Floating Negative Multiply-Subtract (Double-Precision) - Fnmsub = 494, + Fnmsub = 496, /// frsp: Floating Round to Single - Frsp = 495, + Frsp = 497, /// frsqrte: Floating Reciprocal Square Root Estimate - Frsqrte = 496, + Frsqrte = 498, /// fsel: Floating Select - Fsel = 497, + Fsel = 499, /// fsub: Floating Subtract (Double-Precision) - Fsub = 498, + Fsub = 500, /// mcrfs: Move to Condition Register from FPSCR - Mcrfs = 499, + Mcrfs = 501, /// mffs: Move from FPSCR - Mffs = 500, + Mffs = 502, /// mtfsb0: Move to FPSCR Bit 0 - Mtfsb0 = 501, + Mtfsb0 = 503, /// mtfsb1: Move to FPSCR Bit 1 - Mtfsb1 = 502, + Mtfsb1 = 504, /// mtfsf: Move to FPSCR Fields - Mtfsf = 503, + Mtfsf = 505, /// mtfsfi: Move to FPSCR Field Immediate - Mtfsfi = 504, + Mtfsfi = 506, /// fcfid: Floating Convert from Integer Double Word - Fcfid = 505, + Fcfid = 507, /// fctid: Floating Convert to Integer Double Word - Fctid = 506, + Fctid = 508, /// fctidz: Floating Convert to Integer Double Word with Round toward Zero - Fctidz = 507, + Fctidz = 509, + /// fsqrt: Floating Square Root (Double-Precision) + Fsqrt = 510, } impl Opcode { pub fn mnemonic(self) -> &'static str { @@ -2697,7 +2712,7 @@ impl Opcode { impl From for Opcode { #[inline] fn from(value: u16) -> Self { - if value > 507 { + if value > 510 { Self::Illegal } else { // Safety: The enum is repr(u16) and the value is within the enum's range @@ -10680,6 +10695,18 @@ fn basic_lwax(out: &mut ParsedIns, ins: Ins) { ], }; } +fn basic_mfocrf(out: &mut ParsedIns, ins: Ins) { + *out = ParsedIns { + mnemonic: "mfocrf", + args: [ + Argument::GPR(GPR(ins.field_rd() as _)), + Argument::OpaqueU(OpaqueU(ins.field_crm() as _)), + Argument::None, + Argument::None, + Argument::None, + ], + }; +} fn basic_mtmsrd(out: &mut ParsedIns, ins: Ins) { *out = ParsedIns { mnemonic: "mtmsrd", @@ -11705,6 +11732,21 @@ fn basic_fsubs(out: &mut ParsedIns, ins: Ins) { } }; } +fn basic_fsqrts(out: &mut ParsedIns, ins: Ins) { + *out = { + static MODIFIERS: [&str; 2] = ["fsqrts", "fsqrts."]; + ParsedIns { + mnemonic: MODIFIERS[ins.field_rc() as usize], + args: [ + Argument::FPR(FPR(ins.field_frd() as _)), + Argument::FPR(FPR(ins.field_frb() as _)), + Argument::None, + Argument::None, + Argument::None, + ], + } + }; +} fn basic_psq_st(out: &mut ParsedIns, ins: Ins) { *out = ParsedIns { mnemonic: "psq_st", @@ -12164,10 +12206,25 @@ fn basic_fctidz(out: &mut ParsedIns, ins: Ins) { } }; } +fn basic_fsqrt(out: &mut ParsedIns, ins: Ins) { + *out = { + static MODIFIERS: [&str; 2] = ["fsqrt", "fsqrt."]; + ParsedIns { + mnemonic: MODIFIERS[ins.field_rc() as usize], + args: [ + Argument::FPR(FPR(ins.field_frd() as _)), + Argument::FPR(FPR(ins.field_frb() as _)), + Argument::None, + Argument::None, + Argument::None, + ], + } + }; +} fn mnemonic_illegal(out: &mut ParsedIns, _ins: Ins) { *out = ParsedIns::new(); } -static BASIC_MNEMONICS: [MnemonicFunction; 508] = [ +static BASIC_MNEMONICS: [MnemonicFunction; 511] = [ basic_tdi, basic_twi, basic_dcbz_l, @@ -12567,6 +12624,7 @@ static BASIC_MNEMONICS: [MnemonicFunction; 508] = [ basic_ldx, basic_lwaux, basic_lwax, + basic_mfocrf, basic_mtmsrd, basic_mtsrd, basic_mtsrdin, @@ -12644,6 +12702,7 @@ static BASIC_MNEMONICS: [MnemonicFunction; 508] = [ basic_fnmsubs, basic_fres, basic_fsubs, + basic_fsqrts, basic_psq_st, basic_psq_stu, basic_std, @@ -12676,6 +12735,7 @@ static BASIC_MNEMONICS: [MnemonicFunction; 508] = [ basic_fcfid, basic_fctid, basic_fctidz, + basic_fsqrt, ]; pub(crate) fn parse_basic(out: &mut ParsedIns, ins: Ins) { match BASIC_MNEMONICS.get(ins.op as usize) { @@ -12683,7 +12743,7 @@ pub(crate) fn parse_basic(out: &mut ParsedIns, ins: Ins) { None => mnemonic_illegal(out, ins), } } -static SIMPLIFIED_MNEMONICS: [MnemonicFunction; 508] = [ +static SIMPLIFIED_MNEMONICS: [MnemonicFunction; 511] = [ simplified_tdi, simplified_twi, basic_dcbz_l, @@ -13083,6 +13143,7 @@ static SIMPLIFIED_MNEMONICS: [MnemonicFunction; 508] = [ basic_ldx, basic_lwaux, basic_lwax, + basic_mfocrf, basic_mtmsrd, basic_mtsrd, basic_mtsrdin, @@ -13160,6 +13221,7 @@ static SIMPLIFIED_MNEMONICS: [MnemonicFunction; 508] = [ basic_fnmsubs, basic_fres, basic_fsubs, + basic_fsqrts, basic_psq_st, basic_psq_stu, basic_std, @@ -13192,6 +13254,7 @@ static SIMPLIFIED_MNEMONICS: [MnemonicFunction; 508] = [ basic_fcfid, basic_fctid, basic_fctidz, + basic_fsqrt, ]; pub(crate) fn parse_simplified(out: &mut ParsedIns, ins: Ins) { match SIMPLIFIED_MNEMONICS.get(ins.op as usize) { @@ -13685,7 +13748,7 @@ fn uses_stfsu(out: &mut Arguments, ins: Ins) { fn defs_uses_empty(out: &mut Arguments, _ins: Ins) { *out = EMPTY_ARGS; } -static DEFS_FUNCTIONS: [DefsUsesFunction; 508] = [ +static DEFS_FUNCTIONS: [DefsUsesFunction; 511] = [ defs_uses_empty, defs_uses_empty, defs_uses_empty, @@ -14085,6 +14148,7 @@ static DEFS_FUNCTIONS: [DefsUsesFunction; 508] = [ defs_mulli, defs_mulli, defs_mulli, + defs_mulli, defs_uses_empty, defs_uses_empty, defs_uses_empty, @@ -14162,6 +14226,7 @@ static DEFS_FUNCTIONS: [DefsUsesFunction; 508] = [ defs_psq_lx, defs_psq_lx, defs_psq_lx, + defs_psq_lx, defs_uses_empty, uses_tdi, defs_uses_empty, @@ -14194,6 +14259,7 @@ static DEFS_FUNCTIONS: [DefsUsesFunction; 508] = [ defs_psq_lx, defs_psq_lx, defs_psq_lx, + defs_psq_lx, ]; pub(crate) fn parse_defs(out: &mut Arguments, ins: Ins) { match DEFS_FUNCTIONS.get(ins.op as usize) { @@ -14201,7 +14267,7 @@ pub(crate) fn parse_defs(out: &mut Arguments, ins: Ins) { None => defs_uses_empty(out, ins), } } -static USES_FUNCTIONS: [DefsUsesFunction; 508] = [ +static USES_FUNCTIONS: [DefsUsesFunction; 511] = [ uses_tdi, uses_tdi, uses_dcbz_l, @@ -14601,6 +14667,7 @@ static USES_FUNCTIONS: [DefsUsesFunction; 508] = [ uses_dcbz_l, uses_psq_lux, uses_dcbz_l, + defs_uses_empty, uses_mtmsrd, uses_rlwinm, uses_rlwnm, @@ -14678,6 +14745,7 @@ static USES_FUNCTIONS: [DefsUsesFunction; 508] = [ uses_ps_madd, uses_ps_abs, uses_ps_add, + uses_ps_abs, uses_stfs, uses_stfsu, uses_stswi, @@ -14710,6 +14778,7 @@ static USES_FUNCTIONS: [DefsUsesFunction; 508] = [ uses_ps_abs, uses_ps_abs, uses_ps_abs, + uses_ps_abs, ]; pub(crate) fn parse_uses(out: &mut Arguments, ins: Ins) { match USES_FUNCTIONS.get(ins.op as usize) { diff --git a/disasm/tests/test_ppc64.rs b/disasm/tests/test_ppc64.rs index 947bab3..bc84d6f 100644 --- a/disasm/tests/test_ppc64.rs +++ b/disasm/tests/test_ppc64.rs @@ -17,6 +17,12 @@ fn test_ins_cntlzd() { assert_asm!(0x7CA30074, "cntlzd r3, r5"); } +#[test] +fn test_vmx_dcbzl() { + assert_asm!(0x7c2327ec, "dcbzl r3, r4"); + assert_asm!(0x7c20ffec, "dcbzl r0, r31"); +} + #[test] fn test_ins_divd() { assert_asm!(0x7CA63BD2, "divd r5, r6, r7"); @@ -48,6 +54,18 @@ fn test_ins_fctidz() { assert_asm!(0xFC60065E, "fctidz f3, f0"); } +#[test] +fn test_ins_fsqrt() { + assert_asm!(0xfc60f82c, "fsqrt f3, f31"); + assert_asm!(0xffe0102d, "fsqrt. f31, f2"); +} + +#[test] +fn test_ins_fsqrts() { + assert_asm!(0xec40182c, "fsqrts f2, f3"); + assert_asm!(0xec60f82d, "fsqrts. f3, f31"); +} + #[test] fn test_ins_ld() { assert_asm!(0xebe10058, "ld r31, 0x58(r1)"); @@ -90,6 +108,11 @@ fn test_ins_lwax() { assert_asm!(0x7CA63AAA, "lwax r5, r6, r7"); } +#[test] +fn test_ins_mfocrf() { + assert_asm!(0x7d702026, "mfocrf r11, 2"); +} + #[test] fn test_ins_mtmsrd() { assert_asm!(0x7C000164, "mtmsrd r0, 0"); @@ -238,8 +261,3 @@ fn test_ins_td() { fn test_ins_tdi() { assert_asm!(0x09830058, "tdi 12, r3, 0x58"); } - -#[test] -fn test_vmx_dcbzl() { - assert_asm!(0x7c2327ec, "dcbzl r3, r4"); -} diff --git a/isa.yaml b/isa.yaml index 0430044..e54ca98 100644 --- a/isa.yaml +++ b/isa.yaml @@ -214,6 +214,7 @@ opcodes: uses: [ rA, rB ] - name: addc + aliases: [ a ] desc: Add Carrying bitmask: 0xfc0003fe pattern: 0x7c000014 @@ -223,6 +224,7 @@ opcodes: uses: [ rA, rB ] - name: adde + aliases: [ ae ] desc: Add Extended bitmask: 0xfc0003fe pattern: 0x7c000114 @@ -232,6 +234,7 @@ opcodes: uses: [ rA, rB ] - name: addi + aliases: [ cal ] desc: Add Immediate bitmask: 0xfc000000 pattern: 0x38000000 @@ -240,6 +243,7 @@ opcodes: uses: [ rA.nz ] - name: addic + aliases: [ ai ] desc: Add Immediate Carrying bitmask: 0xfc000000 pattern: 0x30000000 @@ -249,6 +253,7 @@ opcodes: uses: [ rA ] - name: addic. + aliases: [ ai. ] desc: Add Immediate Carrying and Record bitmask: 0xfc000000 pattern: 0x34000000 @@ -258,6 +263,7 @@ opcodes: uses: [ rA ] - name: addis + aliases: [ cau ] desc: Add Immediate Shifted bitmask: 0xfc000000 pattern: 0x3c000000 @@ -266,6 +272,7 @@ opcodes: uses: [ rA.nz ] - name: addme + aliases: [ ame ] desc: Add to Minus One Extended bitmask: 0xfc00fbfe pattern: 0x7c0001d4 @@ -275,6 +282,7 @@ opcodes: uses: [ rA ] - name: addze + aliases: [ aze ] desc: Add to Zero Extended bitmask: 0xfc00fbfe pattern: 0x7c000194 @@ -302,6 +310,7 @@ opcodes: uses: [ rS, rB ] - name: andi. + aliases: [ andil. ] desc: AND Immediate bitmask: 0xfc000000 pattern: 0x70000000 @@ -311,6 +320,7 @@ opcodes: uses: [ rB ] - name: andis. + aliases: [ andiu. ] desc: AND Immediate Shifted bitmask: 0xfc000000 pattern: 0x74000000 @@ -334,6 +344,7 @@ opcodes: args: [ BO, BI, BD ] - name: bcctr + aliases: [ bcc ] desc: Branch Conditional to Count Register bitmask: 0xfc00fffe pattern: 0x4c000420 @@ -342,6 +353,7 @@ opcodes: uses: [ ctr ] - name: bclr + aliases: [ bcr ] desc: Branch Conditional to Link Register bitmask: 0xfc00fffe pattern: 0x4c000020 @@ -382,6 +394,7 @@ opcodes: uses: [ rA ] - name: cntlzw + aliases: [ cntlz ] desc: Count Leading Zeros Word bitmask: 0xfc00fffe pattern: 0x7c000034 @@ -490,6 +503,7 @@ opcodes: uses: [ rA.nz, rB ] - name: dcbz + aliases: [ dclz ] desc: Data Cache Block Clear to Zero bitmask: 0xffe007ff pattern: 0x7c0007ec @@ -553,6 +567,7 @@ opcodes: uses: [ rS ] - name: extsh + aliases: [ exts ] desc: Extend Sign Half Word bitmask: 0xfc00fffe pattern: 0x7c000734 @@ -571,6 +586,7 @@ opcodes: uses: [ frB ] - name: fadd + aliases: [ fa ] desc: Floating Add (Double-Precision) bitmask: 0xfc0007fe pattern: 0xfc00002a @@ -605,6 +621,7 @@ opcodes: uses: [ frA, frB ] - name: fctiw + aliases: [ fcir ] desc: Floating Convert to Integer Word bitmask: 0xfc1f07fe pattern: 0xfc00001c @@ -614,6 +631,7 @@ opcodes: uses: [ frB ] - name: fctiwz + aliases: [ fcirz ] desc: Floating Convert to Integer Word with Round toward Zero bitmask: 0xfc1f07fe pattern: 0xfc00001e @@ -623,6 +641,7 @@ opcodes: uses: [ frB ] - name: fdiv + aliases: [ fd ] desc: Floating Divide (Double-Precision) bitmask: 0xfc0007fe pattern: 0xfc000024 @@ -641,6 +660,7 @@ opcodes: uses: [ frA, frB ] - name: fmadd + aliases: [ fma ] desc: Floating Multiply-Add (Double-Precision) bitmask: 0xfc00003e pattern: 0xfc00003a @@ -668,6 +688,7 @@ opcodes: uses: [ frB ] - name: fmsub + aliases: [ fms ] desc: Floating Multiply-Subtract (Double-Precision) bitmask: 0xfc00003e pattern: 0xfc000038 @@ -686,6 +707,7 @@ opcodes: uses: [ frA, frC, frB ] - name: fmul + aliases: [ fm ] desc: Floating Multiply (Double-Precision) bitmask: 0xfc00f83e pattern: 0xfc000032 @@ -722,6 +744,7 @@ opcodes: uses: [ frB ] - name: fnmadd + aliases: [ fnma ] desc: Floating Negative Multiply-Add (Double-Precision) bitmask: 0xfc00003e pattern: 0xfc00003e @@ -740,6 +763,7 @@ opcodes: uses: [ frA, frC, frB ] - name: fnmsub + aliases: [ fnms ] desc: Floating Negative Multiply-Subtract (Double-Precision) bitmask: 0xfc00003e pattern: 0xfc00003c @@ -794,6 +818,7 @@ opcodes: uses: [ frA, frC, frB ] - name: fsub + aliases: [ fs ] desc: Floating Subtract (Double-Precision) bitmask: 0xfc0007fe pattern: 0xfc000028 @@ -820,6 +845,7 @@ opcodes: uses: [ rA.nz, rB ] - name: isync + aliases: [ ics ] desc: Instruction Synchronize bitmask: 0xffffffff pattern: 0x4c00012c @@ -994,6 +1020,7 @@ opcodes: # TODO lmw has much more defs - name: lmw + aliases: [ lm ] desc: Load Multiple Word bitmask: 0xfc000000 pattern: 0xb8000000 @@ -1002,6 +1029,7 @@ opcodes: uses: [ offset, rA.nz ] - name: lswi + aliases: [ lsi ] desc: Load String Word Immediate bitmask: 0xfc0007ff pattern: 0x7c0004aa @@ -1010,6 +1038,7 @@ opcodes: uses: [ rA.nz ] - name: lswx + aliases: [ lsx ] desc: Load String Word Indexed bitmask: 0xfc0007ff pattern: 0x7c00042a @@ -1026,6 +1055,7 @@ opcodes: uses: [ rA.nz, rB ] - name: lwbrx + aliases: [ lbrx ] desc: Load String Word and Byte-Reverse Indexed bitmask: 0xfc0007ff pattern: 0x7c00042c @@ -1034,6 +1064,7 @@ opcodes: uses: [ rA.nz, rB ] - name: lwz + aliases: [ l ] desc: Load Word and Zero bitmask: 0xfc000000 pattern: 0x80000000 @@ -1042,6 +1073,7 @@ opcodes: uses: [ offset, rA.nz ] - name: lwzu + aliases: [ lu ] desc: Load Word and Zero with Update bitmask: 0xfc000000 pattern: 0x84000000 @@ -1050,6 +1082,7 @@ opcodes: uses: [ offset, rA ] - name: lwzux + aliases: [ lux ] desc: Load Word and Zero with Update Indexed bitmask: 0xfc0007ff pattern: 0x7c00006e @@ -1058,6 +1091,7 @@ opcodes: uses: [ rA, rB ] - name: lwzx + aliases: [ lx ] desc: Load Word and Zero Indexed bitmask: 0xfc0007ff pattern: 0x7c00002e @@ -1225,6 +1259,7 @@ opcodes: uses: [ rA, rB ] - name: mulli + aliases: [ muli ] desc: Multiply Low Immediate bitmask: 0xfc000000 pattern: 0x1c000000 @@ -1233,6 +1268,7 @@ opcodes: uses: [ rA ] - name: mullw + aliases: [ muls ] desc: Multiply Low Word bitmask: 0xfc0003fe pattern: 0x7c0001d6 @@ -1287,6 +1323,7 @@ opcodes: uses: [ rS, rB ] - name: ori + aliases: [ oril ] desc: OR Immediate bitmask: 0xfc000000 pattern: 0x60000000 @@ -1295,6 +1332,7 @@ opcodes: uses: [ rS ] - name: oris + aliases: [ oriu ] desc: OR Immediate Shifted bitmask: 0xfc000000 pattern: 0x64000000 @@ -1308,6 +1346,7 @@ opcodes: pattern: 0x4c000064 - name: rlwimi + aliases: [ rlimi ] desc: Rotate Left Word Immediate then Mask Insert bitmask: 0xfc000000 pattern: 0x50000000 @@ -1317,6 +1356,7 @@ opcodes: uses: [ rA, rS ] - name: rlwinm + aliases: [ rlinm ] desc: Rotate Left Word Immediate then AND with Mask bitmask: 0xfc000000 pattern: 0x54000000 @@ -1326,6 +1366,7 @@ opcodes: uses: [ rS ] - name: rlwnm + aliases: [ rlnm ] desc: Rotate Left Word then AND with Mask bitmask: 0xfc000000 pattern: 0x5c000000 @@ -1340,6 +1381,7 @@ opcodes: pattern: 0x44000002 - name: slw + aliases: [ sl ] desc: Shift Left Word bitmask: 0xfc0007fe pattern: 0x7c000030 @@ -1349,6 +1391,7 @@ opcodes: uses: [ rS, rB ] - name: sraw + aliases: [ sra ] desc: Shift Right Algebraic Word bitmask: 0xfc0007fe pattern: 0x7c000630 @@ -1358,6 +1401,7 @@ opcodes: uses: [ rS, rB ] - name: srawi + aliases: [ srai ] desc: Shift Right Algebraic Word Immediate bitmask: 0xfc0007fe pattern: 0x7c000670 @@ -1367,6 +1411,7 @@ opcodes: uses: [ rS ] - name: srw + aliases: [ sr ] desc: Shift Right Word bitmask: 0xfc0007fe pattern: 0x7c000430 @@ -1510,6 +1555,7 @@ opcodes: uses: [ rS, rA.nz, rB ] - name: stmw + aliases: [ stm ] desc: Store Multiple Word bitmask: 0xfc000000 pattern: 0xbc000000 @@ -1517,6 +1563,7 @@ opcodes: uses: [ rS, rA.nz ] - name: stswi + aliases: [ stsi ] desc: Store String Word Immediate bitmask: 0xfc0007ff pattern: 0x7c0005aa @@ -1524,6 +1571,7 @@ opcodes: uses: [ rS, rA.nz ] - name: stswx + aliases: [ stsx ] desc: Store String Word Indexed bitmask: 0xfc0007ff pattern: 0x7c00052a @@ -1531,6 +1579,7 @@ opcodes: uses: [ rS, rA.nz, rB ] - name: stw + aliases: [ st ] desc: Store Word bitmask: 0xfc000000 pattern: 0x90000000 @@ -1538,6 +1587,7 @@ opcodes: uses: [ rS, rA.nz ] - name: stwbrx + aliases: [ stbrx ] desc: Store Word Byte-Reverse Indexed bitmask: 0xfc0007ff pattern: 0x7c00052c @@ -1552,6 +1602,7 @@ opcodes: uses: [ rS, rA.nz, rB ] - name: stwu + aliases: [ stu ] desc: Store Word with Update bitmask: 0xfc000000 pattern: 0x94000000 @@ -1560,6 +1611,7 @@ opcodes: uses: [ rS, rA ] - name: stwux + aliases: [ stux ] desc: Store Word Indexed bitmask: 0xfc0007ff pattern: 0x7c00016e @@ -1568,6 +1620,7 @@ opcodes: uses: [ rS, rA, rB ] - name: stwx + aliases: [ stx ] desc: Store Word Indexed bitmask: 0xfc0007ff pattern: 0x7c00012e @@ -1584,6 +1637,7 @@ opcodes: uses: [ rA, rB ] - name: subfc + aliases: [ sf ] desc: Subtract from Carrying bitmask: 0xfc0003fe pattern: 0x7c000010 @@ -1593,6 +1647,7 @@ opcodes: uses: [ rA, rB ] - name: subfe + aliases: [ sfe ] desc: Subtract from Extended bitmask: 0xfc0003fe pattern: 0x7c000110 @@ -1602,6 +1657,7 @@ opcodes: uses: [ rA, rB ] - name: subfic + aliases: [ sfi ] desc: Subtract from Immediate Carrying bitmask: 0xfc000000 pattern: 0x20000000 @@ -1610,6 +1666,7 @@ opcodes: uses: [ rA ] - name: subfme + aliases: [ sfme ] desc: Subtract from Minus One Extended bitmask: 0xfc00fbfe pattern: 0x7c0001d0 @@ -1619,6 +1676,7 @@ opcodes: uses: [ rA ] - name: subfze + aliases: [ sfze ] desc: Subtract from Zero Extended bitmask: 0xfc00fbfe pattern: 0x7c000190 @@ -1628,6 +1686,7 @@ opcodes: uses: [ rA ] - name: sync + aliases: [ dcs ] desc: Synchronize bitmask: 0xFF9FFFFF pattern: 0x7c0004ac @@ -1647,6 +1706,7 @@ opcodes: pattern: 0x7c00046c - name: tw + aliases: [ t ] desc: Trap Word bitmask: 0xfc0007ff pattern: 0x7c000008 @@ -1654,6 +1714,7 @@ opcodes: uses: [ rA, rB ] - name: twi + aliases: [ ti ] desc: Trap Word Immediate bitmask: 0xfc000000 pattern: 0x0c000000 @@ -1670,6 +1731,7 @@ opcodes: uses: [ rS, rB ] - name: xori + aliases: [ xoril ] desc: XOR Immediate bitmask: 0xfc000000 pattern: 0x68000000 @@ -1678,6 +1740,7 @@ opcodes: uses: [ rS ] - name: xoris + aliases: [ xoriu ] desc: XOR Immediate Shifted bitmask: 0xfc000000 pattern: 0x6c000000 @@ -2431,6 +2494,24 @@ extensions: defs: [ frD ] uses: [ frB ] + - name: fsqrt + desc: Floating Square Root (Double-Precision) + bitmask: 0xfc1f07fe + pattern: 0xfc00002c + modifiers: [ Rc ] + args: [ frD, frB ] + defs: [ frD ] + uses: [ frB ] + + - name: fsqrts + desc: Floating Square Root (Single-Precision) + bitmask: 0xfc1f07fe + pattern: 0xec00002c + modifiers: [ Rc ] + args: [ frD, frB ] + defs: [ frD ] + uses: [ frB ] + - name: ld desc: Load Double Word bitmask: 0xfc000003 @@ -2495,6 +2576,13 @@ extensions: defs: [ rD ] uses: [ rA.nz, rB ] + - name: mfocrf + desc: Move from One Condition Register Field + bitmask: 0xfc100fff + pattern: 0x7c100026 + args: [ rD, crm ] + defs: [ rD ] + - name: mtmsrd desc: Move to Machine State Register Double Word bitmask: 0xFC1EFFFF