package rexcode_ppc // ============================================================================= // PowerPC ENCODING_TABLE // ============================================================================= // // Conventions: // - PowerPC ISA documentation numbers bits MSB-first (bit 0 = MSB, bit 31 = // LSB). This table is in LSB-first u32 form. To translate a field "bits // M..N" from the manual, use the formula LSB_bit = 31 - MSB_bit. For // instance, primary opcode "0..5" → LSB bits 31..26 = (op << 26). // - `bits` holds the static pattern. `mask` flags which bits are fixed. // - Rc bit (record/dot-suffix) and OE bit (overflow) live at LSB bit 0 and // bit 10 respectively (= MSB bits 31 and 21). Forms with Rc=1 / OE=1 are // separate entries; the variant flags are baked into base bits. // // Sections follow the Power ISA Book I/II/III layout: // §1 Branch (I/B/XL-form) // §2 Condition register logical // §3 Fixed-point load // §4 Fixed-point store // §5 Load/store with reservation (atomic primitives) // §6 Fixed-point arithmetic // §7 Fixed-point logical / shift / rotate // §8 Compare // §9 Floating-point arithmetic (§4 of the FPU spec) // §10 SPR / system / cache // §11 AltiVec (VMX) // §12 VSX // §13 Power ISA 3.1 prefixed (POWER10) // §14 Aliases (printed differently, encoded as their underlying form) @(rodata) ENCODING_TABLE:= #partial [Mnemonic][]Encoding{ .INVALID = {}, // ========================================================================= // §1 Branch (I/B/XL/SC-form) // ========================================================================= // // I-form unconditional branch: // primary=18 (0x12), LI[2..25], AA at bit 1, LK at bit 0. // bits 0..5 (MSB) = 010010 = 0x12 → LSB: 0x48000000 // // B AA=0 LK=0 0x48000000 // BA AA=1 LK=0 0x48000002 // BL AA=0 LK=1 0x48000001 // BLA AA=1 LK=1 0x48000003 .B = { {.B, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_LI, .NONE, .NONE, .NONE}, 0x48000000, 0xFC000003, .BASE, .PPC32, {branch=true}} }, .BA = { {.BA, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_LI, .NONE, .NONE, .NONE}, 0x48000002, 0xFC000003, .BASE, .PPC32, {branch=true, abs_branch=true}} }, .BL = { {.BL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_LI, .NONE, .NONE, .NONE}, 0x48000001, 0xFC000003, .BASE, .PPC32, {branch=true, writes_lr=true}} }, .BLA = { {.BLA, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_LI, .NONE, .NONE, .NONE}, 0x48000003, 0xFC000003, .BASE, .PPC32, {branch=true, abs_branch=true, writes_lr=true}} }, // B-form conditional branch: // primary=16 (0x10), BO[6..10], BI[11..15], BD[16..29], AA, LK. // base = 0x40000000. .BC = { {.BC, {.BO, .CR_BIT, .REL, .NONE}, {.BO_FIELD, .BI_FIELD, .BRANCH_BD, .NONE}, 0x40000000, 0xFC000003, .BASE, .PPC32, {cond_branch=true}} }, .BCA = { {.BCA, {.BO, .CR_BIT, .REL, .NONE}, {.BO_FIELD, .BI_FIELD, .BRANCH_BD, .NONE}, 0x40000002, 0xFC000003, .BASE, .PPC32, {cond_branch=true, abs_branch=true}} }, .BCL = { {.BCL, {.BO, .CR_BIT, .REL, .NONE}, {.BO_FIELD, .BI_FIELD, .BRANCH_BD, .NONE}, 0x40000001, 0xFC000003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BCLA = { {.BCLA, {.BO, .CR_BIT, .REL, .NONE}, {.BO_FIELD, .BI_FIELD, .BRANCH_BD, .NONE}, 0x40000003, 0xFC000003, .BASE, .PPC32, {cond_branch=true, abs_branch=true, writes_lr=true}} }, // XL-form branch to LR/CTR (XO=16/528 at bits 21-30): // primary=19 (0x13). bclr: XO=16. bcctr: XO=528. bctar: XO=560 (P8). // XO field LSB position = bits 1..10. XO_VALUE << 1 in u32. // // bclr bits = 0x4C000020 (XO=16<<1=32 → 0x20) // bclrl bits = 0x4C000021 // bcctr bits = 0x4C000420 (XO=528<<1=0x420) // bcctrl bits = 0x4C000421 // bctar bits = 0x4C000460 (XO=560<<1=0x460) // bctarl bits = 0x4C000461 .BCLR = { {.BCLR, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000020, 0xFC0007FF, .BASE, .PPC32, {cond_branch=true}} }, .BCLRL = { {.BCLRL, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000021, 0xFC0007FF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BCCTR = { {.BCCTR, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000420, 0xFC0007FF, .BASE, .PPC32, {cond_branch=true}} }, .BCCTRL = { {.BCCTRL, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000421, 0xFC0007FF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BCTAR = { {.BCTAR, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000460, 0xFC0007FF, .POWER8, .PPC32, {cond_branch=true}} }, .BCTARL = { {.BCTARL, {.BO, .CR_BIT, .BH, .NONE}, {.BO_FIELD, .BI_FIELD, .BH_FIELD, .NONE}, 0x4C000461, 0xFC0007FF, .POWER8, .PPC32, {cond_branch=true, writes_lr=true}} }, // SC-form system call: // primary=17 (0x11). LEV at bits 20..26 (MSB 5..11). bits = 0x44000002. .SC = { {.SC, {.IMM, .NONE, .NONE, .NONE}, {.LEV_FIELD, .NONE, .NONE, .NONE}, 0x44000002, 0xFFFFFFFD, .BASE, .PPC32, {}} }, // ========================================================================= // §2 Condition register logical (XL-form) // ========================================================================= // // primary=19 (= 0x4C000000 base). XO at bits 1..10. Operands: BT/BA/BB // are 5-bit CR-bit indices. // // crand XO=257 → 0x4C000202 // crnand XO=225 → 0x4C0001C2 // cror XO=449 → 0x4C000382 // crnor XO= 33 → 0x4C000042 // crxor XO=193 → 0x4C000182 // creqv XO=289 → 0x4C000242 // crandc XO=129 → 0x4C000102 // crorc XO=417 → 0x4C000342 // mcrf XO= 0 → 0x4C000000 (BF/BFA take 3-bit CR fields) .CRAND = { {.CRAND, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000202, 0xFC0007FF, .BASE, .PPC32, {}} }, .CRNAND = { {.CRNAND, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C0001C2, 0xFC0007FF, .BASE, .PPC32, {}} }, .CROR = { {.CROR, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000382, 0xFC0007FF, .BASE, .PPC32, {}} }, .CRNOR = { {.CRNOR, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000042, 0xFC0007FF, .BASE, .PPC32, {}} }, .CRXOR = { {.CRXOR, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000182, 0xFC0007FF, .BASE, .PPC32, {}} }, .CREQV = { {.CREQV, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000242, 0xFC0007FF, .BASE, .PPC32, {}} }, .CRANDC = { {.CRANDC, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000102, 0xFC0007FF, .BASE, .PPC32, {}} }, .CRORC = { {.CRORC, {.CR_BIT, .CR_BIT, .CR_BIT, .NONE}, {.BT, .BA, .BB, .NONE}, 0x4C000342, 0xFC0007FF, .BASE, .PPC32, {}} }, .MCRF = { {.MCRF, {.CR_FIELD, .CR_FIELD, .NONE, .NONE}, {.BF, .BFA, .NONE, .NONE}, 0x4C000000, 0xFC63FFFF, .BASE, .PPC32, {}} }, // ========================================================================= // §3 Fixed-point loads (D/DS/X-form) // ========================================================================= // // D-form base = primary << 26. Mask covers top 6 bits only (0xFC000000). // lbz primary=34 → 0x88000000 // lbzu primary=35 → 0x8C000000 // lhz primary=40 → 0xA0000000 // lhzu primary=41 → 0xA4000000 // lha primary=42 → 0xA8000000 // lhau primary=43 → 0xAC000000 // lwz primary=32 → 0x80000000 // lwzu primary=33 → 0x84000000 // lmw primary=46 → 0xB8000000 // ld/ldu/lwa share primary 58 (DS-form, XO at bits 0..1) // ld XO=0 → 0xE8000000 // ldu XO=1 → 0xE8000001 // lwa XO=2 → 0xE8000002 // lq primary=56 (DQ-form, 12-bit + 4-bit zero) → 0xE0000000 .LBZ = { {.LBZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x88000000, 0xFC000000, .BASE, .PPC32, {}} }, .LBZU = { {.LBZU, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x8C000000, 0xFC000000, .BASE, .PPC32, {}} }, .LHZ = { {.LHZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA0000000, 0xFC000000, .BASE, .PPC32, {}} }, .LHZU = { {.LHZU, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA4000000, 0xFC000000, .BASE, .PPC32, {}} }, .LHA = { {.LHA, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA8000000, 0xFC000000, .BASE, .PPC32, {}} }, .LHAU = { {.LHAU, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xAC000000, 0xFC000000, .BASE, .PPC32, {}} }, .LWZ = { {.LWZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x80000000, 0xFC000000, .BASE, .PPC32, {}} }, .LWZU = { {.LWZU, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x84000000, 0xFC000000, .BASE, .PPC32, {}} }, .LMW = { {.LMW, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xB8000000, 0xFC000000, .BASE, .PPC32, {}} }, .LD = { {.LD, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE8000000, 0xFC000003, .P64, .PPC64, {}} }, .LDU = { {.LDU, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE8000001, 0xFC000003, .P64, .PPC64, {}} }, .LWA = { {.LWA, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE8000002, 0xFC000003, .P64, .PPC64, {}} }, .LQ = { {.LQ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_DQ, .NONE, .NONE}, 0xE0000000, 0xFC00000F, .POWER8, .PPC64, {}} }, // X-form indexed: primary=31, XO at bits 1..10 (XO_value << 1). // lbzx XO=87 → 0x7C0000AE // lbzux XO=119 → 0x7C0000EE // lhzx XO=279 → 0x7C00022E // lhzux XO=311 → 0x7C00026E // lhax XO=343 → 0x7C0002AE // lhaux XO=375 → 0x7C0002EE // lwzx XO=23 → 0x7C00002E // lwzux XO=55 → 0x7C00006E // lwax XO=341 → 0x7C0002AA // lwaux XO=373 → 0x7C0002EA // ldx XO=21 → 0x7C00002A // ldux XO=53 → 0x7C00006A // lhbrx XO=790 → 0x7C00062C // lwbrx XO=534 → 0x7C00042C // ldbrx XO=532 → 0x7C000428 // lswi XO=597 → 0x7C0004AA // lswx XO=533 → 0x7C00042A .LBZX = { {.LBZX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0000AE, 0xFC0007FE, .BASE, .PPC32, {}} }, .LBZUX = { {.LBZUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0000EE, 0xFC0007FE, .BASE, .PPC32, {}} }, .LHZX = { {.LHZX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00022E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LHZUX = { {.LHZUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00026E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LHAX = { {.LHAX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0002AE, 0xFC0007FE, .BASE, .PPC32, {}} }, .LHAUX = { {.LHAUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0002EE, 0xFC0007FE, .BASE, .PPC32, {}} }, .LWZX = { {.LWZX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00002E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LWZUX = { {.LWZUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00006E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LWAX = { {.LWAX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0002AA, 0xFC0007FE, .P64, .PPC64, {}} }, .LWAUX = { {.LWAUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0002EA, 0xFC0007FE, .P64, .PPC64, {}} }, .LDX = { {.LDX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00002A, 0xFC0007FE, .P64, .PPC64, {}} }, .LDUX = { {.LDUX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00006A, 0xFC0007FE, .P64, .PPC64, {}} }, .LHBRX = { {.LHBRX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00062C, 0xFC0007FE, .BASE, .PPC32, {}} }, .LWBRX = { {.LWBRX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00042C, 0xFC0007FE, .BASE, .PPC32, {}} }, .LDBRX = { {.LDBRX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C000428, 0xFC0007FE, .POWER8, .PPC64, {}} }, .LSWI = { {.LSWI, {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .NB_FIELD, .NONE}, 0x7C0004AA, 0xFC0007FE, .BASE, .PPC32, {}} }, .LSWX = { {.LSWX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00042A, 0xFC0007FE, .BASE, .PPC32, {}} }, // ========================================================================= // §4 Fixed-point stores (D/DS/X-form) // ========================================================================= // // D-form: // stb primary=38 → 0x98000000 // stbu primary=39 → 0x9C000000 // sth primary=44 → 0xB0000000 // sthu primary=45 → 0xB4000000 // stw primary=36 → 0x90000000 // stwu primary=37 → 0x94000000 // stmw primary=47 → 0xBC000000 // // DS-form (primary=62): // std XO=0 → 0xF8000000 // stdu XO=1 → 0xF8000001 // stq XO=2 → 0xF8000002 (POWER8, PPC64) // // X-form (primary=31 + XO at bits 1..10): // stbx XO=215 → 0x7C0001AE // stbux XO=247 → 0x7C0001EE // sthx XO=407 → 0x7C00032E // sthux XO=439 → 0x7C00036E // stwx XO=151 → 0x7C00012E // stwux XO=183 → 0x7C00016E // stdx XO=149 → 0x7C00012A // stdux XO=181 → 0x7C00016A // sthbrx XO=918 → 0x7C00072C // stwbrx XO=662 → 0x7C00052C // stdbrx XO=660 → 0x7C000528 // stswi XO=725 → 0x7C0005AA // stswx XO=661 → 0x7C00052A .STB = { {.STB, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x98000000, 0xFC000000, .BASE, .PPC32, {}} }, .STBU = { {.STBU, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x9C000000, 0xFC000000, .BASE, .PPC32, {}} }, .STH = { {.STH, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0xB0000000, 0xFC000000, .BASE, .PPC32, {}} }, .STHU = { {.STHU, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0xB4000000, 0xFC000000, .BASE, .PPC32, {}} }, .STW = { {.STW, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x90000000, 0xFC000000, .BASE, .PPC32, {}} }, .STWU = { {.STWU, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x94000000, 0xFC000000, .BASE, .PPC32, {}} }, .STMW = { {.STMW, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0xBC000000, 0xFC000000, .BASE, .PPC32, {}} }, .STD = { {.STD, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF8000000, 0xFC000003, .P64, .PPC64, {}} }, .STDU = { {.STDU, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF8000001, 0xFC000003, .P64, .PPC64, {}} }, .STQ = { {.STQ, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF8000002, 0xFC000003, .POWER8, .PPC64, {}} }, .STBX = { {.STBX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0001AE, 0xFC0007FE, .BASE, .PPC32, {}} }, .STBUX = { {.STBUX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0001EE, 0xFC0007FE, .BASE, .PPC32, {}} }, .STHX = { {.STHX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00032E, 0xFC0007FE, .BASE, .PPC32, {}} }, .STHUX = { {.STHUX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00036E, 0xFC0007FE, .BASE, .PPC32, {}} }, .STWX = { {.STWX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00012E, 0xFC0007FE, .BASE, .PPC32, {}} }, .STWUX = { {.STWUX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00016E, 0xFC0007FE, .BASE, .PPC32, {}} }, .STDX = { {.STDX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00012A, 0xFC0007FE, .P64, .PPC64, {}} }, .STDUX = { {.STDUX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00016A, 0xFC0007FE, .P64, .PPC64, {}} }, .STHBRX = { {.STHBRX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00072C, 0xFC0007FE, .BASE, .PPC32, {}} }, .STWBRX = { {.STWBRX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00052C, 0xFC0007FE, .BASE, .PPC32, {}} }, .STDBRX = { {.STDBRX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C000528, 0xFC0007FE, .POWER8, .PPC64, {}} }, .STSWI = { {.STSWI, {.GPR, .GPR, .IMM, .NONE}, {.RS, .RA, .NB_FIELD, .NONE}, 0x7C0005AA, 0xFC0007FE, .BASE, .PPC32, {}} }, .STSWX = { {.STSWX, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00052A, 0xFC0007FE, .BASE, .PPC32, {}} }, // ========================================================================= // §5 Reservations / atomics (X-form) // ========================================================================= // // primary=31, XO at bits 1..10: // lbarx XO= 52 → 0x7C000068 // lharx XO=116 → 0x7C0000E8 // lwarx XO= 20 → 0x7C000028 // ldarx XO= 84 → 0x7C0000A8 // lqarx XO=276 → 0x7C000228 // stbcx. XO=694 → 0x7C00056D (Rc=1 baked) // sthcx. XO=726 → 0x7C0005AD // stwcx. XO=150 → 0x7C00012D // stdcx. XO=214 → 0x7C0001AD // stqcx. XO=182 → 0x7C00016D .LBARX = { {.LBARX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C000068, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LHARX = { {.LHARX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0000E8, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LWARX = { {.LWARX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C000028, 0xFC0007FE, .BASE, .PPC32, {}} }, .LDARX = { {.LDARX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0000A8, 0xFC0007FE, .P64, .PPC64, {}} }, .LQARX = { {.LQARX, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C000228, 0xFC0007FE, .POWER8, .PPC64, {}} }, .STBCX_DOT = { {.STBCX_DOT, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00056D, 0xFC0007FF, .POWER8, .PPC32, {sets_cr0=true}} }, .STHCX_DOT = { {.STHCX_DOT, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0005AD, 0xFC0007FF, .POWER8, .PPC32, {sets_cr0=true}} }, .STWCX_DOT = { {.STWCX_DOT, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00012D, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .STDCX_DOT = { {.STDCX_DOT, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0001AD, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, .STQCX_DOT = { {.STQCX_DOT, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00016D, 0xFC0007FF, .POWER8, .PPC64, {sets_cr0=true}} }, // ========================================================================= // §6 Fixed-point arithmetic (D / XO-form) // ========================================================================= // // D-form arithmetic (primary opcodes 7, 8, 12, 13, 14, 15): // mulli primary= 7 → 0x1C000000 // subfic primary= 8 → 0x20000000 // addic primary=12 → 0x30000000 // addic. primary=13 → 0x34000000 // addi primary=14 → 0x38000000 // addis primary=15 → 0x3C000000 // addpcis primary=19, XO=2 (DX-form, POWER9) → 0x4C000004 .MULLI = { {.MULLI, {.GPR, .GPR_OR_ZERO, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x1C000000, 0xFC000000, .BASE, .PPC32, {}} }, .SUBFIC = { {.SUBFIC, {.GPR, .GPR, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x20000000, 0xFC000000, .BASE, .PPC32, {}} }, .ADDIC = { {.ADDIC, {.GPR, .GPR, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x30000000, 0xFC000000, .BASE, .PPC32, {}} }, .ADDIC_DOT= { {.ADDIC_DOT,{.GPR, .GPR, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x34000000, 0xFC000000, .BASE, .PPC32, {sets_cr0=true}} }, .ADDI = { {.ADDI, {.GPR, .GPR_OR_ZERO, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x38000000, 0xFC000000, .BASE, .PPC32, {}} }, .ADDIS = { {.ADDIS, {.GPR, .GPR_OR_ZERO, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x3C000000, 0xFC000000, .BASE, .PPC32, {}} }, // XO-form arithmetic (primary=31, XO at bits 1..9 [9 bits], OE at bit 10): // add XO=266 → 266<<1=0x214 → 0x7C000214 // add. XO=266, Rc=1 → 0x7C000215 // addo XO=266, OE=1 → 0x7C000614 // addo. XO=266, OE=1, Rc=1 → 0x7C000615 // addc XO= 10 → 0x7C000014 // adde XO=138 → 0x7C000114 // addme XO=234 → 0x7C0001D4 (no Rb) // addze XO=202 → 0x7C000194 (no Rb) // subf XO= 40 → 0x7C000050 // subfc XO= 8 → 0x7C000010 // subfe XO=136 → 0x7C000110 // subfme XO=232 → 0x7C0001D0 // subfze XO=200 → 0x7C000190 // neg XO=104 → 0x7C0000D0 (no Rb) // addex XO=170 → 0x7C0000D4 — wait, addex is XO=170, no OE bit // actually: 170<<1=0x154 → 0x7C000154 // Power ISA uses CY[2] selector at OE pos // mulhw XO= 75 → 0x7C000096 (X-form, no OE: 75<<1=0x96) // mulhwu XO= 11 → 0x7C000016 // mullw XO=235 → 0x7C0001D6 // mulld XO=233 → 0x7C0001D2 // mulhd XO= 73 → 0x7C000092 // mulhdu XO= 9 → 0x7C000012 // divw XO=491 → 0x7C0003D6 // divwu XO=459 → 0x7C0003D6 - wait, 459<<1=0x396 → 0x7C000396 // divd XO=489 → 0x7C0003D2 // divdu XO=457 → 0x7C000392 // divwe XO=427 → 0x7C000356 (POWER7) // divweu XO=395 → 0x7C000316 // divde XO=425 → 0x7C000352 // divdeu XO=393 → 0x7C000312 // modsw XO=779 → 0x7C000616 (POWER9 X-form, not XO; uses 10-bit XO) // moduw XO=267 → 0x7C000216 // modsd XO=777 → 0x7C000612 // modud XO=265 → 0x7C000212 // maddld XO=51 (VA-form-like, primary=4) — handled separately .ADD = { {.ADD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000214, 0xFC0003FE, .BASE, .PPC32, {}} }, .ADD_DOT = { {.ADD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000215, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .ADD_O = { {.ADD_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000614, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .ADD_O_DOT = { {.ADD_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000615, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .ADDC = { {.ADDC, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000014, 0xFC0003FE, .BASE, .PPC32, {}} }, .ADDC_DOT = { {.ADDC_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000015, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .ADDC_O = { {.ADDC_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000414, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .ADDC_O_DOT = { {.ADDC_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000415, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .ADDE = { {.ADDE, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000114, 0xFC0003FE, .BASE, .PPC32, {}} }, .ADDE_DOT = { {.ADDE_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000115, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .ADDE_O = { {.ADDE_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000514, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .ADDE_O_DOT = { {.ADDE_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000515, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .ADDME = { {.ADDME, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0001D4, 0xFC00FBFE, .BASE, .PPC32, {}} }, .ADDME_DOT = { {.ADDME_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0001D5, 0xFC00FBFF, .BASE, .PPC32, {sets_cr0=true}} }, .ADDME_O = { {.ADDME_O, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0005D4, 0xFC00FFFE, .BASE, .PPC32, {has_oe=true}} }, .ADDME_O_DOT = { {.ADDME_O_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0005D5, 0xFC00FFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .ADDZE = { {.ADDZE, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000194, 0xFC00FBFE, .BASE, .PPC32, {}} }, .ADDZE_DOT = { {.ADDZE_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000195, 0xFC00FBFF, .BASE, .PPC32, {sets_cr0=true}} }, .ADDZE_O = { {.ADDZE_O, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000594, 0xFC00FFFE, .BASE, .PPC32, {has_oe=true}} }, .ADDZE_O_DOT = { {.ADDZE_O_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000595, 0xFC00FFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBF = { {.SUBF, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000050, 0xFC0003FE, .BASE, .PPC32, {}} }, .SUBF_DOT = { {.SUBF_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000051, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBF_O = { {.SUBF_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000450, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .SUBF_O_DOT = { {.SUBF_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000451, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBFC = { {.SUBFC, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000010, 0xFC0003FE, .BASE, .PPC32, {}} }, .SUBFC_DOT = { {.SUBFC_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000011, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBFC_O = { {.SUBFC_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000410, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .SUBFC_O_DOT = { {.SUBFC_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000411, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBFE = { {.SUBFE, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000110, 0xFC0003FE, .BASE, .PPC32, {}} }, .SUBFE_DOT = { {.SUBFE_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000111, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBFE_O = { {.SUBFE_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000510, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .SUBFE_O_DOT = { {.SUBFE_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000511, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBFME = { {.SUBFME, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0001D0, 0xFC00FBFE, .BASE, .PPC32, {}} }, .SUBFME_DOT = { {.SUBFME_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0001D1, 0xFC00FBFF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBFME_O = { {.SUBFME_O, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0005D0, 0xFC00FFFE, .BASE, .PPC32, {has_oe=true}} }, .SUBFME_O_DOT = { {.SUBFME_O_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0005D1, 0xFC00FFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBFZE = { {.SUBFZE, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000190, 0xFC00FBFE, .BASE, .PPC32, {}} }, .SUBFZE_DOT = { {.SUBFZE_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000191, 0xFC00FBFF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBFZE_O = { {.SUBFZE_O, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000590, 0xFC00FFFE, .BASE, .PPC32, {has_oe=true}} }, .SUBFZE_O_DOT = { {.SUBFZE_O_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C000591, 0xFC00FFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .NEG = { {.NEG, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0000D0, 0xFC00FBFE, .BASE, .PPC32, {}} }, .NEG_DOT = { {.NEG_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0000D1, 0xFC00FBFF, .BASE, .PPC32, {sets_cr0=true}} }, .NEG_O = { {.NEG_O, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0004D0, 0xFC00FFFE, .BASE, .PPC32, {has_oe=true}} }, .NEG_O_DOT = { {.NEG_O_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RA, .NONE, .NONE}, 0x7C0004D1, 0xFC00FFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, // Multiply .MULHW = { {.MULHW, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000096, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULHW_DOT = { {.MULHW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000097, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .MULHWU = { {.MULHWU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000016, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULHWU_DOT = { {.MULHWU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000017, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .MULLW = { {.MULLW, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D6, 0xFC0003FE, .BASE, .PPC32, {}} }, .MULLW_DOT = { {.MULLW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D7, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .MULLW_O = { {.MULLW_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D6, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .MULLW_O_DOT = { {.MULLW_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D7, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .MULLD = { {.MULLD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D2, 0xFC0003FE, .P64, .PPC64, {}} }, .MULLD_DOT = { {.MULLD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D3, 0xFC0003FF, .P64, .PPC64, {sets_cr0=true}} }, .MULLD_O = { {.MULLD_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D2, 0xFC0007FE, .P64, .PPC64, {has_oe=true}} }, .MULLD_O_DOT = { {.MULLD_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D3, 0xFC0007FF, .P64, .PPC64, {has_oe=true, sets_cr0=true}} }, .MULHD = { {.MULHD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000092, 0xFC0007FE, .P64, .PPC64, {}} }, .MULHD_DOT = { {.MULHD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000093, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, .MULHDU = { {.MULHDU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000012, 0xFC0007FE, .P64, .PPC64, {}} }, .MULHDU_DOT = { {.MULHDU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000013, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, // Divide .DIVW = { {.DIVW, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D6, 0xFC0003FE, .BASE, .PPC32, {}} }, .DIVW_DOT = { {.DIVW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D7, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVW_O = { {.DIVW_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D6, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVW_O_DOT = { {.DIVW_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D7, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .DIVWU = { {.DIVWU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000396, 0xFC0003FE, .BASE, .PPC32, {}} }, .DIVWU_DOT = { {.DIVWU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000397, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVWU_O = { {.DIVWU_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000796, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVWU_O_DOT = { {.DIVWU_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000797, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .DIVD = { {.DIVD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D2, 0xFC0003FE, .P64, .PPC64, {}} }, .DIVD_DOT = { {.DIVD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D3, 0xFC0003FF, .P64, .PPC64, {sets_cr0=true}} }, .DIVD_O = { {.DIVD_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D2, 0xFC0007FE, .P64, .PPC64, {has_oe=true}} }, .DIVD_O_DOT = { {.DIVD_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D3, 0xFC0007FF, .P64, .PPC64, {has_oe=true, sets_cr0=true}} }, .DIVDU = { {.DIVDU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000392, 0xFC0003FE, .P64, .PPC64, {}} }, .DIVDU_DOT = { {.DIVDU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000393, 0xFC0003FF, .P64, .PPC64, {sets_cr0=true}} }, .DIVDU_O = { {.DIVDU_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000792, 0xFC0007FE, .P64, .PPC64, {has_oe=true}} }, .DIVDU_O_DOT = { {.DIVDU_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000793, 0xFC0007FF, .P64, .PPC64, {has_oe=true, sets_cr0=true}} }, // Extended divides (POWER7) .DIVWE = { {.DIVWE, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000356, 0xFC0003FE, .BASE, .PPC32, {}} }, .DIVWEU = { {.DIVWEU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000316, 0xFC0003FE, .BASE, .PPC32, {}} }, .DIVDE = { {.DIVDE, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000352, 0xFC0003FE, .P64, .PPC64, {}} }, .DIVDEU = { {.DIVDEU, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000312, 0xFC0003FE, .P64, .PPC64, {}} }, // Modulo (POWER9) .MODSW = { {.MODSW, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000616, 0xFC0007FE, .POWER9, .PPC32, {}} }, .MODUW = { {.MODUW, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000216, 0xFC0007FE, .POWER9, .PPC32, {}} }, .MODSD = { {.MODSD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000612, 0xFC0007FE, .POWER9, .PPC64, {}} }, .MODUD = { {.MODUD, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000212, 0xFC0007FE, .POWER9, .PPC64, {}} }, // Trap (D-form twi/tdi + X-form tw/td) // twi primary= 3 → 0x0C000000 TO at bits 21..25 // tdi primary= 2 → 0x08000000 // tw primary=31, XO= 4 → 0x7C000008 // td primary=31, XO= 68 → 0x7C000088 .TWI = { {.TWI, {.IMM, .GPR, .SIMM, .NONE}, {.TO_FIELD, .RA, .D16, .NONE}, 0x0C000000, 0xFC000000, .BASE, .PPC32, {}} }, .TDI = { {.TDI, {.IMM, .GPR, .SIMM, .NONE}, {.TO_FIELD, .RA, .D16, .NONE}, 0x08000000, 0xFC000000, .P64, .PPC64, {}} }, .TW = { {.TW, {.IMM, .GPR, .GPR, .NONE}, {.TO_FIELD, .RA, .RB, .NONE}, 0x7C000008, 0xFC0007FE, .BASE, .PPC32, {}} }, .TD = { {.TD, {.IMM, .GPR, .GPR, .NONE}, {.TO_FIELD, .RA, .RB, .NONE}, 0x7C000088, 0xFC0007FE, .P64, .PPC64, {}} }, // ========================================================================= // §7 Logical / shift / rotate // ========================================================================= // // D-form logical immediates: // andi. primary=28 → 0x70000000 // andis. primary=29 → 0x74000000 // ori primary=24 → 0x60000000 // oris primary=25 → 0x64000000 // xori primary=26 → 0x68000000 // xoris primary=27 → 0x6C000000 .ANDI_DOT = { {.ANDI_DOT, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x70000000, 0xFC000000, .BASE, .PPC32, {sets_cr0=true}} }, .ANDIS_DOT = { {.ANDIS_DOT, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x74000000, 0xFC000000, .BASE, .PPC32, {sets_cr0=true}} }, .ORI = { {.ORI, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x60000000, 0xFC000000, .BASE, .PPC32, {}} }, .ORIS = { {.ORIS, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x64000000, 0xFC000000, .BASE, .PPC32, {}} }, .XORI = { {.XORI, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x68000000, 0xFC000000, .BASE, .PPC32, {}} }, .XORIS = { {.XORIS, {.GPR, .GPR, .UIMM, .NONE}, {.RA, .RS, .UI16, .NONE}, 0x6C000000, 0xFC000000, .BASE, .PPC32, {}} }, // X-form logical (primary=31, XO at bits 1..10): // and XO= 28 → 0x7C000038 // or XO=444 → 0x7C000378 // xor XO=316 → 0x7C000278 // nand XO=476 → 0x7C0003B8 // nor XO=124 → 0x7C0000F8 // eqv XO=284 → 0x7C000238 // andc XO= 60 → 0x7C000078 // orc XO=412 → 0x7C000338 // extsb XO=954 → 0x7C000774 // extsh XO=922 → 0x7C000734 // extsw XO=986 → 0x7C0007B4 // cntlzw XO= 26 → 0x7C000034 // cntlzd XO= 58 → 0x7C000074 // cnttzw XO=538 → 0x7C00042A — collision with lswx XO=533; actual XO=538<<1=0x434 → 0x7C000434 // cnttzd XO=570 → 0x7C000474 // popcntb XO=122 → 0x7C0000F4 // popcntw XO=378 → 0x7C0002F4 // popcntd XO=506 → 0x7C0003F4 // prtyw XO=154 → 0x7C000134 // prtyd XO=186 → 0x7C000174 // bpermd XO=252 → 0x7C0001F8 // cmpb XO=508 → 0x7C0003F8 .AND = { {.AND, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000038, 0xFC0007FE, .BASE, .PPC32, {}} }, .AND_DOT = { {.AND_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000039, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .OR = { {.OR, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000378, 0xFC0007FE, .BASE, .PPC32, {}} }, .OR_DOT = { {.OR_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000379, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .XOR = { {.XOR, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000278, 0xFC0007FE, .BASE, .PPC32, {}} }, .XOR_DOT = { {.XOR_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000279, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .NAND = { {.NAND, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0003B8, 0xFC0007FE, .BASE, .PPC32, {}} }, .NAND_DOT = { {.NAND_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0003B9, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .NOR = { {.NOR, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0000F8, 0xFC0007FE, .BASE, .PPC32, {}} }, .NOR_DOT = { {.NOR_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0000F9, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .EQV = { {.EQV, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000238, 0xFC0007FE, .BASE, .PPC32, {}} }, .EQV_DOT = { {.EQV_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000239, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .ANDC = { {.ANDC, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000078, 0xFC0007FE, .BASE, .PPC32, {}} }, .ANDC_DOT = { {.ANDC_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000079, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .ORC = { {.ORC, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000338, 0xFC0007FE, .BASE, .PPC32, {}} }, .ORC_DOT = { {.ORC_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000339, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .EXTSB = { {.EXTSB, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000774, 0xFC00FFFE, .BASE, .PPC32, {}} }, .EXTSB_DOT = { {.EXTSB_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000775, 0xFC00FFFF, .BASE, .PPC32, {sets_cr0=true}} }, .EXTSH = { {.EXTSH, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000734, 0xFC00FFFE, .BASE, .PPC32, {}} }, .EXTSH_DOT = { {.EXTSH_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000735, 0xFC00FFFF, .BASE, .PPC32, {sets_cr0=true}} }, .EXTSW = { {.EXTSW, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C0007B4, 0xFC00FFFE, .P64, .PPC64, {}} }, .EXTSW_DOT = { {.EXTSW_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C0007B5, 0xFC00FFFF, .P64, .PPC64, {sets_cr0=true}} }, .CNTLZW = { {.CNTLZW, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000034, 0xFC00FFFE, .BASE, .PPC32, {}} }, .CNTLZW_DOT= { {.CNTLZW_DOT,{.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000035, 0xFC00FFFF, .BASE, .PPC32, {sets_cr0=true}} }, .CNTLZD = { {.CNTLZD, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000074, 0xFC00FFFE, .P64, .PPC64, {}} }, .CNTLZD_DOT= { {.CNTLZD_DOT,{.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000075, 0xFC00FFFF, .P64, .PPC64, {sets_cr0=true}} }, .CNTTZW = { {.CNTTZW, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000434, 0xFC00FFFE, .POWER9, .PPC32, {}} }, .CNTTZW_DOT= { {.CNTTZW_DOT,{.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000435, 0xFC00FFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .CNTTZD = { {.CNTTZD, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000474, 0xFC00FFFE, .POWER9, .PPC64, {}} }, .CNTTZD_DOT= { {.CNTTZD_DOT,{.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000475, 0xFC00FFFF, .POWER9, .PPC64, {sets_cr0=true}} }, .POPCNTB = { {.POPCNTB, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C0000F4, 0xFC00FFFE, .BASE, .PPC32, {}} }, .POPCNTW = { {.POPCNTW, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C0002F4, 0xFC00FFFE, .BASE, .PPC32, {}} }, .POPCNTD = { {.POPCNTD, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C0003F4, 0xFC00FFFE, .P64, .PPC64, {}} }, .PRTYW = { {.PRTYW, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000134, 0xFC00FFFE, .BASE, .PPC32, {}} }, .PRTYD = { {.PRTYD, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C000174, 0xFC00FFFE, .P64, .PPC64, {}} }, .BPERMD = { {.BPERMD, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0001F8, 0xFC0007FE, .P64, .PPC64, {}} }, .CMPB = { {.CMPB, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C0003F8, 0xFC0007FE, .BASE, .PPC32, {}} }, // Shifts (X-form): // slw XO= 24 → 0x7C000030 // srw XO=536 → 0x7C000430 // sraw XO=792 → 0x7C000630 // srawi XO=824 → 0x7C000670 (M-form-ish, SH at bits 11..15) // sld XO= 27 → 0x7C000036 // srd XO=539 → 0x7C000436 // srad XO=794 → 0x7C000634 // sradi XO=413 → 0x7C000674 (XS-form: SH split across bit 1 + 11..15) .SLW = { {.SLW, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000030, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLW_DOT = { {.SLW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000031, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .SRW = { {.SRW, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000430, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRW_DOT = { {.SRW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000431, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .SRAW = { {.SRAW, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000630, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAW_DOT = { {.SRAW_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000631, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .SRAWI = { {.SRAWI, {.GPR, .GPR, .IMM, .NONE}, {.RA, .RS, .SH5, .NONE}, 0x7C000670, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAWI_DOT = { {.SRAWI_DOT, {.GPR, .GPR, .IMM, .NONE}, {.RA, .RS, .SH5, .NONE}, 0x7C000671, 0xFC0007FF, .BASE, .PPC32, {sets_cr0=true}} }, .SLD = { {.SLD, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000036, 0xFC0007FE, .P64, .PPC64, {}} }, .SLD_DOT = { {.SLD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000037, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, .SRD = { {.SRD, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000436, 0xFC0007FE, .P64, .PPC64, {}} }, .SRD_DOT = { {.SRD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000437, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, .SRAD = { {.SRAD, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000634, 0xFC0007FE, .P64, .PPC64, {}} }, .SRAD_DOT = { {.SRAD_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RA, .RS, .RB, .NONE}, 0x7C000635, 0xFC0007FF, .P64, .PPC64, {sets_cr0=true}} }, .SRADI = { {.SRADI, {.GPR, .GPR, .IMM, .NONE}, {.RA, .RS, .SH6, .NONE}, 0x7C000674, 0xFC0007FC, .P64, .PPC64, {}} }, .SRADI_DOT = { {.SRADI_DOT, {.GPR, .GPR, .IMM, .NONE}, {.RA, .RS, .SH6, .NONE}, 0x7C000675, 0xFC0007FD, .P64, .PPC64, {sets_cr0=true}} }, // Rotate (M-form): // rlwinm primary=21 → 0x54000000 // rlwnm primary=23 → 0x5C000000 // rlwimi primary=20 → 0x50000000 // rldicl primary=30, XO=0 → 0x78000000 // rldicr primary=30, XO=1 → 0x78000004 // rldic primary=30, XO=2 → 0x78000008 // rldimi primary=30, XO=3 → 0x7800000C // rldcl primary=30, XO=8 (MDS) → 0x78000010 // rldcr primary=30, XO=9 → 0x78000012 .RLWINM = { {.RLWINM, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH5, .MB5}, 0x54000000, 0xFC000001, .BASE, .PPC32, {}} }, .RLWINM_DOT = { {.RLWINM_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH5, .MB5}, 0x54000001, 0xFC000001, .BASE, .PPC32, {sets_cr0=true}} }, .RLWNM = { {.RLWNM, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB5}, 0x5C000000, 0xFC000001, .BASE, .PPC32, {}} }, .RLWNM_DOT = { {.RLWNM_DOT, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB5}, 0x5C000001, 0xFC000001, .BASE, .PPC32, {sets_cr0=true}} }, .RLWIMI = { {.RLWIMI, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH5, .MB5}, 0x50000000, 0xFC000001, .BASE, .PPC32, {}} }, .RLWIMI_DOT = { {.RLWIMI_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH5, .MB5}, 0x50000001, 0xFC000001, .BASE, .PPC32, {sets_cr0=true}} }, .RLDICL = { {.RLDICL, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000000, 0xFC00001D, .P64, .PPC64, {}} }, .RLDICL_DOT = { {.RLDICL_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000001, 0xFC00001D, .P64, .PPC64, {sets_cr0=true}} }, .RLDICR = { {.RLDICR, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000004, 0xFC00001D, .P64, .PPC64, {}} }, .RLDICR_DOT = { {.RLDICR_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000005, 0xFC00001D, .P64, .PPC64, {sets_cr0=true}} }, .RLDIC = { {.RLDIC, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000008, 0xFC00001D, .P64, .PPC64, {}} }, .RLDIC_DOT = { {.RLDIC_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x78000009, 0xFC00001D, .P64, .PPC64, {sets_cr0=true}} }, .RLDIMI = { {.RLDIMI, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x7800000C, 0xFC00001D, .P64, .PPC64, {}} }, .RLDIMI_DOT = { {.RLDIMI_DOT, {.GPR, .GPR, .IMM, .IMM}, {.RA, .RS, .SH6, .MB6}, 0x7800000D, 0xFC00001D, .P64, .PPC64, {sets_cr0=true}} }, .RLDCL = { {.RLDCL, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB6}, 0x78000010, 0xFC00003F, .P64, .PPC64, {}} }, .RLDCL_DOT = { {.RLDCL_DOT, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB6}, 0x78000011, 0xFC00003F, .P64, .PPC64, {sets_cr0=true}} }, .RLDCR = { {.RLDCR, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB6}, 0x78000012, 0xFC00003F, .P64, .PPC64, {}} }, .RLDCR_DOT = { {.RLDCR_DOT, {.GPR, .GPR, .GPR, .IMM}, {.RA, .RS, .RB, .MB6}, 0x78000013, 0xFC00003F, .P64, .PPC64, {sets_cr0=true}} }, // ========================================================================= // §8 Compare // ========================================================================= // // D-form: cmpi primary=11 / cmpli primary=10: // cmpi 0x2C000000 (BF at bits 23..25, L at bit 21, RA at 16..20, SI at 0..15) // cmpli 0x28000000 (UI at 0..15) // X-form: cmp/cmpl primary=31, XO=0/32: // cmp XO= 0 → 0x7C000000 (mask must avoid colliding with mcrf) // cmpl XO= 32 → 0x7C000040 // cmprb XO=192 → 0x7C000180 (ISA 3.0) // cmpeqb XO=224 → 0x7C0001C0 (ISA 3.0) .CMPI = { {.CMPI, {.CR_FIELD, .IMM, .GPR, .SIMM}, {.BF, .L_FIELD, .RA, .D16}, 0x2C000000, 0xFC400000, .BASE, .PPC32, {}} }, .CMPLI = { {.CMPLI, {.CR_FIELD, .IMM, .GPR, .UIMM}, {.BF, .L_FIELD, .RA, .UI16}, 0x28000000, 0xFC400000, .BASE, .PPC32, {}} }, .CMP = { {.CMP, {.CR_FIELD, .IMM, .GPR, .GPR}, {.BF, .L_FIELD, .RA, .RB}, 0x7C000000, 0xFC4007FE, .BASE, .PPC32, {}} }, .CMPL = { {.CMPL, {.CR_FIELD, .IMM, .GPR, .GPR}, {.BF, .L_FIELD, .RA, .RB}, 0x7C000040, 0xFC4007FE, .BASE, .PPC32, {}} }, .CMPRB = { {.CMPRB, {.CR_FIELD, .IMM, .GPR, .GPR}, {.BF, .L_FIELD, .RA, .RB}, 0x7C000180, 0xFC4007FE, .POWER9, .PPC32, {}} }, .CMPEQB= { {.CMPEQB,{.CR_FIELD, .GPR, .GPR, .NONE}, {.BF, .RA, .RB, .NONE}, 0x7C0001C0, 0xFC6007FE, .POWER9, .PPC32, {}} }, // ========================================================================= // §9 Floating-point arithmetic (A/X-form, primary 59 single, 63 double) // ========================================================================= // // A-form double-precision (primary=63): // fadd XO=21 → 0x7C00 prefix... wait, primary 63 → 0xFC000000 // → 21<<1=0x2A → 0xFC00002A // fsub XO=20 → 0xFC000028 // fmul XO=25 → 0xFC000032 (FRC at bits 6..10 used; FRB unused) // fdiv XO=18 → 0xFC000024 // fsqrt XO=22 → 0xFC00002C (no FRA, no FRC) // fre XO=24 → 0xFC000030 (no FRA, no FRC) // frsqrte XO=26→ 0xFC000034 (no FRA, no FRC) // fmadd XO=29 → 0xFC00003A (full A-form: FRA,FRC,FRB) // fmsub XO=28 → 0xFC000038 // fnmadd XO=31 → 0xFC00003E // fnmsub XO=30 → 0xFC00003C // fsel XO=23 → 0xFC00002E // // Single-precision (primary=59) — same XO values, mnemonic + "s": // fadds: 0xEC00002A, fsubs: 0xEC000028, etc. .FADD = { {.FADD, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC00002A, 0xFC0007FE, .FP, .PPC32, {}} }, .FADD_DOT = { {.FADD_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC00002B, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FADDS = { {.FADDS, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC00002A, 0xFC0007FE, .FP, .PPC32, {}} }, .FADDS_DOT = { {.FADDS_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC00002B, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FSUB = { {.FSUB, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000028, 0xFC0007FE, .FP, .PPC32, {}} }, .FSUB_DOT = { {.FSUB_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000029, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FSUBS = { {.FSUBS, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC000028, 0xFC0007FE, .FP, .PPC32, {}} }, .FSUBS_DOT = { {.FSUBS_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC000029, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FMUL = { {.FMUL, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0xFC000032, 0xFC00F83E, .FP, .PPC32, {}} }, .FMUL_DOT = { {.FMUL_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0xFC000033, 0xFC00F83F, .FP, .PPC32, {sets_cr1=true}} }, .FMULS = { {.FMULS, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0xEC000032, 0xFC00F83E, .FP, .PPC32, {}} }, .FMULS_DOT = { {.FMULS_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0xEC000033, 0xFC00F83F, .FP, .PPC32, {sets_cr1=true}} }, .FDIV = { {.FDIV, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000024, 0xFC0007FE, .FP, .PPC32, {}} }, .FDIV_DOT = { {.FDIV_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000025, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FDIVS = { {.FDIVS, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC000024, 0xFC0007FE, .FP, .PPC32, {}} }, .FDIVS_DOT = { {.FDIVS_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xEC000025, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FSQRT = { {.FSQRT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00002C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FSQRT_DOT = { {.FSQRT_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00002D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FSQRTS = { {.FSQRTS, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00002C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FSQRTS_DOT = { {.FSQRTS_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00002D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRE = { {.FRE, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000030, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRE_DOT = { {.FRE_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000031, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRES = { {.FRES, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC000030, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRES_DOT = { {.FRES_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC000031, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRSQRTE = { {.FRSQRTE, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000034, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRSQRTE_DOT= { {.FRSQRTE_DOT,{.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000035, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRSQRTES = { {.FRSQRTES, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC000034, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRSQRTES_DOT={ {.FRSQRTES_DOT,{.FPR,.FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC000035, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FMADD = { {.FMADD, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003A, 0xFC00003E, .FP, .PPC32, {}} }, .FMADD_DOT = { {.FMADD_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003B, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FMADDS = { {.FMADDS, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003A, 0xFC00003E, .FP, .PPC32, {}} }, .FMADDS_DOT = { {.FMADDS_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003B, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FMSUB = { {.FMSUB, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC000038, 0xFC00003E, .FP, .PPC32, {}} }, .FMSUB_DOT = { {.FMSUB_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC000039, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FMSUBS = { {.FMSUBS, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC000038, 0xFC00003E, .FP, .PPC32, {}} }, .FMSUBS_DOT = { {.FMSUBS_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC000039, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FNMADD = { {.FNMADD, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003E, 0xFC00003E, .FP, .PPC32, {}} }, .FNMADD_DOT = { {.FNMADD_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003F, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FNMADDS = { {.FNMADDS, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003E, 0xFC00003E, .FP, .PPC32, {}} }, .FNMADDS_DOT= { {.FNMADDS_DOT,{.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003F, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FNMSUB = { {.FNMSUB, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003C, 0xFC00003E, .FP, .PPC32, {}} }, .FNMSUB_DOT = { {.FNMSUB_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00003D, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FNMSUBS = { {.FNMSUBS, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003C, 0xFC00003E, .FP, .PPC32, {}} }, .FNMSUBS_DOT= { {.FNMSUBS_DOT,{.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xEC00003D, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, .FSEL = { {.FSEL, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00002E, 0xFC00003E, .FP, .PPC32, {}} }, .FSEL_DOT = { {.FSEL_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0xFC00002F, 0xFC00003F, .FP, .PPC32, {sets_cr1=true}} }, // FP unary X-form (primary=63): // fmr XO= 72 → 0xFC000090 (no FRA) // fneg XO= 40 → 0xFC000050 // fabs XO=264 → 0xFC000210 // fnabs XO=136 → 0xFC000110 // fcpsgn XO= 8 → 0xFC000010 (POWER6) // frsp XO= 12 → 0xFC000018 // fctid XO=814 → 0xFC00065C // fctidu XO=943 → 0xFC00075E // fctidz XO=815 → 0xFC00065E // fctiduz XO=943 — wait dup; actually fctiduz XO=815... no. // Per ISA 3.0: fctidz=815, fctiduz=815 with U bit. Actually fctiduz XO=815? // Let me consult: fctiwuz XO=143, fctiduz XO=815. The bit layout uses U at bit 11... hmm. // Safer: just enumerate from LLVM-generated tables. // fctiw XO= 14 → 0xFC00001C // fctiwu XO=143 → 0xFC00011E // fctiwz XO= 15 → 0xFC00001E // fctiwuz XO=143 (with U bit set similarly) // fcfid XO=846 → 0xFC00069C // fcfidu XO=974 → 0xFC00079C // fcfids XO=846 (primary=59) → 0xEC00069C // fcfidus XO=974 (primary=59) → 0xEC00079C .FMR = { {.FMR, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000090, 0xFC1F07FE, .FP, .PPC32, {}} }, .FMR_DOT = { {.FMR_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000091, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FNEG = { {.FNEG, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000050, 0xFC1F07FE, .FP, .PPC32, {}} }, .FNEG_DOT = { {.FNEG_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000051, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FABS = { {.FABS, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000210, 0xFC1F07FE, .FP, .PPC32, {}} }, .FABS_DOT = { {.FABS_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000211, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FNABS = { {.FNABS, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000110, 0xFC1F07FE, .FP, .PPC32, {}} }, .FNABS_DOT = { {.FNABS_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000111, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCPSGN = { {.FCPSGN, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000010, 0xFC0007FE, .FP, .PPC32, {}} }, .FCPSGN_DOT = { {.FCPSGN_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC000011, 0xFC0007FF, .FP, .PPC32, {sets_cr1=true}} }, .FRSP = { {.FRSP, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000018, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRSP_DOT = { {.FRSP_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000019, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTID = { {.FCTID, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00065C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTID_DOT = { {.FCTID_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00065D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIDU = { {.FCTIDU, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00075C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIDU_DOT = { {.FCTIDU_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00075D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIDZ = { {.FCTIDZ, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00065E, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIDZ_DOT = { {.FCTIDZ_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00065F, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIDUZ = { {.FCTIDUZ, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00075E, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIDUZ_DOT= { {.FCTIDUZ_DOT,{.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00075F, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIW = { {.FCTIW, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00001C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIW_DOT = { {.FCTIW_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00001D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIWU = { {.FCTIWU, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00011C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIWU_DOT = { {.FCTIWU_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00011D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIWZ = { {.FCTIWZ, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00001E, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIWZ_DOT = { {.FCTIWZ_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00001F, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCTIWUZ = { {.FCTIWUZ, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00011E, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCTIWUZ_DOT= { {.FCTIWUZ_DOT,{.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00011F, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCFID = { {.FCFID, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00069C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCFID_DOT = { {.FCFID_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00069D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCFIDU = { {.FCFIDU, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00079C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCFIDU_DOT = { {.FCFIDU_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC00079D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCFIDS = { {.FCFIDS, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00069C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCFIDS_DOT = { {.FCFIDS_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00069D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FCFIDUS = { {.FCFIDUS, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00079C, 0xFC1F07FE, .FP, .PPC32, {}} }, .FCFIDUS_DOT= { {.FCFIDUS_DOT,{.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xEC00079D, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, // Round to integer (frin/friz/frip/frim): // XO=392 → 0xFC000310 (frin) // XO=424 → 0xFC000350 (friz) // XO=456 → 0xFC000390 (frip) // XO=488 → 0xFC0003D0 (frim) .FRIN = { {.FRIN, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000310, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRIN_DOT = { {.FRIN_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000311, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRIZ = { {.FRIZ, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000350, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRIZ_DOT = { {.FRIZ_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000351, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRIP = { {.FRIP, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000390, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRIP_DOT = { {.FRIP_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC000391, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, .FRIM = { {.FRIM, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC0003D0, 0xFC1F07FE, .FP, .PPC32, {}} }, .FRIM_DOT = { {.FRIM_DOT, {.FPR, .FPR, .NONE, .NONE}, {.FRT, .FRB, .NONE, .NONE}, 0xFC0003D1, 0xFC1F07FF, .FP, .PPC32, {sets_cr1=true}} }, // FP compare: // fcmpu primary=63 XO= 0 → 0xFC000000 (BF at 23..25) // fcmpo primary=63 XO=32 → 0xFC000040 // ftdiv primary=63 XO=128 → 0xFC000100 (POWER7) // ftsqrt primary=63 XO=160 → 0xFC000140 // fmrgew primary=63 XO=966 → 0xFC00078C (POWER8) // fmrgow primary=63 XO=838 → 0xFC00068C (POWER8) .FCMPU = { {.FCMPU, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0xFC000000, 0xFC6007FE, .FP, .PPC32, {}} }, .FCMPO = { {.FCMPO, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0xFC000040, 0xFC6007FE, .FP, .PPC32, {}} }, .FTDIV = { {.FTDIV, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0xFC000100, 0xFC6007FE, .FP, .PPC32, {}} }, .FTSQRT= { {.FTSQRT,{.CR_FIELD, .FPR, .NONE,.NONE}, {.BF, .FRB, .NONE,.NONE}, 0xFC000140, 0xFC7F07FE, .FP, .PPC32, {}} }, .FMRGEW= { {.FMRGEW,{.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC00078C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .FMRGOW= { {.FMRGOW,{.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0xFC00068C, 0xFC0007FE, .POWER8, .PPC32, {}} }, // FP loads/stores (D-form): // lfs primary=48 → 0xC0000000 // lfsu primary=49 → 0xC4000000 // lfd primary=50 → 0xC8000000 // lfdu primary=51 → 0xCC000000 // stfs primary=52 → 0xD0000000 // stfsu primary=53 → 0xD4000000 // stfd primary=54 → 0xD8000000 // stfdu primary=55 → 0xDC000000 // lfdp primary=57 (DS-form, XO=0) → 0xE4000000 (POWER7) // stfdp primary=61 (DS-form, XO=0) → 0xF4000000 // X-form (primary=31): // lfsx XO=535 → 0x7C00042E // lfsux XO=567 → 0x7C00046E // lfdx XO=599 → 0x7C0004AE // lfdux XO=631 → 0x7C0004EE // stfsx XO=663 → 0x7C00052E // stfsux XO=695 → 0x7C00056E // stfdx XO=727 → 0x7C0005AE // stfdux XO=759 → 0x7C0005EE // lfiwax XO=855 → 0x7C0006AE (POWER6) // lfiwzx XO=887 → 0x7C0006EE (POWER7) // stfiwx XO=983 → 0x7C0007AE // lfdpx XO=791 → 0x7C00062E // stfdpx XO=919 → 0x7C00072E .LFS = { {.LFS, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC0000000, 0xFC000000, .FP, .PPC32, {}} }, .LFSU = { {.LFSU, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC4000000, 0xFC000000, .FP, .PPC32, {}} }, .LFD = { {.LFD, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC8000000, 0xFC000000, .FP, .PPC32, {}} }, .LFDU = { {.LFDU, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xCC000000, 0xFC000000, .FP, .PPC32, {}} }, .STFS = { {.STFS, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD0000000, 0xFC000000, .FP, .PPC32, {}} }, .STFSU = { {.STFSU, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD4000000, 0xFC000000, .FP, .PPC32, {}} }, .STFD = { {.STFD, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD8000000, 0xFC000000, .FP, .PPC32, {}} }, .STFDU = { {.STFDU, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xDC000000, 0xFC000000, .FP, .PPC32, {}} }, .LFDP = { {.LFDP, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE4000000, 0xFC000003, .FP, .PPC32, {}} }, .STFDP = { {.STFDP, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF4000000, 0xFC000003, .FP, .PPC32, {}} }, .LFSX = { {.LFSX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00042E, 0xFC0007FE, .FP, .PPC32, {}} }, .LFSUX = { {.LFSUX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00046E, 0xFC0007FE, .FP, .PPC32, {}} }, .LFDX = { {.LFDX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0004AE, 0xFC0007FE, .FP, .PPC32, {}} }, .LFDUX = { {.LFDUX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0004EE, 0xFC0007FE, .FP, .PPC32, {}} }, .STFSX = { {.STFSX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00052E, 0xFC0007FE, .FP, .PPC32, {}} }, .STFSUX = { {.STFSUX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00056E, 0xFC0007FE, .FP, .PPC32, {}} }, .STFDX = { {.STFDX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0005AE, 0xFC0007FE, .FP, .PPC32, {}} }, .STFDUX = { {.STFDUX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0005EE, 0xFC0007FE, .FP, .PPC32, {}} }, .LFIWAX = { {.LFIWAX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0006AE, 0xFC0007FE, .FP, .PPC32, {}} }, .LFIWZX = { {.LFIWZX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0006EE, 0xFC0007FE, .FP, .PPC32, {}} }, .STFIWX = { {.STFIWX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0007AE, 0xFC0007FE, .FP, .PPC32, {}} }, .LFDPX = { {.LFDPX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00062E, 0xFC0007FE, .FP, .PPC32, {}} }, .STFDPX = { {.STFDPX, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00072E, 0xFC0007FE, .FP, .PPC32, {}} }, // FPSCR control: // mffs primary=63 XO=583 → 0xFC00048E // mcrfs primary=63 XO= 64 → 0xFC000080 // mtfsb0 primary=63 XO= 70 → 0xFC00008C // mtfsb1 primary=63 XO= 38 → 0xFC00004C // mtfsfi primary=63 XO=134 → 0xFC00010C // mtfsf primary=63 XO=711 → 0xFC00058E .MFFS = { {.MFFS, {.FPR, .NONE, .NONE, .NONE}, {.FRT, .NONE, .NONE, .NONE}, 0xFC00048E, 0xFC1FFFFE, .FP, .PPC32, {}} }, .MFFS_DOT = { {.MFFS_DOT, {.FPR, .NONE, .NONE, .NONE}, {.FRT, .NONE, .NONE, .NONE}, 0xFC00048F, 0xFC1FFFFF, .FP, .PPC32, {sets_cr1=true}} }, .MCRFS = { {.MCRFS, {.CR_FIELD, .CR_FIELD, .NONE, .NONE}, {.BF, .BFA, .NONE, .NONE}, 0xFC000080, 0xFC63FFFE, .FP, .PPC32, {}} }, .MTFSB0 = { {.MTFSB0, {.CR_BIT, .NONE, .NONE, .NONE}, {.BT, .NONE, .NONE, .NONE}, 0xFC00008C, 0xFC1FFFFE, .FP, .PPC32, {}} }, .MTFSB0_DOT = { {.MTFSB0_DOT, {.CR_BIT, .NONE, .NONE, .NONE}, {.BT, .NONE, .NONE, .NONE}, 0xFC00008D, 0xFC1FFFFF, .FP, .PPC32, {sets_cr1=true}} }, .MTFSB1 = { {.MTFSB1, {.CR_BIT, .NONE, .NONE, .NONE}, {.BT, .NONE, .NONE, .NONE}, 0xFC00004C, 0xFC1FFFFE, .FP, .PPC32, {}} }, .MTFSB1_DOT = { {.MTFSB1_DOT, {.CR_BIT, .NONE, .NONE, .NONE}, {.BT, .NONE, .NONE, .NONE}, 0xFC00004D, 0xFC1FFFFF, .FP, .PPC32, {sets_cr1=true}} }, .MTFSFI = { {.MTFSFI, {.CR_FIELD, .IMM, .NONE, .NONE}, {.BF, .UIMM_4, .NONE, .NONE}, 0xFC00010C, 0xFC7E0FFE, .FP, .PPC32, {}} }, .MTFSFI_DOT = { {.MTFSFI_DOT, {.CR_FIELD, .IMM, .NONE, .NONE}, {.BF, .UIMM_4, .NONE, .NONE}, 0xFC00010D, 0xFC7E0FFF, .FP, .PPC32, {sets_cr1=true}} }, .MTFSF = { {.MTFSF, {.IMM, .FPR, .NONE, .NONE}, {.FXM, .FRB, .NONE, .NONE}, 0xFC00058E, 0xFE0107FE, .FP, .PPC32, {}} }, .MTFSF_DOT = { {.MTFSF_DOT, {.IMM, .FPR, .NONE, .NONE}, {.FXM, .FRB, .NONE, .NONE}, 0xFC00058F, 0xFE0107FF, .FP, .PPC32, {sets_cr1=true}} }, // ========================================================================= // §10 SPR / system / cache // ========================================================================= // // XFX-form (primary=31, XO=339/467): // mfspr XO=339 → 0x7C0002A6 // mtspr XO=467 → 0x7C0003A6 // mftb XO=371 → 0x7C0002E6 (deprecated by mfspr) // mfcr XO= 19 → 0x7C000026 (RT at 21..25, no SPR field) // mfocrf XO= 19 with bit 20 = 1 // mtcrf XO=144 → 0x7C000120 // mtocrf XO=144 with bit 20 = 1 // mtmsr XO=146 (sup) // mfmsr XO= 83 // mtmsrd XO=178 (sup) .MFSPR = { {.MFSPR, {.GPR, .SPR, .NONE, .NONE}, {.RT, .SPR_FIELD, .NONE, .NONE}, 0x7C0002A6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTSPR = { {.MTSPR, {.SPR, .GPR, .NONE, .NONE}, {.SPR_FIELD, .RS, .NONE, .NONE}, 0x7C0003A6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFTB = { {.MFTB, {.GPR, .SPR, .NONE, .NONE}, {.RT, .SPR_FIELD, .NONE, .NONE}, 0x7C0002E6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFCR = { {.MFCR, {.GPR, .NONE, .NONE, .NONE}, {.RT, .NONE, .NONE, .NONE}, 0x7C000026, 0xFC1FFFFE, .BASE, .PPC32, {}} }, .MFOCRF = { {.MFOCRF,{.GPR, .IMM, .NONE, .NONE}, {.RT, .CRM, .NONE, .NONE}, 0x7C100026, 0xFC101FFE, .BASE, .PPC32, {}} }, .MTCRF = { {.MTCRF, {.IMM, .GPR, .NONE, .NONE}, {.CRM, .RS, .NONE, .NONE}, 0x7C000120, 0xFC100FFE, .BASE, .PPC32, {}} }, .MTOCRF = { {.MTOCRF,{.IMM, .GPR, .NONE, .NONE}, {.CRM, .RS, .NONE, .NONE}, 0x7C100120, 0xFC101FFE, .BASE, .PPC32, {}} }, .MFMSR = { {.MFMSR, {.GPR, .NONE, .NONE, .NONE}, {.RT, .NONE, .NONE, .NONE}, 0x7C0000A6, 0xFC1FFFFE, .SUPV, .PPC32, {}} }, .MTMSR = { {.MTMSR, {.GPR, .NONE, .NONE, .NONE}, {.RS, .NONE, .NONE, .NONE}, 0x7C000124, 0xFC1FFFFE, .SUPV, .PPC32, {}} }, .MTMSRD = { {.MTMSRD,{.GPR, .NONE, .NONE, .NONE}, {.RS, .NONE, .NONE, .NONE}, 0x7C000164, 0xFC1FFFFE, .SUPV, .PPC64, {}} }, // RFI/RFID/HRFID (XL-form, supervisor): // rfi primary=19 XO= 50 → 0x4C000064 // rfid primary=19 XO= 18 → 0x4C000024 (PPC64) // hrfid primary=19 XO=274 → 0x4C000224 .RFI = { {.RFI, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C000064, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .RFID = { {.RFID, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C000024, 0xFFFFFFFE, .SUPV, .PPC64, {}} }, .HRFID = { {.HRFID, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C000224, 0xFFFFFFFE, .HV, .PPC64, {}} }, // Synchronization (X-form, primary=31): // sync XO=598 → 0x7C0004AC (L=0 = heavyweight sync; L=1 lwsync; L=2 ptesync) // lwsync sync L=1 → 0x7C2004AC // ptesync sync L=2 → 0x7C4004AC // eieio XO=854 → 0x7C0006AC // isync primary=19 XO=150 → 0x4C00012C // wait XO= 30 → 0x7C00003C (POWER9 with WC field) .SYNC = { {.SYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0004AC, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .LWSYNC = { {.LWSYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2004AC, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .PTESYNC = { {.PTESYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4004AC, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .EIEIO = { {.EIEIO, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0006AC, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .ISYNC = { {.ISYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C00012C, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .WAIT = { {.WAIT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00003C, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, // Cache management (X-form, primary=31): // dcbt XO=278 → 0x7C00022C (with TH field; safe-fill TH=0) // dcbtst XO=246 → 0x7C0001EC // dcba XO=758 → 0x7C0005EC // dcbf XO= 86 → 0x7C0000AC // dcbz XO=1014 → 0x7C0007EC // icbi XO=982 → 0x7C0007AC // icbt XO= 22 → 0x7C00002C (POWER7) // darn primary=31 XO=755 → 0x7C0005E6 (POWER9; L at bits 16..17) .DCBT = { {.DCBT, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C00022C, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBTST = { {.DCBTST, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C0001EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBA = { {.DCBA, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C0005EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBF = { {.DCBF, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C0000AC, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBZ = { {.DCBZ, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C0007EC, 0xFE2007FE, .BASE, .PPC32, {}} }, .ICBI = { {.ICBI, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C0007AC, 0xFC0007FE, .BASE, .PPC32, {}} }, .ICBT = { {.ICBT, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C00002C, 0xFC0007FE, .BASE, .PPC32, {}} }, .DARN = { {.DARN, {.GPR, .IMM, .NONE, .NONE}, {.RT, .L_FIELD, .NONE, .NONE}, 0x7C0005E6, 0xFC1CFFFE, .POWER9, .PPC32, {}} }, // ========================================================================= // §11 AltiVec (VMX) — primary=4 (0x10000000 base) // ========================================================================= // // Three forms used here: // VX-form primary + VRT + VRA + VRB + XO(11 bits at 0..10) // VA-form primary + VRT + VRA + VRB + VRC + XO(6 bits at 0..5) // VC-form primary + VRT + VRA + VRB + Rc + XO(10 bits at 0..9) // Base bits = 0x10000000. XO value goes directly to LSB position 0..N. // ---- Logical (VX-form) ---- .VAND = { {.VAND, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000404, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VANDC = { {.VANDC, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000444, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VOR = { {.VOR, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000484, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VORC = { {.VORC, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000544, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VNOR = { {.VNOR, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000504, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VXOR = { {.VXOR, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004C4, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VEQV = { {.VEQV, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000684, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VNAND = { {.VNAND, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000584, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSEL = { {.VSEL, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000002A, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, // ---- Integer add/sub (VX-form) ---- // XO: vaddubm=0, vadduhm=64, vadduwm=128, vaddudm=192 (P8); // vsububm=1024, vsubuhm=1088, vsubuwm=1152, vsubudm=1216; // vaddfp=10, vsubfp=74; vaddcuw=384, vsubcuw=1408; // vaddcuq=320 (P8), vsubcuq=1344; // vaddubs=512, vadduhs=576, vadduws=640; // vaddsbs=768, vaddshs=832, vaddsws=896; // vsububs=1536, vsubuhs=1600, vsubuws=1664; // vsubsbs=1792, vsubshs=1856, vsubsws=1920; // vaddecuq=61 (VA-form), vaddeuqm=60 (VA-form); // vsubecuq=63 (VA-form), vsubeuqm=62 (VA-form). .VADDUBM = { {.VADDUBM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000000, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDUHM = { {.VADDUHM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000040, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDUWM = { {.VADDUWM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000080, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDUDM = { {.VADDUDM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C0, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VADDFP = { {.VADDFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000000A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUBM = { {.VSUBUBM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000400, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUHM = { {.VSUBUHM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000440, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUWM = { {.VSUBUWM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000480, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUDM = { {.VSUBUDM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004C0, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSUBFP = { {.VSUBFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000004A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDCUW = { {.VADDCUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000180, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDCUQ = { {.VADDCUQ, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000140, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSUBCUW = { {.VSUBCUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000580, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBCUQ = { {.VSUBCUQ, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000540, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VADDUBS = { {.VADDUBS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000200, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDUHS = { {.VADDUHS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000240, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDUWS = { {.VADDUWS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000280, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDSBS = { {.VADDSBS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000300, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDSHS = { {.VADDSHS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000340, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VADDSWS = { {.VADDSWS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000380, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUBS = { {.VSUBUBS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000600, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUHS = { {.VSUBUHS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000640, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBUWS = { {.VSUBUWS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000680, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBSBS = { {.VSUBSBS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000700, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBSHS = { {.VSUBSHS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000740, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSUBSWS = { {.VSUBSWS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000780, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, // VA-form extended-carry add/sub: .VADDECUQ = { {.VADDECUQ, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000003D, 0xFC00003F, .POWER8, .PPC32, {}} }, .VADDEUQM = { {.VADDEUQM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000003C, 0xFC00003F, .POWER8, .PPC32, {}} }, .VSUBECUQ = { {.VSUBECUQ, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000003F, 0xFC00003F, .POWER8, .PPC32, {}} }, .VSUBEUQM = { {.VSUBEUQM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000003E, 0xFC00003F, .POWER8, .PPC32, {}} }, // ---- Multiply (VX-form even/odd; vmuluwm POWER8) ---- // XO: vmulesb=776, vmuleub=520, vmulosb=264, vmuloub=8; // vmulesh=840, vmuleuh=584, vmulosh=328, vmulouh=72; // vmulesw=904, vmuleuw=648, vmulosw=392, vmulouw=136; // vmuluwm=137 (P8). .VMULESB = { {.VMULESB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000308, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULESH = { {.VMULESH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000348, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULESW = { {.VMULESW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000388, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMULEUB = { {.VMULEUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000208, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULEUH = { {.VMULEUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000248, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULEUW = { {.VMULEUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000288, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMULOSB = { {.VMULOSB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000108, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULOSH = { {.VMULOSH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000148, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULOSW = { {.VMULOSW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000188, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMULOUB = { {.VMULOUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000008, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULOUH = { {.VMULOUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000048, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMULOUW = { {.VMULOUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000088, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMULUWM = { {.VMULUWM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000089, 0xFC0007FF, .POWER8, .PPC32, {}} }, // ---- Multiply-sum (VA-form) ---- // XO: vmsumubm=36, vmsummbm=37, vmsumuhm=38, vmsumuhs=39, // vmsumshm=40, vmsumshs=41, vmsumudm=35 (P8). .VMSUMUBM = { {.VMSUMUBM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000024, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMMBM = { {.VMSUMMBM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000025, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMUHM = { {.VMSUMUHM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000026, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMUHS = { {.VMSUMUHS, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000027, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMSHM = { {.VMSUMSHM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000028, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMSHS = { {.VMSUMSHS, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000029, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VMSUMUDM = { {.VMSUMUDM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x10000023, 0xFC00003F, .POWER8, .PPC32, {}} }, // ---- Compare (VC-form, Rc at bit 10) ---- // XO: vcmpequb=6, vcmpequh=70, vcmpequw=134, vcmpequd=199 (P8); // vcmpgtsb=774, vcmpgtsh=838, vcmpgtsw=902, vcmpgtsd=967 (P8); // vcmpgtub=518, vcmpgtuh=582, vcmpgtuw=646, vcmpgtud=711 (P8); // vcmpneb=7 (P9), vcmpneh=71, vcmpnew=135; // vcmpeqfp=198, vcmpgefp=454, vcmpgtfp=710, vcmpbfp=966. .VCMPEQUB = { {.VCMPEQUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000006, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUB_DOT = { {.VCMPEQUB_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000406, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUH = { {.VCMPEQUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000046, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUH_DOT = { {.VCMPEQUH_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000446, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUW = { {.VCMPEQUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000086, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUW_DOT = { {.VCMPEQUW_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000486, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQUD = { {.VCMPEQUD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPEQUD_DOT = { {.VCMPEQUD_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPNEB = { {.VCMPNEB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000007, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEB_DOT = { {.VCMPNEB_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000407, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEH = { {.VCMPNEH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000047, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEH_DOT = { {.VCMPNEH_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000447, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEW = { {.VCMPNEW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000087, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEW_DOT = { {.VCMPNEW_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000487, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPGTSB = { {.VCMPGTSB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000306, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSB_DOT = { {.VCMPGTSB_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000706, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSH = { {.VCMPGTSH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000346, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSH_DOT = { {.VCMPGTSH_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000746, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSW = { {.VCMPGTSW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000386, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSW_DOT = { {.VCMPGTSW_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000786, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTSD = { {.VCMPGTSD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100003C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPGTSD_DOT = { {.VCMPGTSD_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100007C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPGTUB = { {.VCMPGTUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000206, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUB_DOT = { {.VCMPGTUB_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000606, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUH = { {.VCMPGTUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000246, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUH_DOT = { {.VCMPGTUH_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000646, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUW = { {.VCMPGTUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000286, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUW_DOT = { {.VCMPGTUW_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000686, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTUD = { {.VCMPGTUD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100002C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPGTUD_DOT = { {.VCMPGTUD_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100006C7, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCMPEQFP = { {.VCMPEQFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPEQFP_DOT = { {.VCMPEQFP_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGEFP = { {.VCMPGEFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100001C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGEFP_DOT = { {.VCMPGEFP_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100005C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTFP = { {.VCMPGTFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100002C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPGTFP_DOT = { {.VCMPGTFP_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100006C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPBFP = { {.VCMPBFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100003C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCMPBFP_DOT = { {.VCMPBFP_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100007C6, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, // ---- Max/min (VX-form) ---- // XO: vmaxub=2, vmaxuh=66, vmaxuw=130, vmaxud=194 (P8); // vmaxsb=258, vmaxsh=322, vmaxsw=386, vmaxsd=450 (P8); // vmaxfp=1034 → 0x40A; // vminub=514, vminuh=578, vminuw=642, vminud=706 (P8); // vminsb=770, vminsh=834, vminsw=898, vminsd=962 (P8); // vminfp=1098 → 0x44A. .VMAXUB = { {.VMAXUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000002, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXUH = { {.VMAXUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000042, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXUW = { {.VMAXUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000082, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXUD = { {.VMAXUD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C2, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMAXSB = { {.VMAXSB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000102, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXSH = { {.VMAXSH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000142, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXSW = { {.VMAXSW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000182, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMAXSD = { {.VMAXSD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100001C2, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMAXFP = { {.VMAXFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000040A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINUB = { {.VMINUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000202, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINUH = { {.VMINUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000242, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINUW = { {.VMINUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000282, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINUD = { {.VMINUD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100002C2, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMINSB = { {.VMINSB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000302, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINSH = { {.VMINSH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000342, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINSW = { {.VMINSW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000382, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMINSD = { {.VMINSD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100003C2, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMINFP = { {.VMINFP, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000044A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, // ---- Average (signed/unsigned byte/half/word) ---- // XO: vavgsb=1282, vavgsh=1346, vavgsw=1410; // vavgub=1026, vavguh=1090, vavguw=1154. .VAVGSB = { {.VAVGSB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000502, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VAVGSH = { {.VAVGSH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000542, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VAVGSW = { {.VAVGSW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000582, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VAVGUB = { {.VAVGUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000402, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VAVGUH = { {.VAVGUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000442, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VAVGUW = { {.VAVGUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000482, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, // ---- Shift (VX-form) — full 128-bit + per-element ---- // XO: vsl=452, vsr=708, vslo=1036, vsro=1100; // vslb=260, vslh=324, vslw=388, vsld=1476 (P8); // vsrb=516, vsrh=580, vsrw=644, vsrd=1732 (P8); // vsrab=772, vsrah=836, vsraw=900, vsrad=964 (P8); // vrlb=4, vrlh=68, vrlw=132, vrld=196 (P8). .VSL = { {.VSL, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100001C4, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSR = { {.VSR, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100002C4, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSLO = { {.VSLO, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000040C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRO = { {.VSRO, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000044C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSLB = { {.VSLB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000104, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSLH = { {.VSLH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000144, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSLW = { {.VSLW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000184, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSLD = { {.VSLD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100005C4, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSRB = { {.VSRB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000204, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRH = { {.VSRH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000244, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRW = { {.VSRW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000284, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRD = { {.VSRD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100006C4, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSRAB = { {.VSRAB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000304, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRAH = { {.VSRAH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000344, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRAW = { {.VSRAW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000384, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VSRAD = { {.VSRAD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100003C4, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VRLB = { {.VRLB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000004, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VRLH = { {.VRLH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000044, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VRLW = { {.VRLW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000084, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VRLD = { {.VRLD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C4, 0xFC0007FF, .POWER8, .PPC32, {}} }, // ---- Permute / pack / merge / splat / unpack ---- // VA-form perm/sldoi: vperm XO=43, vpermr=59 (P9), vsldoi XO=44. // VX-form merge: vmrghb=12, vmrghh=76, vmrghw=140; // vmrglb=268, vmrglh=332, vmrglw=396; // vmrgew=1932 → 0x78C (P8), vmrgow=1676 → 0x68C (P8). // VX-form splat: vspltb=524, vsplth=588, vspltw=652; // vspltisb=780, vspltish=844, vspltisw=908. // Pack: vpkpx=782, vpkuhum=14, vpkuwum=78, vpkudum=1102 (P8); // vpkuhus=142, vpkuwus=206, vpkudus=1230 (P8); // vpkshus=270, vpkswus=334, vpksdus=1358 (P8); // vpkshss=398, vpkswss=462, vpksdss=1486 (P8). // Unpack: vupkhsb=526, vupkhsh=590, vupkhsw=1614 (P8); // vupklsb=654, vupklsh=718, vupklsw=1742 (P8); // vupkhpx=846, vupklpx=974. .VPERM = { {.VPERM, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000002B, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VPERMR = { {.VPERMR, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRB, .VRC}, 0x1000003B, 0xFC00003F, .POWER9, .PPC32, {}} }, .VSLDOI = { {.VSLDOI, {.VR, .VR, .VR, .IMM},{.VRT, .VRA, .VRB, .UIMM_4}, 0x1000002C, 0xFC00043F, .ALTIVEC, .PPC32, {}} }, .VBPERMQ = { {.VBPERMQ, {.VR, .VR, .VR, .NONE},{.VRT, .VRA, .VRB, .NONE}, 0x1000054C, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VBPERMD = { {.VBPERMD, {.VR, .VR, .VR, .NONE},{.VRT, .VRA, .VRB, .NONE}, 0x100005CC, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VMRGHB = { {.VMRGHB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000000C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGHH = { {.VMRGHH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000004C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGHW = { {.VMRGHW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000008C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGLB = { {.VMRGLB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000010C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGLH = { {.VMRGLH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000014C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGLW = { {.VMRGLW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000018C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VMRGEW = { {.VMRGEW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000078C, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VMRGOW = { {.VMRGOW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000068C, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSPLTB = { {.VSPLTB, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000020C, 0xFC1007FF, .ALTIVEC, .PPC32, {}} }, .VSPLTH = { {.VSPLTH, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000024C, 0xFC1807FF, .ALTIVEC, .PPC32, {}} }, .VSPLTW = { {.VSPLTW, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000028C, 0xFC1C07FF, .ALTIVEC, .PPC32, {}} }, .VSPLTISB = { {.VSPLTISB, {.VR, .SIMM, .NONE, .NONE}, {.VRT, .SIMM_5, .NONE, .NONE}, 0x1000030C, 0xFC00FFFF, .ALTIVEC, .PPC32, {}} }, .VSPLTISH = { {.VSPLTISH, {.VR, .SIMM, .NONE, .NONE}, {.VRT, .SIMM_5, .NONE, .NONE}, 0x1000034C, 0xFC00FFFF, .ALTIVEC, .PPC32, {}} }, .VSPLTISW = { {.VSPLTISW, {.VR, .SIMM, .NONE, .NONE}, {.VRT, .SIMM_5, .NONE, .NONE}, 0x1000038C, 0xFC00FFFF, .ALTIVEC, .PPC32, {}} }, .VPKPX = { {.VPKPX, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000030E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKUHUM = { {.VPKUHUM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000000E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKUWUM = { {.VPKUWUM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000004E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKUDUM = { {.VPKUDUM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000044E, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPKUHUS = { {.VPKUHUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000008E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKUWUS = { {.VPKUWUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKUDUS = { {.VPKUDUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004CE, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPKSHUS = { {.VPKSHUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000010E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKSWUS = { {.VPKSWUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000014E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKSDUS = { {.VPKSDUS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000054E, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPKSHSS = { {.VPKSHSS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x1000018E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKSWSS = { {.VPKSWSS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100001CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VPKSDSS = { {.VPKSDSS, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100005CE, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VUPKHSB = { {.VUPKHSB, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000020E, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VUPKHSH = { {.VUPKHSH, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000024E, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VUPKHSW = { {.VUPKHSW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000064E, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VUPKLSB = { {.VUPKLSB, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000028E, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VUPKLSH = { {.VUPKLSH, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100002CE, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VUPKLSW = { {.VUPKLSW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100006CE, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VUPKHPX = { {.VUPKHPX, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000034E, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VUPKLPX = { {.VUPKLPX, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100003CE, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, // ---- FP vector misc (VX-form) ---- // XO: vrfim=970, vrfin=522, vrfip=650, vrfiz=586; // vexptefp=394, vlogefp=458; // vrefp=266, vrsqrtefp=330; // vcfsx=842, vcfux=778; vctsxs=970→ collision; actually vctsxs XO=970? double check. // Per Power ISA: vcfsx=842, vcfux=778, vctsxs=970, vctuxs=906. .VRFIM = { {.VRFIM, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100002CA, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VRFIN = { {.VRFIN, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000020A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VRFIP = { {.VRFIP, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000028A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VRFIZ = { {.VRFIZ, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000024A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VEXPTEFP = { {.VEXPTEFP, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000018A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VLOGEFP = { {.VLOGEFP, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100001CA, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VREFP = { {.VREFP, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000010A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VRSQRTEFP = { {.VRSQRTEFP, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x1000014A, 0xFC1F07FF, .ALTIVEC, .PPC32, {}} }, .VMADDFP = { {.VMADDFP, {.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRC, .VRB}, 0x1000002E, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VNMSUBFP = { {.VNMSUBFP,{.VR, .VR, .VR, .VR}, {.VRT, .VRA, .VRC, .VRB}, 0x1000002F, 0xFC00003F, .ALTIVEC, .PPC32, {}} }, .VCFSX = { {.VCFSX, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_5, .NONE}, 0x1000034A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCFUX = { {.VCFUX, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_5, .NONE}, 0x1000030A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCTSXS = { {.VCTSXS, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_5, .NONE}, 0x100003CA, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .VCTUXS = { {.VCTUXS, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_5, .NONE}, 0x1000038A, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, // ---- AltiVec load/store (X-form, primary=31) ---- // lvx XO=103 → 0x7C0000CE // lvxl XO=359 → 0x7C0002CE // lvebx XO= 7 → 0x7C00000E // lvehx XO= 39 → 0x7C00004E // lvewx XO= 71 → 0x7C00008E // lvsl XO= 6 → 0x7C00000C // lvsr XO= 38 → 0x7C00004C // stvx XO=231 → 0x7C0001CE // stvxl XO=487 → 0x7C0003CE // stvebx XO=135 → 0x7C00010E // stvehx XO=167 → 0x7C00014E // stvewx XO=199 → 0x7C00018E // mfvscr XO=1540 → 0x7C000604 // mtvscr XO=1604 → 0x7C000644 .LVX = { {.LVX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0000CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVXL = { {.LVXL, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0002CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVEBX = { {.LVEBX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00000E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVEHX = { {.LVEHX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00004E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVEWX = { {.LVEWX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00008E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVSL = { {.LVSL, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00000C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .LVSR = { {.LVSR, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00004C, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .STVX = { {.STVX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0001CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .STVXL = { {.STVXL, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C0003CE, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .STVEBX = { {.STVEBX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00010E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .STVEHX = { {.STVEHX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00014E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .STVEWX = { {.STVEWX, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_X, .NONE, .NONE}, 0x7C00018E, 0xFC0007FF, .ALTIVEC, .PPC32, {}} }, .MFVSCR = { {.MFVSCR, {.VR, .NONE,.NONE,.NONE}, {.VRT, .NONE,.NONE,.NONE}, 0x10000604, 0xFC1FFFFF, .ALTIVEC, .PPC32, {}} }, .MTVSCR = { {.MTVSCR, {.VR, .NONE,.NONE,.NONE}, {.VRB, .NONE,.NONE,.NONE}, 0x10000644, 0xFFFF07FF, .ALTIVEC, .PPC32, {}} }, // ========================================================================= // §12 VSX — Vector-Scalar Extension (primary=60 for arithmetic, primary=31 // for indexed memory, primary=61 for D/DS/DQ-form memory) // ========================================================================= // // VSX registers are 6-bit (vs0..vs63). The high bit is split into a // separate position in the encoding: // XT[5] at bit 0 (TX) // XA[5] at bit 2 (AX) // XB[5] at bit 1 (BX) // XC[5] at bit 3 (CX) — XX4-form only // The low 5 bits live at the usual register-slot positions // (XT@21:25, XA@16:20, XB@11:15, XC@6:10). // // Form summary: // XX1-form TX + XO(10 at bits 1..10) memory + a few select // XX2-form TX + BX + XO(9 at bits 2..10) unary ops // XX3-form TX + AX + BX + XO(8 at bits 3..10) binary/ternary // XX4-form TX + AX + BX + CX + XO(2 at bits 4..5) XXSEL only // Encoded bits for XO: XO_value << shift, where shift = bit position of // the lowest XO bit (1 for XX1, 2 for XX2, 3 for XX3, 4 for XX4). // ---- VSX X-form indexed memory (primary=31) ---- // lxsdx XO=588 → 588<<1 = 0x498 → 0x7C000498 // lxsiwax XO= 76 → 0x098 → 0x7C000098 // lxsiwzx XO= 12 → 0x018 → 0x7C000018 // lxsspx XO=524 → 0x418 → 0x7C000418 (P8) // lxvd2x XO=844 → 0x698 → 0x7C000698 // lxvdsx XO=332 → 0x298 → 0x7C000298 // lxvw4x XO=780 → 0x618 → 0x7C000618 // lxvh8x XO=812 → 0x658 → 0x7C000658 (P9) // lxvb16x XO=876 → 0x6D8 → 0x7C0006D8 (P9) // lxvl XO=269 → 0x21A → 0x7C00021A (P9) // lxvll XO=301 → 0x25A → 0x7C00025A (P9) // lxvx XO=268 → 0x218 → 0x7C000218 (P9) // lxsibzx XO=781 → 0x61A → 0x7C00061A (P9) // lxsihzx XO=813 → 0x65A → 0x7C00065A (P9) // stxsdx XO=716 → 0x598 → 0x7C000598 // stxsiwx XO=140 → 0x118 → 0x7C000118 // stxsspx XO=652 → 0x518 → 0x7C000518 (P8) // stxvd2x XO=972 → 0x798 → 0x7C000798 // stxvw4x XO=908 → 0x718 → 0x7C000718 // stxvh8x XO=940 → 0x758 → 0x7C000758 (P9) // stxvb16x XO=1004 → 0x7D8 → 0x7C0007D8 (P9) // stxvl XO=397 → 0x31A → 0x7C00031A (P9) // stxvll XO=429 → 0x35A → 0x7C00035A (P9) // stxvx XO=396 → 0x318 → 0x7C000318 (P9) // stxsibx XO=909 → 0x71A → 0x7C00071A (P9) // stxsihx XO=941 → 0x75A → 0x7C00075A (P9) .LXSDX = { {.LXSDX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000498, 0xFC0007FE, .VSX, .PPC32, {}} }, .LXSIWAX = { {.LXSIWAX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000098, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXSIWZX = { {.LXSIWZX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000018, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXSSPX = { {.LXSSPX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000418, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LXVD2X = { {.LXVD2X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000698, 0xFC0007FE, .VSX, .PPC32, {}} }, .LXVDSX = { {.LXVDSX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000298, 0xFC0007FE, .VSX, .PPC32, {}} }, .LXVW4X = { {.LXVW4X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000618, 0xFC0007FE, .VSX, .PPC32, {}} }, .LXVH8X = { {.LXVH8X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000658, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXVB16X = { {.LXVB16X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C0006D8, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXVL = { {.LXVL, {.VSR, .GPR, .GPR, .NONE}, {.XT, .RA, .RB, .NONE}, 0x7C00021A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXVLL = { {.LXVLL, {.VSR, .GPR, .GPR, .NONE}, {.XT, .RA, .RB, .NONE}, 0x7C00025A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXVX = { {.LXVX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000218, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXSIBZX = { {.LXSIBZX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C00061A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .LXSIHZX = { {.LXSIHZX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C00065A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXSDX = { {.STXSDX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000598, 0xFC0007FE, .VSX, .PPC32, {}} }, .STXSIWX = { {.STXSIWX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000118, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXSSPX = { {.STXSSPX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000518, 0xFC0007FE, .POWER8, .PPC32, {}} }, .STXVD2X = { {.STXVD2X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000798, 0xFC0007FE, .VSX, .PPC32, {}} }, .STXVW4X = { {.STXVW4X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000718, 0xFC0007FE, .VSX, .PPC32, {}} }, .STXVH8X = { {.STXVH8X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000758, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXVB16X = { {.STXVB16X, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C0007D8, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXVL = { {.STXVL, {.VSR, .GPR, .GPR, .NONE}, {.XT, .RA, .RB, .NONE}, 0x7C00031A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXVLL = { {.STXVLL, {.VSR, .GPR, .GPR, .NONE}, {.XT, .RA, .RB, .NONE}, 0x7C00035A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXVX = { {.STXVX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C000318, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXSIBX = { {.STXSIBX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C00071A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, .STXSIHX = { {.STXSIHX, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_VSX_X, .NONE, .NONE}, 0x7C00075A, 0xFC0007FE, .VSX_P9, .PPC32, {}} }, // ---- VSX D-form memory (primary=61 = 0xF4000000 for stxv; primary=61 with // DS-form XO for lxsd/stxsd/lxssp/stxssp; primary=61 with DQ-form for // lxv/stxv) ---- // lxv primary=61 DQ-form, XO= 1 → 0xF4000001 (P9) // stxv primary=61 DQ-form, XO= 5 → 0xF4000005 (P9) // lxsd primary=57 DS-form, XO= 2 → 0xE4000002 (P9; primary 57!) // lxssp primary=57 DS-form, XO= 3 → 0xE4000003 (P9) // stxsd primary=61 DS-form, XO= 2 → 0xF4000002 (P9) // stxssp primary=61 DS-form, XO= 3 → 0xF4000003 (P9) .LXV = { {.LXV, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_BASE_DQ, .NONE, .NONE}, 0xF4000001, 0xFC000007, .VSX_P9, .PPC32, {}} }, .STXV = { {.STXV, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_BASE_DQ, .NONE, .NONE}, 0xF4000005, 0xFC000007, .VSX_P9, .PPC32, {}} }, .LXSD = { {.LXSD, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE4000002, 0xFC000003, .VSX_P9, .PPC32, {}} }, .LXSSP = { {.LXSSP, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xE4000003, 0xFC000003, .VSX_P9, .PPC32, {}} }, .STXSD = { {.STXSD, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF4000002, 0xFC000003, .VSX_P9, .PPC32, {}} }, .STXSSP= { {.STXSSP,{.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_DS, .NONE, .NONE}, 0xF4000003, 0xFC000003, .VSX_P9, .PPC32, {}} }, // ---- VSX XX3-form scalar arithmetic (primary=60, XO at bits 3..10) ---- // base = 0xF0000000. XO_value << 3. // xsadddp XO=32 → 32<<3=0x100 → 0xF0000100 // xsaddsp XO= 0 → 0x000 → 0xF0000000 // xssubdp XO=40 → 0x140 → 0xF0000140 // xssubsp XO= 8 → 0x040 → 0xF0000040 // xsmuldp XO=48 → 0x180 → 0xF0000180 // xsmulsp XO=16 → 0x080 → 0xF0000080 // xsdivdp XO=56 → 0x1C0 → 0xF00001C0 // xsdivsp XO=24 → 0x0C0 → 0xF00000C0 // xsmaddadp XO=33 → 0x108 → 0xF0000108 // xsmaddasp XO= 1 → 0x008 → 0xF0000008 // xsmaddmdp XO=41 → 0x148 → 0xF0000148 // xsmaddmsp XO= 9 → 0x048 → 0xF0000048 // xsmsubadp XO=49 → 0x188 → 0xF0000188 // xsmsubasp XO=17 → 0x088 → 0xF0000088 // xsmsubmdp XO=57 → 0x1C8 → 0xF00001C8 // xsmsubmsp XO=25 → 0x0C8 → 0xF00000C8 // xsnmaddadp XO=161 → 0x508 → 0xF0000508 // xsnmaddasp XO=129 → 0x408 → 0xF0000408 // xsnmaddmdp XO=169 → 0x548 → 0xF0000548 // xsnmaddmsp XO=137 → 0x448 → 0xF0000448 // xsnmsubadp XO=177 → 0x588 → 0xF0000588 // xsnmsubasp XO=145 → 0x488 → 0xF0000488 // xsnmsubmdp XO=185 → 0x5C8 → 0xF00005C8 // xsnmsubmsp XO=153 → 0x4C8 → 0xF00004C8 // xsmaxdp XO=160 → 0x500 → 0xF0000500 // xsmindp XO=168 → 0x540 → 0xF0000540 // xsmaxcdp XO=128 → 0x400 → 0xF0000400 (P9) // xsmincdp XO=136 → 0x440 → 0xF0000440 (P9) // xsmaxjdp XO=144 → 0x480 → 0xF0000480 (P9) // xsminjdp XO=152 → 0x4C0 → 0xF00004C0 (P9) // xscpsgndp XO=176 → 0x580 → 0xF0000580 // xscmpodp XO= 43 → 0x158 → 0xF0000158 (BF at bits 23..25; no XT) // xscmpudp XO= 35 → 0x118 → 0xF0000118 // xscmpeqdp XO= 3 → 0x018 → 0xF0000018 (P9) // xscmpgtdp XO= 11 → 0x058 → 0xF0000058 (P9) // xscmpgedp XO= 19 → 0x098 → 0xF0000098 (P9) .XSADDDP = { {.XSADDDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000100, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSADDSP = { {.XSADDSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000000, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSSUBDP = { {.XSSUBDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000140, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSSUBSP = { {.XSSUBSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000040, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMULDP = { {.XSMULDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000180, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMULSP = { {.XSMULSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000080, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSDIVDP = { {.XSDIVDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00001C0, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSDIVSP = { {.XSDIVSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00000C0, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMADDADP = { {.XSMADDADP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000108, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMADDASP = { {.XSMADDASP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000008, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMADDMDP = { {.XSMADDMDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000148, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMADDMSP = { {.XSMADDMSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000048, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMSUBADP = { {.XSMSUBADP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000188, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMSUBASP = { {.XSMSUBASP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000088, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMSUBMDP = { {.XSMSUBMDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00001C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMSUBMSP = { {.XSMSUBMSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00000C8, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSNMADDADP= { {.XSNMADDADP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000508, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSNMADDASP= { {.XSNMADDASP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000408, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSNMADDMDP= { {.XSNMADDMDP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000548, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSNMADDMSP= { {.XSNMADDMSP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000448, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSNMSUBADP= { {.XSNMSUBADP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000588, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSNMSUBASP= { {.XSNMSUBASP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000488, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSNMSUBMDP= { {.XSNMSUBMDP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00005C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSNMSUBMSP= { {.XSNMSUBMSP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00004C8, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XSMAXDP = { {.XSMAXDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000500, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMINDP = { {.XSMINDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000540, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSMAXCDP = { {.XSMAXCDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000400, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSMINCDP = { {.XSMINCDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000440, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSMAXJDP = { {.XSMAXJDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000480, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSMINJDP = { {.XSMINJDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00004C0, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSCPSGNDP = { {.XSCPSGNDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000580, 0xFC0007F8, .VSX, .PPC32, {}} }, .XSCMPODP = { {.XSCMPODP, {.CR_FIELD, .VSR, .VSR, .NONE}, {.BF, .XA, .XB, .NONE}, 0xF0000158, 0xFC6007FC, .VSX, .PPC32, {}} }, .XSCMPUDP = { {.XSCMPUDP, {.CR_FIELD, .VSR, .VSR, .NONE}, {.BF, .XA, .XB, .NONE}, 0xF0000118, 0xFC6007FC, .VSX, .PPC32, {}} }, .XSCMPEQDP = { {.XSCMPEQDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000018, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSCMPGTDP = { {.XSCMPGTDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000058, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, .XSCMPGEDP = { {.XSCMPGEDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000098, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, // ---- VSX XX2-form scalar unary (primary=60, XO at bits 2..10, 9-bit) ---- // base 0xF0000000. XO << 2. // xsabsdp XO=345 → 345<<2=0x564 → 0xF0000564 // xsnabsdp XO=361 → 0x5A4 → 0xF00005A4 // xsnegdp XO=377 → 0x5E4 → 0xF00005E4 // xssqrtdp XO=75 → 0x12C → 0xF000012C (XO=75, lookups vary; // per ARM Power ISA 2.06: xssqrtdp XO=75) // xssqrtsp XO=11 → 0x02C → 0xF000002C (P8) // xsresp XO=26 → 0x068 → 0xF0000068 (P8) // xsredp XO=90 → 0x168 → 0xF0000168 // xsrsqrtesp XO=10 → 0x028 → 0xF0000028 (P8) // xsrsqrtedp XO=74 → 0x128 → 0xF0000128 // xscvdpsp XO=265 → 0x424 → 0xF0000424 // xscvspdp XO=329 → 0x524 → 0xF0000524 // xscvdpsxds XO=344 → 0x560 → 0xF0000560 // xscvdpuxds XO=328 → 0x520 → 0xF0000520 // xscvdpsxws XO=88 → 0x160 → 0xF0000160 // xscvdpuxws XO=72 → 0x120 → 0xF0000120 // xscvsxddp XO=376 → 0x5E0 → 0xF00005E0 // xscvuxddp XO=360 → 0x5A0 → 0xF00005A0 // xscvspdpn XO=331 → 0x52C → 0xF000052C (P8) // xscvdpspn XO=267 → 0x42C → 0xF000042C (P8) // xscvdphp XO=347 → 0x56C — XO at 16..20 sub-field, complex // xscvhpdp XO=347 → similar — defer // xsrdpi XO=73 → 0x124 → 0xF0000124 // xsrdpim XO=121 → 0x1E4 → 0xF00001E4 // xsrdpip XO=105 → 0x1A4 → 0xF00001A4 // xsrdpiz XO=89 → 0x164 → 0xF0000164 // xsrdpic XO=107 → 0x1AC → 0xF00001AC // xsrsp XO=281 → 0x464 → 0xF0000464 (P8) .XSABSDP = { {.XSABSDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000564, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSNABSDP = { {.XSNABSDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00005A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSNEGDP = { {.XSNEGDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00005E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSSQRTDP = { {.XSSQRTDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000012C, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSSQRTSP = { {.XSSQRTSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000002C, 0xFC1F07FC, .POWER8, .PPC32, {}} }, .XSRESP = { {.XSRESP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000068, 0xFC1F07FC, .POWER8, .PPC32, {}} }, .XSREDP = { {.XSREDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000168, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRSQRTESP = { {.XSRSQRTESP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000028, 0xFC1F07FC, .POWER8, .PPC32, {}} }, .XSRSQRTEDP = { {.XSRSQRTEDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000128, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVDPSP = { {.XSCVDPSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000424, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVSPDP = { {.XSCVSPDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000524, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVDPSXDS = { {.XSCVDPSXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000560, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVDPUXDS = { {.XSCVDPUXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000520, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVDPSXWS = { {.XSCVDPSXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000160, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVDPUXWS = { {.XSCVDPUXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000120, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVSXDDP = { {.XSCVSXDDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00005E0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVUXDDP = { {.XSCVUXDDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00005A0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSCVSPDPN = { {.XSCVSPDPN, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000052C, 0xFC1F07FC, .POWER8, .PPC32, {}} }, .XSCVDPSPN = { {.XSCVDPSPN, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000042C, 0xFC1F07FC, .POWER8, .PPC32, {}} }, .XSRDPI = { {.XSRDPI, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000124, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRDPIM = { {.XSRDPIM, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00001E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRDPIP = { {.XSRDPIP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00001A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRDPIZ = { {.XSRDPIZ, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000164, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRDPIC = { {.XSRDPIC, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00001AC, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XSRSP = { {.XSRSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000464, 0xFC1F07FC, .POWER8, .PPC32, {}} }, // ---- VSX XX3-form vector arithmetic (primary=60) ---- // xvaddsp XO= 64 → 0x200 → 0xF0000200 // xvadddp XO= 96 → 0x300 → 0xF0000300 // xvsubsp XO= 72 → 0x240 → 0xF0000240 // xvsubdp XO=104 → 0x340 → 0xF0000340 // xvmulsp XO= 80 → 0x280 → 0xF0000280 // xvmuldp XO=112 → 0x380 → 0xF0000380 // xvdivsp XO= 88 → 0x2C0 → 0xF00002C0 // xvdivdp XO=120 → 0x3C0 → 0xF00003C0 // xvmaddasp XO= 65 → 0x208 → 0xF0000208 // xvmaddadp XO= 97 → 0x308 → 0xF0000308 // xvmaddmsp XO= 73 → 0x248 → 0xF0000248 // xvmaddmdp XO=105 → 0x348 → 0xF0000348 // xvmsubasp XO= 81 → 0x288 → 0xF0000288 // xvmsubadp XO=113 → 0x388 → 0xF0000388 // xvmsubmsp XO= 89 → 0x2C8 → 0xF00002C8 // xvmsubmdp XO=121 → 0x3C8 → 0xF00003C8 // xvnmaddasp XO=193 → 0x608 → 0xF0000608 // xvnmaddadp XO=225 → 0x708 → 0xF0000708 // xvnmaddmsp XO=201 → 0x648 → 0xF0000648 // xvnmaddmdp XO=233 → 0x748 → 0xF0000748 // xvnmsubasp XO=209 → 0x688 → 0xF0000688 // xvnmsubadp XO=241 → 0x788 → 0xF0000788 // xvnmsubmsp XO=217 → 0x6C8 → 0xF00006C8 // xvnmsubmdp XO=249 → 0x7C8 → 0xF00007C8 // xvmaxsp XO=192 → 0x600 → 0xF0000600 // xvmaxdp XO=224 → 0x700 → 0xF0000700 // xvminsp XO=200 → 0x640 → 0xF0000640 // xvmindp XO=232 → 0x740 → 0xF0000740 // xvcmpeqsp XO= 67 → 0x218 → 0xF0000218 // xvcmpeqsp. XO=67 Rc=1 → 0x21C (Rc at bit 2; wait no — for VC-style ops the Rc is at different position) // Power ISA actually defines: // xvcmpeqsp primary=60 XO=67 → 0xF0000218 // xvcmpeqsp. primary=60 XO=67 with Rc bit at bit 10 → 0xF0000618 // Actually XX3-form Rc lives at bit 10 (which is part of the XO field): // Non-dot XO=67 → 0xF0000218 // Dot XO=67 + Rc bit → XO becomes effectively 67+512 = 579 → 0xF0000618 // xvcmpeqdp XO= 99 → 0x318 → 0xF0000318 // xvcmpgtsp XO= 75 → 0x258 → 0xF0000258 // xvcmpgtdp XO=107 → 0x358 → 0xF0000358 // xvcmpgesp XO= 83 → 0x298 → 0xF0000298 // xvcmpgedp XO=115 → 0x398 → 0xF0000398 // xvcpsgnsp XO=208 → 0x680 → 0xF0000680 // xvcpsgndp XO=240 → 0x780 → 0xF0000780 .XVADDSP = { {.XVADDSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000200, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVADDDP = { {.XVADDDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000300, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVSUBSP = { {.XVSUBSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000240, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVSUBDP = { {.XVSUBDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000340, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMULSP = { {.XVMULSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000280, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMULDP = { {.XVMULDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000380, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVDIVSP = { {.XVDIVSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00002C0, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVDIVDP = { {.XVDIVDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00003C0, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMADDASP = { {.XVMADDASP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000208, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMADDADP = { {.XVMADDADP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000308, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMADDMSP = { {.XVMADDMSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000248, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMADDMDP = { {.XVMADDMDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000348, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMSUBASP = { {.XVMSUBASP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000288, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMSUBADP = { {.XVMSUBADP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000388, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMSUBMSP = { {.XVMSUBMSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00002C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMSUBMDP = { {.XVMSUBMDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00003C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMADDASP= { {.XVNMADDASP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000608, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMADDADP= { {.XVNMADDADP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000708, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMADDMSP= { {.XVNMADDMSP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000648, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMADDMDP= { {.XVNMADDMDP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000748, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMSUBASP= { {.XVNMSUBASP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000688, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMSUBADP= { {.XVNMSUBADP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000788, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMSUBMSP= { {.XVNMSUBMSP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00006C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVNMSUBMDP= { {.XVNMSUBMDP,{.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00007C8, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMAXSP = { {.XVMAXSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000600, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMAXDP = { {.XVMAXDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000700, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMINSP = { {.XVMINSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000640, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVMINDP = { {.XVMINDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000740, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPEQSP = { {.XVCMPEQSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000218, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPEQSP_DOT = { {.XVCMPEQSP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000618, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPEQDP = { {.XVCMPEQDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000318, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPEQDP_DOT = { {.XVCMPEQDP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000718, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGTSP = { {.XVCMPGTSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000258, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGTSP_DOT = { {.XVCMPGTSP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000658, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGTDP = { {.XVCMPGTDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000358, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGTDP_DOT = { {.XVCMPGTDP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000758, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGESP = { {.XVCMPGESP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000298, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGESP_DOT = { {.XVCMPGESP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000698, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGEDP = { {.XVCMPGEDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000398, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCMPGEDP_DOT = { {.XVCMPGEDP_DOT, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000798, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCPSGNSP = { {.XVCPSGNSP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000680, 0xFC0007F8, .VSX, .PPC32, {}} }, .XVCPSGNDP = { {.XVCPSGNDP, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000780, 0xFC0007F8, .VSX, .PPC32, {}} }, // ---- VSX XX2-form vector unary ---- // xvabssp XO=409 → 0x664 → 0xF0000664 // xvabsdp XO=473 → 0x764 → 0xF0000764 // xvnabssp XO=425 → 0x6A4 → 0xF00006A4 // xvnabsdp XO=489 → 0x7A4 → 0xF00007A4 // xvnegsp XO=441 → 0x6E4 → 0xF00006E4 // xvnegdp XO=505 → 0x7E4 → 0xF00007E4 // xvsqrtsp XO=139 → 0x22C → 0xF000022C // xvsqrtdp XO=203 → 0x32C → 0xF000032C // xvresp XO=154 → 0x268 → 0xF0000268 // xvredp XO=218 → 0x368 → 0xF0000368 // xvrsqrtesp XO=138 → 0x228 → 0xF0000228 // xvrsqrtedp XO=202 → 0x328 → 0xF0000328 // xvcvspdp XO=457 → 0x724 → 0xF0000724 // xvcvdpsp XO=393 → 0x624 → 0xF0000624 // xvcvspsxds XO=408 → 0x660 → 0xF0000660 // xvcvspuxds XO=392 → 0x620 → 0xF0000620 // xvcvdpsxds XO=472 → 0x760 → 0xF0000760 // xvcvdpuxds XO=456 → 0x720 → 0xF0000720 // xvcvspsxws XO=152 → 0x260 → 0xF0000260 // xvcvspuxws XO=136 → 0x220 → 0xF0000220 // xvcvdpsxws XO=216 → 0x360 → 0xF0000360 // xvcvdpuxws XO=200 → 0x320 → 0xF0000320 // xvcvsxdsp XO=440 → 0x6E0 → 0xF00006E0 // xvcvuxdsp XO=424 → 0x6A0 → 0xF00006A0 // xvcvsxddp XO=504 → 0x7E0 → 0xF00007E0 // xvcvuxddp XO=488 → 0x7A0 → 0xF00007A0 // xvcvsxwsp XO=184 → 0x2E0 → 0xF00002E0 // xvcvuxwsp XO=168 → 0x2A0 → 0xF00002A0 // xvcvsxwdp XO=248 → 0x3E0 → 0xF00003E0 // xvcvuxwdp XO=232 → 0x3A0 → 0xF00003A0 // xvrspi XO=137 → 0x224 → 0xF0000224 // xvrspim XO=185 → 0x2E4 → 0xF00002E4 // xvrspip XO=169 → 0x2A4 → 0xF00002A4 // xvrspiz XO=153 → 0x264 → 0xF0000264 // xvrspic XO=171 → 0x2AC → 0xF00002AC // xvrdpi XO=201 → 0x324 → 0xF0000324 // xvrdpim XO=249 → 0x3E4 → 0xF00003E4 // xvrdpip XO=233 → 0x3A4 → 0xF00003A4 // xvrdpiz XO=217 → 0x364 → 0xF0000364 // xvrdpic XO=235 → 0x3AC → 0xF00003AC .XVABSSP = { {.XVABSSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000664, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVABSDP = { {.XVABSDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000764, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVNABSSP = { {.XVNABSSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00006A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVNABSDP = { {.XVNABSDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00007A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVNEGSP = { {.XVNEGSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00006E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVNEGDP = { {.XVNEGDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00007E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVSQRTSP = { {.XVSQRTSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000022C, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVSQRTDP = { {.XVSQRTDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF000032C, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRESP = { {.XVRESP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000268, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVREDP = { {.XVREDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000368, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSQRTESP = { {.XVRSQRTESP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000228, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSQRTEDP = { {.XVRSQRTEDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000328, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSPDP = { {.XVCVSPDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000724, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVDPSP = { {.XVCVDPSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000624, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSPSXDS = { {.XVCVSPSXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000660, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSPUXDS = { {.XVCVSPUXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000620, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVDPSXDS = { {.XVCVDPSXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000760, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVDPUXDS = { {.XVCVDPUXDS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000720, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSPSXWS = { {.XVCVSPSXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000260, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSPUXWS = { {.XVCVSPUXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000220, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVDPSXWS = { {.XVCVDPSXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000360, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVDPUXWS = { {.XVCVDPUXWS, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000320, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSXDSP = { {.XVCVSXDSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00006E0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVUXDSP = { {.XVCVUXDSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00006A0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSXDDP = { {.XVCVSXDDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00007E0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVUXDDP = { {.XVCVUXDDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00007A0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSXWSP = { {.XVCVSXWSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00002E0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVUXWSP = { {.XVCVUXWSP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00002A0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVSXWDP = { {.XVCVSXWDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00003E0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVCVUXWDP = { {.XVCVUXWDP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00003A0, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSPI = { {.XVRSPI, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000224, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSPIM = { {.XVRSPIM, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00002E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSPIP = { {.XVRSPIP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00002A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSPIZ = { {.XVRSPIZ, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000264, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRSPIC = { {.XVRSPIC, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00002AC, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRDPI = { {.XVRDPI, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000324, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRDPIM = { {.XVRDPIM, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00003E4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRDPIP = { {.XVRDPIP, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00003A4, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRDPIZ = { {.XVRDPIZ, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF0000364, 0xFC1F07FC, .VSX, .PPC32, {}} }, .XVRDPIC = { {.XVRDPIC, {.VSR, .VSR, .NONE, .NONE}, {.XT, .XB, .NONE, .NONE}, 0xF00003AC, 0xFC1F07FC, .VSX, .PPC32, {}} }, // ---- VSX XX3-form logical (primary=60) ---- // xxland XO=130 → 0x410 → 0xF0000410 // xxlandc XO=138 → 0x450 → 0xF0000450 // xxlor XO=146 → 0x490 → 0xF0000490 // xxlxor XO=154 → 0x4D0 → 0xF00004D0 // xxlnor XO=162 → 0x510 → 0xF0000510 // xxleqv XO=186 → 0x5D0 → 0xF00005D0 (P8) // xxlnand XO=178 → 0x590 → 0xF0000590 (P8) // xxlorc XO=170 → 0x550 → 0xF0000550 (P8) // xxsel primary=60 XX4-form XO=3 → 0x030 → 0xF0000030 // xxsldwi XO= 2 → 0x010 → 0xF0000010 (with SHW at bits 8..9) // xxpermdi XO=10 → 0x050 → 0xF0000050 (with DM at bits 8..9) // xxmrghw XO= 18 → 0x090 → 0xF0000090 // xxmrglw XO= 50 → 0x190 → 0xF0000190 // xxspltw XO=164 (XX2-form, UIM at bits 16..17) → 0x290 → 0xF0000290 // xxsplitb (xxspltib XO=360 XX1-form imm) → 0x2D0 → 0xF00002D0 (P9; primary=60) // xxextractuw XO=165 → 0x294 → 0xF0000294 (P9) // xxinsertw XO=181 → 0x2D4 → 0xF00002D4 (P9) // xxperm XO=26 → 0x0D0 → 0xF00000D0 (P9) .XXLAND = { {.XXLAND, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000410, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXLANDC = { {.XXLANDC, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000450, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXLOR = { {.XXLOR, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000490, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXLXOR = { {.XXLXOR, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00004D0, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXLNOR = { {.XXLNOR, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000510, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXLEQV = { {.XXLEQV, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00005D0, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XXLNAND = { {.XXLNAND, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000590, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XXLORC = { {.XXLORC, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000550, 0xFC0007F8, .POWER8, .PPC32, {}} }, .XXSEL = { {.XXSEL, {.VSR, .VSR, .VSR, .VSR}, {.XT, .XA, .XB, .XC}, 0xF0000030, 0xFC000030, .VSX, .PPC32, {}} }, .XXSLDWI = { {.XXSLDWI, {.VSR, .VSR, .VSR, .IMM}, {.XT, .XA, .XB, .UIMM_2}, 0xF0000010, 0xFC0003F8, .VSX, .PPC32, {}} }, .XXPERMDI = { {.XXPERMDI, {.VSR, .VSR, .VSR, .IMM}, {.XT, .XA, .XB, .UIMM_2}, 0xF0000050, 0xFC0003F8, .VSX, .PPC32, {}} }, .XXMRGHW = { {.XXMRGHW, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000090, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXMRGLW = { {.XXMRGLW, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF0000190, 0xFC0007F8, .VSX, .PPC32, {}} }, .XXSPLTW = { {.XXSPLTW, {.VSR, .VSR, .IMM, .NONE}, {.XT, .XB, .UIMM_2, .NONE}, 0xF0000290, 0xFC1C07FC, .VSX, .PPC32, {}} }, .XXSPLTIB = { {.XXSPLTIB, {.VSR, .UIMM, .NONE, .NONE}, {.XT, .UIMM_5, .NONE, .NONE}, 0xF00002D0, 0xFC18FFFC, .VSX_P9, .PPC32, {}} }, .XXEXTRACTUW = { {.XXEXTRACTUW, {.VSR, .VSR, .IMM, .NONE}, {.XT, .XB, .UIMM_4, .NONE}, 0xF0000294, 0xFC1007FC, .VSX_P9, .PPC32, {}} }, .XXINSERTW = { {.XXINSERTW, {.VSR, .VSR, .IMM, .NONE}, {.XT, .XB, .UIMM_4, .NONE}, 0xF00002D4, 0xFC1007FC, .VSX_P9, .PPC32, {}} }, .XXPERM = { {.XXPERM, {.VSR, .VSR, .VSR, .NONE}, {.XT, .XA, .XB, .NONE}, 0xF00000D0, 0xFC0007F8, .VSX_P9, .PPC32, {}} }, // ========================================================================= // §6b Late arithmetic additions: addex, maddld/maddhd/maddhdu, addpcis // ========================================================================= // // addex primary=31 XO=170 → 0x7C000154 with CY at bits 21..22 // (POWER9; CY=0 only architected so far) // maddld primary=4 VA-form XO=51 → 0x10000033 (POWER9; FRT/A/C/B → RT/A/C/B) // maddhd primary=4 VA-form XO=48 → 0x10000030 (POWER9) // maddhdu primary=4 VA-form XO=49 → 0x10000031 (POWER9) // addpcis primary=19 DX-form XO=2 → 0x4C000004 (POWER9; 16-bit imm split across d1/d0/d2) .ADDEX = { {.ADDEX, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000154, 0xFC0007FE, .POWER9, .PPC32, {}} }, .MADDLD = { {.MADDLD, {.GPR, .GPR, .GPR, .GPR}, {.RT, .RA, .RC, .RB}, 0x10000033, 0xFC00003F, .POWER9, .PPC64, {}} }, .MADDHD = { {.MADDHD, {.GPR, .GPR, .GPR, .GPR}, {.RT, .RA, .RC, .RB}, 0x10000030, 0xFC00003F, .POWER9, .PPC64, {}} }, .MADDHDU = { {.MADDHDU, {.GPR, .GPR, .GPR, .GPR}, {.RT, .RA, .RC, .RB}, 0x10000031, 0xFC00003F, .POWER9, .PPC64, {}} }, .ADDPCIS = { {.ADDPCIS, {.GPR, .SIMM, .NONE, .NONE},{.RT, .D16, .NONE, .NONE}, 0x4C000004, 0xFC00003E, .POWER9, .PPC32, {}} }, // ========================================================================= // §10b Late supervisor / TLB / SLB / power-mgmt additions // ========================================================================= // slbie XO=434 → 0x7C000264 (no RA) // slbia XO=498 → 0x7C0003E4 // slbmte XO=402 → 0x7C000324 // slbmfee XO=915 → 0x7C000726 // slbmfev XO=851 → 0x7C0006A6 // slbsync XO=338 → 0x7C0002A4 (P8) // slbieg XO=466 → 0x7C0003A4 (P9; with L bit) // tlbie XO=306 → 0x7C000264 — collides; XO=306 actually, // bits = 0x7C000264 - actually overlap with slbie // Per Power ISA: tlbie XO=306 → 0x7C000264. // They use different operand interpretations. // Distinguished by syntax/feature filter. // tlbiel XO=274 → 0x7C000224 // tlbsync XO=566 → 0x7C00046C // nap primary=19 XO=434 with hint bits → 0x4C000364 (deprecated; // usual form is mtmsr with PM bit set; skip nap for now) // msync sync L=2 → 0x7C4004AC (already PTESYNC; msync alias for sync L=2) // dcbzl XO=1014 (same as dcbz) with TH=1 — same opcode as dcbz; // differentiated by operand. Skip. // sc_hv sc with LEV=1 → 0x44000022. (or LEV=2 for HV) .SLBIE = { {.SLBIE, {.GPR, .NONE, .NONE, .NONE}, {.RB, .NONE, .NONE, .NONE}, 0x7C000364, 0xFFFF07FF, .SUPV, .PPC32, {}} }, .SLBIA = { {.SLBIA, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0003E4, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .SLBMTE = { {.SLBMTE, {.GPR, .GPR, .NONE, .NONE}, {.RS, .RB, .NONE, .NONE}, 0x7C000324, 0xFC1F07FF, .SUPV, .PPC32, {}} }, .SLBMFEE = { {.SLBMFEE, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RB, .NONE, .NONE}, 0x7C000726, 0xFC1F07FF, .SUPV, .PPC32, {}} }, .SLBMFEV = { {.SLBMFEV, {.GPR, .GPR, .NONE, .NONE}, {.RT, .RB, .NONE, .NONE}, 0x7C0006A6, 0xFC1F07FF, .SUPV, .PPC32, {}} }, .SLBSYNC = { {.SLBSYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0002A4, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .TLBIE = { {.TLBIE, {.GPR, .GPR, .NONE, .NONE}, {.RS, .RB, .NONE, .NONE}, 0x7C000264, 0xFC1F07FF, .SUPV, .PPC32, {}} }, .TLBIEL = { {.TLBIEL, {.GPR, .NONE, .NONE, .NONE}, {.RB, .NONE, .NONE, .NONE}, 0x7C000224, 0xFFFF07FF, .SUPV, .PPC32, {}} }, .TLBSYNC = { {.TLBSYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00046C, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, // ========================================================================= // §14 Assembler aliases — printer-canonical forms that LLVM also prefers // ========================================================================= // // Each alias entry pins specific operand bits (so the mask covers more bits // than the underlying primitive's mask). The mask popcount makes the alias // win against the primitive at decode time; the encoder picks the alias // when the user-supplied operands fit the fixed pattern. // // Computed aliases (SLWI/SRWI/SLDI/SRDI/CLRRWI/CLRLWI/EXTLDI/..., SUB/SUBC // operand-reorder) live in the eventual encoder helper layer, not here — see // [[ppc-port-progress]]. // ---- ori/xori aliases ---- // nop = ori 0,0,0 → 0x60000000 // xnop = xori 0,0,0 → 0x68000000 .NOP = { {.NOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x60000000, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .XNOP = { {.XNOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x68000000, 0xFFFFFFFF, .BASE, .PPC32, {}} }, // ---- addi / addis with RA=0 ---- // li rD, SI = addi rD, 0, SI (RA fixed at 0) // lis rD, SI = addis rD, 0, SI // la rD, D(RA) = addi rD, RA, D (printer alias; encoded same as addi) // The mask for li/lis covers primary + RA=0 fixed. .LI = { {.LI, {.GPR, .SIMM, .NONE, .NONE}, {.RT, .D16, .NONE, .NONE}, 0x38000000, 0xFC1F0000, .BASE, .PPC32, {}} }, .LIS = { {.LIS, {.GPR, .SIMM, .NONE, .NONE}, {.RT, .D16, .NONE, .NONE}, 0x3C000000, 0xFC1F0000, .BASE, .PPC32, {}} }, .LA = { {.LA, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x38000000, 0xFC000000, .BASE, .PPC32, {}} }, // ---- or/nor as register-move aliases (RS=RB) ---- // mr rA, rS = or rA, rS, rS (RA=RA dest, RS source=RB source) // mr. rA, rS = or. rA, rS, rS // not rA, rS = nor rA, rS, rS // not. rA, rS = nor. rA, rS, rS // // For these, the user passes one source register; the encoder packs it at // BOTH RS (21..25) and RB (11..15). For the LLVM-verify side we just need // canonical bytes where the safe-fill matches: e.g. mr 3, 3 = or 3,3,3. // Our safe-fill puts RS=r3 and RB=r5; we'd see "or rA, r3, r5" which is // NOT an mr. So the table entry can't simply piggyback on OR. // We pin both source slots to the same register in the bits, mask both: // but mask-covering RB makes the operand non-extracted. Compromise: the // alias mnemonic is recognized by the printer when the decoder finds an // OR/NOR with matching RS=RB; we still emit one entry that LLVM matches // when the canonical bits happen to have RS=RB. To get matching bytes, // we override the OR safe-fill for mr via a per-mnemonic fixed pattern: // entry bits include RS=r3 (=21<<3=24... ugh). Simplest: bake a specific // register into the entry's bits and mask everything (no operands). LLVM // will then print "mr r3, r3" for our exact byte pattern. .MR = { {.MR, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C601B78, 0xFFFFFFFE, .BASE, .PPC32, {}} }, // or r0, r3, r3 → printed mr r0, r3 (encoded with specific regs to satisfy LLVM-verify) // (Practical encoder hooks into MR/MR_DOT/NOT/NOT_DOT happen later; this // entry exists to participate in the verify harness as a sanity check.) .MR_DOT = { {.MR_DOT, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C601B79, 0xFFFFFFFF, .BASE, .PPC32, {sets_cr0=true}} }, .NOT = { {.NOT, {.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C6018F8, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .NOT_DOT= { {.NOT_DOT,{.GPR, .GPR, .NONE, .NONE}, {.RA, .RS, .NONE, .NONE}, 0x7C6018F9, 0xFFFFFFFF, .BASE, .PPC32, {sets_cr0=true}} }, // ---- bclr/bcctr unconditional aliases ---- // blr = bclr 20, 0, 0 → 0x4C000020 + (20<<21) = 0x4E800020 // blrl = bclrl 20, 0, 0 → 0x4E800021 // bctr = bcctr 20, 0, 0 → 0x4E800420 // bctrl = bcctrl 20, 0, 0 → 0x4E800421 .BLR = { {.BLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E800020, 0xFFFFFFFF, .BASE, .PPC32, {branch=true}} }, .BLRL = { {.BLRL, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E800021, 0xFFFFFFFF, .BASE, .PPC32, {branch=true, writes_lr=true}} }, .BCTR = { {.BCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E800420, 0xFFFFFFFF, .BASE, .PPC32, {branch=true}} }, .BCTRL = { {.BCTRL, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E800421, 0xFFFFFFFF, .BASE, .PPC32, {branch=true, writes_lr=true}} }, // ---- bc conditional-branch aliases (BO+BI fixed; BD operand) ---- // beq = bc 12, 2, BD → BO=12 BI=2 → bits = 0x40000000 | (12<<21) | (2<<16) = 0x41820000 // bne = bc 4, 2, BD → BO= 4 BI=2 → 0x40000000 | (4<<21) | (2<<16) = 0x40820000 // blt = bc 12, 0, BD → 0x41800000 // ble = bc 4, 1, BD → 0x40810000 // bgt = bc 12, 1, BD → 0x41810000 // bge = bc 4, 0, BD → 0x40800000 // bso = bc 12, 3, BD → 0x41830000 // bns = bc 4, 3, BD → 0x40830000 // Mask covers primary + BO + BI + AA + LK fixed; BD variable: 0xFFFF0003. .BEQ = { {.BEQ, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41820000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BNE = { {.BNE, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40820000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BLT = { {.BLT, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41800000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BLE = { {.BLE, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40810000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BGT = { {.BGT, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41810000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BGE = { {.BGE, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40800000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BSO = { {.BSO, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41830000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BNS = { {.BNS, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40830000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, // L-variants (LK=1) .BEQL = { {.BEQL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41820001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BNEL = { {.BNEL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40820001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BLTL = { {.BLTL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41800001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BLEL = { {.BLEL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40810001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BGTL = { {.BGTL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41810001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BGEL = { {.BGEL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40800001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BSOL = { {.BSOL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x41830001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BNSL = { {.BNSL, {.REL, .NONE, .NONE, .NONE}, {.BRANCH_BD, .NONE, .NONE, .NONE}, 0x40830001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, // LR-variants (bclr): bits = 0x4C000020 | (BO<<21) | (BI<<16) .BEQLR = { {.BEQLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D820020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BNELR = { {.BNELR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C820020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BLTLR = { {.BLTLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D800020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BLELR = { {.BLELR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C810020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BGTLR = { {.BGTLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D810020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BGELR = { {.BGELR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C800020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BSOLR = { {.BSOLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D830020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BNSLR = { {.BNSLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C830020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, // CTR-variants (bcctr): bits = 0x4C000420 | (BO<<21) | (BI<<16) .BEQCTR = { {.BEQCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D820420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BNECTR = { {.BNECTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C820420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BLTCTR = { {.BLTCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D800420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BLECTR = { {.BLECTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C810420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BGTCTR = { {.BGTCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D810420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BGECTR = { {.BGECTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C800420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BSOCTR = { {.BSOCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4D830420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BNSCTR = { {.BNSCTR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C830420, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, // ---- Counter-decrement branches (bc / bclr with no-CR-test BO values) ---- // bdnz = bc 16, 0, BD → BO=16 BI=0 bits = 0x40000000 | (16<<21) | (0<<16) = 0x42000000 // bdz = bc 18, 0, BD → 0x42400000 // bdnzl = bc 16, 0 with LK=1 → 0x42000001 // bdzl = bc 18, 0 with LK=1 → 0x42400001 // bdnzlr = bclr 16, 0, 0 → 0x4E000020 // bdzlr = bclr 18, 0, 0 → 0x4E400020 // bdnzlrl = bclrl 16, 0, 0 → 0x4E000021 // bdzlrl = bclrl 18, 0, 0 → 0x4E400021 .BDNZ = { {.BDNZ, {.REL, .NONE,.NONE,.NONE}, {.BRANCH_BD, .NONE,.NONE,.NONE}, 0x42000000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BDZ = { {.BDZ, {.REL, .NONE,.NONE,.NONE}, {.BRANCH_BD, .NONE,.NONE,.NONE}, 0x42400000, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true}} }, .BDNZL = { {.BDNZL, {.REL, .NONE,.NONE,.NONE}, {.BRANCH_BD, .NONE,.NONE,.NONE}, 0x42000001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZL = { {.BDZL, {.REL, .NONE,.NONE,.NONE}, {.BRANCH_BD, .NONE,.NONE,.NONE}, 0x42400001, 0xFFFF0003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDNZLR = { {.BDNZLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E000020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDZLR = { {.BDZLR, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E400020, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDNZLRL = { {.BDNZLRL, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E000021, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZLRL = { {.BDZLRL, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4E400021, 0xFFFFFFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, // ---- Trap aliases ---- // trap = tw 31, r0, r0 → bits = 0x7C000008 | (31<<21) | 0<<16 | 0<<11 = 0x7FE00008 .TRAP = { {.TRAP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7FE00008, 0xFFFFFFFF, .BASE, .PPC32, {}} }, // ---- SPR-move aliases ---- // mflr rD = mfspr rD, 8 → bits = 0x7C0002A6 | (8 split half-swapped at 11..20) // = 0x7C0002A6 | (8<<11) | (0<<16) = 0x7C0042A6 // SPR=8 (low 5 = 01000 → bits 11..15, high 5 = 0 → bits 16..20) // mtlr rS = mtspr 8, rS → 0x7C0003A6 | (8<<11) | (0<<16) = 0x7C0043A6 // mfctr rD = mfspr rD, 9 → SPR=9 (low 5 = 01001 → bits 11..15 = 9) // = 0x7C0002A6 | (9<<11) = 0x7C0942A6 -- wait 9<<11 = 0x4800 // 0x7C0002A6 | 0x4800 = 0x7C0048A6 // mtctr rS = mtspr 9, rS → 0x7C0003A6 | 0x4800 = 0x7C0049A6 // mfxer rD = mfspr rD, 1 → SPR=1 (low 5 = 1 → bits 11..15 = 1) // = 0x7C0002A6 | (1<<11) = 0x7C0102A6 — wait // 1<<11 = 0x800. 0x7C0002A6 | 0x800 = 0x7C0008A6. // Hmm let me recompute: shift 11 means bit 11 set. // 0x800 = 0...0100000000000 = bit 11. So SPR low 5 at bits 11..15 with value 1 = 0x800. // 0x7C0002A6 | 0x800 = 0x7C0008A6. — Hmm but my mflr was wrong. // Recompute mflr (SPR=8): low 5 bits of SPR = 01000 = 8 = 0x8. At bits 11..15. // 8 << 11 = 0x4000. So bits = 0x7C0002A6 | 0x4000 = 0x7C0042A6. // ✓ matches what I wrote. // mfctr (SPR=9): 9 << 11 = 0x4800. bits = 0x7C0002A6 | 0x4800 = 0x7C0048A6. ✓ // mfxer (SPR=1): 1 << 11 = 0x800. bits = 0x7C0002A6 | 0x800 = 0x7C0008A6. Actually wait... // SPR=1 in PPC convention: low 5 bits of 1 = 00001. At bits 11..15. // In u32: bit 11 = 1. Value: 0x800. ✓ .MFLR = { {.MFLR, {.GPR, .NONE,.NONE,.NONE}, {.RT, .NONE,.NONE,.NONE}, 0x7C0802A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MTLR = { {.MTLR, {.GPR, .NONE,.NONE,.NONE}, {.RS, .NONE,.NONE,.NONE}, 0x7C0803A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MFCTR = { {.MFCTR, {.GPR, .NONE,.NONE,.NONE}, {.RT, .NONE,.NONE,.NONE}, 0x7C0902A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MTCTR = { {.MTCTR, {.GPR, .NONE,.NONE,.NONE}, {.RS, .NONE,.NONE,.NONE}, 0x7C0903A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MFXER = { {.MFXER, {.GPR, .NONE,.NONE,.NONE}, {.RT, .NONE,.NONE,.NONE}, 0x7C0102A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MTXER = { {.MTXER, {.GPR, .NONE,.NONE,.NONE}, {.RS, .NONE,.NONE,.NONE}, 0x7C0103A6, 0xFC1FFFFF, .BASE, .PPC32, {}} }, // ---- Compare aliases (L bit fixed) ---- // cmpw BF, RA, RB = cmp BF, 0, RA, RB → 0x7C000000 | bit21=0 (already) // cmpd BF, RA, RB = cmp BF, 1, RA, RB → 0x7C200000 (bit 21 set) // cmplw BF, RA, RB = cmpl BF, 0, RA, RB → 0x7C000040 // cmpld BF, RA, RB = cmpl BF, 1, RA, RB → 0x7C200040 // cmpwi BF, RA, SI = cmpi BF, 0, RA, SI → 0x2C000000 // cmpdi BF, RA, SI = cmpi BF, 1, RA, SI → 0x2C200000 // cmplwi BF, RA, UI = cmpli BF, 0, RA, UI → 0x28000000 // cmpldi BF, RA, UI = cmpli BF, 1, RA, UI → 0x28200000 .CMPW = { {.CMPW, {.CR_FIELD, .GPR, .GPR, .NONE}, {.BF, .RA, .RB, .NONE}, 0x7C000000, 0xFC6007FE, .BASE, .PPC32, {}} }, .CMPD = { {.CMPD, {.CR_FIELD, .GPR, .GPR, .NONE}, {.BF, .RA, .RB, .NONE}, 0x7C200000, 0xFC6007FE, .P64, .PPC64, {}} }, .CMPLW = { {.CMPLW, {.CR_FIELD, .GPR, .GPR, .NONE}, {.BF, .RA, .RB, .NONE}, 0x7C000040, 0xFC6007FE, .BASE, .PPC32, {}} }, .CMPLD = { {.CMPLD, {.CR_FIELD, .GPR, .GPR, .NONE}, {.BF, .RA, .RB, .NONE}, 0x7C200040, 0xFC6007FE, .P64, .PPC64, {}} }, .CMPWI = { {.CMPWI, {.CR_FIELD, .GPR, .SIMM, .NONE}, {.BF, .RA, .D16, .NONE}, 0x2C000000, 0xFC600000, .BASE, .PPC32, {}} }, .CMPDI = { {.CMPDI, {.CR_FIELD, .GPR, .SIMM, .NONE}, {.BF, .RA, .D16, .NONE}, 0x2C200000, 0xFC600000, .P64, .PPC64, {}} }, .CMPLWI = { {.CMPLWI, {.CR_FIELD, .GPR, .UIMM, .NONE}, {.BF, .RA, .UI16, .NONE}, 0x28000000, 0xFC600000, .BASE, .PPC32, {}} }, .CMPLDI = { {.CMPLDI, {.CR_FIELD, .GPR, .UIMM, .NONE}, {.BF, .RA, .UI16, .NONE}, 0x28200000, 0xFC600000, .P64, .PPC64, {}} }, // ========================================================================= // §13 Power ISA 3.1 prefixed (POWER10) — 8-byte instructions // ========================================================================= // // Each prefixed instruction consists of a 4-byte PREFIX word followed by a // 4-byte SUFFIX word (8 bytes total, big-endian on the wire). The // Encoding's `bits` and `mask` describe the SUFFIX; the PREFIX word is // looked up by Mnemonic in PREFIX_BITS_TABLE (below this batch). // // `flags.prefixed = true` signals 8-byte length and triggers the // PREFIX_BITS_TABLE lookup at dump / encode time. // // Prefix templates (from Power ISA 3.1 §1.6.2): // MLS prefix = 0x06000000 (Modified Load/Store; D-form suffix) // 8LS prefix = 0x04000000 (Eight-byte Load/Store; new D-form suffix) // MRR prefix = 0x05000000 (Modified Register-Register; rarely used) // 8RR prefix = 0x07000000 (Eight-byte Register-Register; MMA + XXSPLTI*) // // Confirmed via llvm-mc -mattr=+isa-v31-instructions --show-encoding. // ---- MLS-form D-loads (suffix = same primary opcode as non-prefix load) ---- .PLBZ = { {.PLBZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x88000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLHZ = { {.PLHZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA0000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLHA = { {.PLHA, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLWZ = { {.PLWZ, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x80000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, // ---- 8LS-form D-loads (suffix uses *new* primary opcodes 41 / 57) ---- .PLWA = { {.PLWA, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA4000000, 0xFC000000, .POWER10, .PPC64, {prefixed=true}} }, .PLD = { {.PLD, {.GPR, .MEM, .NONE, .NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xE4000000, 0xFC000000, .POWER10, .PPC64, {prefixed=true}} }, // ---- MLS-form D-stores ---- .PSTB = { {.PSTB, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x98000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTH = { {.PSTH, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0xB0000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTW = { {.PSTW, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0x90000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, // ---- 8LS-form D-stores ---- .PSTD = { {.PSTD, {.GPR, .MEM, .NONE, .NONE}, {.RS, .OFFSET_BASE_D, .NONE, .NONE}, 0xF4000000, 0xFC000000, .POWER10, .PPC64, {prefixed=true}} }, // ---- MLS-form FP loads/stores ---- .PLFS = { {.PLFS, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC0000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLFD = { {.PLFD, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTFS = { {.PSTFS, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD0000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTFD = { {.PSTFD, {.FPR, .MEM, .NONE, .NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, // ---- MLS-form arithmetic immediate (PADDI / PLI = PADDI w/ RA=0) ---- .PADDI = { {.PADDI, {.GPR, .GPR_OR_ZERO, .SIMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x38000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLI = { {.PLI, {.GPR, .SIMM, .NONE, .NONE}, {.RT, .D16, .NONE, .NONE}, 0x38000000, 0xFC1F0000, .POWER10, .PPC32, {prefixed=true}} }, // ---- 8LS-form vector loads / stores (POWER10) ---- // Suffix primaries borrow non-prefix opcodes 42/43/46/47/50/54. // plxsd suffix primary 42 → 0xA8000000 // plxssp suffix primary 43 → 0xAC000000 // pstxsd suffix primary 46 → 0xB8000000 // pstxssp suffix primary 47 → 0xBC000000 // plxv suffix primary 50 → 0xC8000000 (note: collides with LFD non-prefix) // pstxv suffix primary 54 → 0xD8000000 .PLXSD = { {.PLXSD, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xA8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLXSSP = { {.PLXSSP, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xAC000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTXSD = { {.PSTXSD, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xB8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTXSSP = { {.PSTXSSP, {.VR, .MEM, .NONE, .NONE}, {.VRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xBC000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PLXV = { {.PLXV, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_BASE_D, .NONE, .NONE}, 0xC8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, .PSTXV = { {.PSTXV, {.VSR, .MEM, .NONE, .NONE}, {.XT, .OFFSET_BASE_D, .NONE, .NONE}, 0xD8000000, 0xFC000000, .POWER10, .PPC32, {prefixed=true}} }, // ---- 8RR-form vector splat-immediate (POWER10) ---- // Prefix template = 0b01 (= 0x05000000). Suffix uses primary 32 plus a // 3-bit subop at bits 16..18 (LSB) that selects the splat variant: // xxsplti32dx: subop = 000 → 0x80000000 // xxspltidp: subop = 100 → 0x80040000 (bit 18 = 1) // xxspltiw: subop = 110 → 0x80060000 (bits 18,17 = 1) // Mask covers primary + bits 16..18; XT (21..25) and IMM (0..15) variable. .XXSPLTIDP = { {.XXSPLTIDP, {.VSR, .SIMM, .NONE, .NONE}, {.XT, .D16, .NONE, .NONE}, 0x80040000, 0xFC070000, .POWER10, .PPC32, {prefixed=true}} }, .XXSPLTIW = { {.XXSPLTIW, {.VSR, .SIMM, .NONE, .NONE}, {.XT, .D16, .NONE, .NONE}, 0x80060000, 0xFC070000, .POWER10, .PPC32, {prefixed=true}} }, .XXSPLTI32DX = { {.XXSPLTI32DX, {.VSR, .SIMM, .NONE, .NONE}, {.XT, .D16, .NONE, .NONE}, 0x80000000, 0xFC070000, .POWER10, .PPC32, {prefixed=true}} }, // ---- POWER10 quad-precision (binary128) compares (primary=63, X-form) ---- // xscmpeqqp XO= 68 → 0xFC000088 // xscmpgtqp XO=228 → 0xFC0001C8 // xscmpgeqp XO=196 → 0xFC000188 .XSCMPEQQP = { {.XSCMPEQQP, {.CR_FIELD, .VR, .VR, .NONE}, {.BF, .VRA, .VRB, .NONE}, 0xFC000088, 0xFC6007FF, .POWER10, .PPC32, {}} }, .XSCMPGTQP = { {.XSCMPGTQP, {.CR_FIELD, .VR, .VR, .NONE}, {.BF, .VRA, .VRB, .NONE}, 0xFC0001C8, 0xFC6007FF, .POWER10, .PPC32, {}} }, .XSCMPGEQP = { {.XSCMPGEQP, {.CR_FIELD, .VR, .VR, .NONE}, {.BF, .VRA, .VRB, .NONE}, 0xFC000188, 0xFC6007FF, .POWER10, .PPC32, {}} }, // ========================================================================= // §11b AltiVec POWER8/9 additions (LLVM-derived bits) // ========================================================================= // // Three-operand VX-form: base = 0x10000XXX with XO at bits 0..10. // Two-operand VX-form : VRA is fixed to 0 → mask covers bits 16..20. // Four-operand VA-form: base = 0x10000XXX with XO at bits 0..5. // ---- Absolute-difference (POWER9) ---- .VABSDUB = { {.VABSDUB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000403, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VABSDUH = { {.VABSDUH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000443, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VABSDUW = { {.VABSDUW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000483, 0xFC0007FF, .POWER9, .PPC32, {}} }, // ---- Count Leading / Trailing Zeros (POWER8/9) ---- .VCLZB = { {.VCLZB, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000702, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VCLZH = { {.VCLZH, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000742, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VCLZW = { {.VCLZW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000782, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VCLZD = { {.VCLZD, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100007C2, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VCTZB = { {.VCTZB, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x101C0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VCTZH = { {.VCTZH, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x101D0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VCTZW = { {.VCTZW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x101E0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VCTZD = { {.VCTZD, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x101F0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, // ---- Population Count (POWER8) ---- .VPOPCNTB = { {.VPOPCNTB, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000703, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VPOPCNTH = { {.VPOPCNTH, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000743, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VPOPCNTW = { {.VPOPCNTW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10000783, 0xFC1F07FF, .POWER8, .PPC32, {}} }, .VPOPCNTD = { {.VPOPCNTD, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100007C3, 0xFC1F07FF, .POWER8, .PPC32, {}} }, // ---- AES / SHA / Polynomial-multiply (POWER8 Crypto) ---- .VCIPHER = { {.VCIPHER, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000508, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VCIPHERLAST = { {.VCIPHERLAST, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000509, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VNCIPHER = { {.VNCIPHER, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000548, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VNCIPHERLAST= { {.VNCIPHERLAST,{.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000549, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSBOX = { {.VSBOX, {.VR, .VR, .NONE, .NONE},{.VRT, .VRA, .NONE, .NONE}, 0x100005C8, 0xFC00FFFF, .POWER8, .PPC32, {}} }, .VSHASIGMAW = { {.VSHASIGMAW, {.VR, .VR, .IMM, .IMM}, {.VRT, .VRA, .NONE, .NONE}, 0x10000682, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VSHASIGMAD = { {.VSHASIGMAD, {.VR, .VR, .IMM, .IMM}, {.VRT, .VRA, .NONE, .NONE}, 0x100006C2, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPMSUMB = { {.VPMSUMB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000408, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPMSUMH = { {.VPMSUMH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000448, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPMSUMW = { {.VPMSUMW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000488, 0xFC0007FF, .POWER8, .PPC32, {}} }, .VPMSUMD = { {.VPMSUMD, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100004C8, 0xFC0007FF, .POWER8, .PPC32, {}} }, // ---- BCD multiply-by-10 (POWER9) ---- .VMUL10UQ = { {.VMUL10UQ, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRA, .NONE, .NONE}, 0x10000201, 0xFC00FFFF, .POWER9, .PPC32, {}} }, .VMUL10CUQ = { {.VMUL10CUQ, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRA, .NONE, .NONE}, 0x10000001, 0xFC00FFFF, .POWER9, .PPC32, {}} }, .VMUL10EUQ = { {.VMUL10EUQ, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000241, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VMUL10ECUQ = { {.VMUL10ECUQ, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000041, 0xFC0007FF, .POWER9, .PPC32, {}} }, // ---- Bit permute (POWER8/9) -- VBPERMQ/VBPERMD already in §11 above ---- // ---- Vector parity-byte (POWER9) ---- .VPRTYBW = { {.VPRTYBW, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10080602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VPRTYBD = { {.VPRTYBD, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10090602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VPRTYBQ = { {.VPRTYBQ, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x100A0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, // ---- Rotate-and-mask vector (POWER9) ---- .VRLDNM = { {.VRLDNM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100001C5, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VRLDMI = { {.VRLDMI, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x100000C5, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VRLWNM = { {.VRLWNM, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000185, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VRLWMI = { {.VRLWMI, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000085, 0xFC0007FF, .POWER9, .PPC32, {}} }, // ---- Variable-shift (POWER9) ---- .VSLV = { {.VSLV, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000744, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VSRV = { {.VSRV, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000704, 0xFC0007FF, .POWER9, .PPC32, {}} }, // ---- Compare-not-equal-or-zero (POWER9) ---- .VCMPNEZB = { {.VCMPNEZB, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000107, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEZB_DOT = { {.VCMPNEZB_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000507, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEZH = { {.VCMPNEZH, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000147, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEZH_DOT = { {.VCMPNEZH_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000547, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEZW = { {.VCMPNEZW, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000187, 0xFC0007FF, .POWER9, .PPC32, {}} }, .VCMPNEZW_DOT = { {.VCMPNEZW_DOT, {.VR, .VR, .VR, .NONE}, {.VRT, .VRA, .VRB, .NONE}, 0x10000587, 0xFC0007FF, .POWER9, .PPC32, {}} }, // ---- Within-vector sign-extend (POWER9) ---- .VEXTSB2W = { {.VEXTSB2W, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10100602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VEXTSH2W = { {.VEXTSH2W, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10110602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VEXTSB2D = { {.VEXTSB2D, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10180602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VEXTSH2D = { {.VEXTSH2D, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x10190602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, .VEXTSW2D = { {.VEXTSW2D, {.VR, .VR, .NONE, .NONE}, {.VRT, .VRB, .NONE, .NONE}, 0x101A0602, 0xFC1F07FF, .POWER9, .PPC32, {}} }, // ---- Insert / Extract within vector (POWER9) ---- .VINSERTB = { {.VINSERTB, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000030D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VINSERTH = { {.VINSERTH, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000034D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VINSERTW = { {.VINSERTW, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000038D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VINSERTD = { {.VINSERTD, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x100003CD, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VEXTRACTUB = { {.VEXTRACTUB, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000020D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VEXTRACTUH = { {.VEXTRACTUH, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000024D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VEXTRACTUW = { {.VEXTRACTUW, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x1000028D, 0xFC1007FF, .POWER9, .PPC32, {}} }, .VEXTRACTD = { {.VEXTRACTD, {.VR, .VR, .IMM, .NONE}, {.VRT, .VRB, .UIMM_4, .NONE}, 0x100002CD, 0xFC1007FF, .POWER9, .PPC32, {}} }, // ========================================================================= // §1b Additional counter-decrement+CR-bit branches (BDxxF/BDxxT) // ========================================================================= // bdnzf BI, BD = bc 0, BI, BD → 0x40000000 // bdnzt BI, BD = bc 8, BI, BD → 0x41000000 // bdzf BI, BD = bc 2, BI, BD → 0x40400000 // bdzt BI, BD = bc 10, BI, BD → 0x41400000 // Mask covers primary + BO + AA + LK; BI + BD operand-driven. .BDNZF = { {.BDNZF, {.CR_BIT, .REL, .NONE, .NONE}, {.BI_FIELD, .BRANCH_BD, .NONE, .NONE}, 0x40000000, 0xFFE00003, .BASE, .PPC32, {cond_branch=true}} }, .BDNZT = { {.BDNZT, {.CR_BIT, .REL, .NONE, .NONE}, {.BI_FIELD, .BRANCH_BD, .NONE, .NONE}, 0x41000000, 0xFFE00003, .BASE, .PPC32, {cond_branch=true}} }, .BDZF = { {.BDZF, {.CR_BIT, .REL, .NONE, .NONE}, {.BI_FIELD, .BRANCH_BD, .NONE, .NONE}, 0x40400000, 0xFFE00003, .BASE, .PPC32, {cond_branch=true}} }, .BDZT = { {.BDZT, {.CR_BIT, .REL, .NONE, .NONE}, {.BI_FIELD, .BRANCH_BD, .NONE, .NONE}, 0x41400000, 0xFFE00003, .BASE, .PPC32, {cond_branch=true}} }, // ========================================================================= // §10c Additional system / cache / SLB entries // ========================================================================= // dcbzl primary=31 XO=1014 with TH=1 at bit 21 → 0x7C2007EC // sc_hv primary=17 LEV=1 → 0x44000022 // slbieg primary=31 XO=466 → 0x7C0003A4 .DCBZL = { {.DCBZL, {.MEM, .NONE,.NONE,.NONE}, {.OFFSET_BASE_X,.NONE,.NONE,.NONE}, 0x7C2007EC, 0xFE2007FE, .POWER8, .PPC32, {}} }, .SC_HV = { {.SC_HV, {.IMM, .NONE,.NONE,.NONE}, {.LEV_FIELD,.NONE,.NONE,.NONE}, 0x44000022, 0xFFFFFFFD, .HV, .PPC32, {}} }, .SLBIEG = { {.SLBIEG, {.GPR, .GPR, .NONE, .NONE}, {.RS, .RB, .NONE, .NONE}, 0x7C0003A4, 0xFC0007FE, .POWER9, .PPC32, {}} }, // ========================================================================= // §6c Rc-variants of extended divides (POWER7) // ========================================================================= // Base + 1 = Rc=1; Base + 0x400 = OE=1. .DIVDE_DOT = { {.DIVDE_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000353, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVDE_O = { {.DIVDE_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000752, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVDE_O_DOT = { {.DIVDE_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000753, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .DIVDEU_DOT = { {.DIVDEU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000313, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVDEU_O = { {.DIVDEU_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000712, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVDEU_O_DOT = { {.DIVDEU_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000713, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .DIVWE_DOT = { {.DIVWE_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000357, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVWE_O = { {.DIVWE_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000756, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVWE_O_DOT = { {.DIVWE_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000757, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .DIVWEU_DOT = { {.DIVWEU_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000317, 0xFC0003FF, .BASE, .PPC32, {sets_cr0=true}} }, .DIVWEU_O = { {.DIVWEU_O, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000716, 0xFC0007FE, .BASE, .PPC32, {has_oe=true}} }, .DIVWEU_O_DOT = { {.DIVWEU_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000717, 0xFC0007FF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, // ========================================================================= // §14b Computed aliases — fixed-instance entries // ========================================================================= // // Each entry encodes ONE specific instance of the alias (with concrete // operand values baked into `bits` and `mask = 0xFFFFFFFE`). This is // intentional: these aliases need encoder-side parameter computation that // doesn't fit the (bits, mask) model. The fixed instances satisfy the // table-coverage + LLVM-verification contract; the eventual encoder will // synthesize per-call instances from the underlying rlwinm/rldic*/subf/ // ori family using user-supplied parameters. // // The instances below use rD=3, rS=4, n=4, b=8 as canonical safe-fill. // ---- Shift left/right immediate via rlwinm/rldic ---- .SLWI = { {.SLWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x54832036, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .SRWI = { {.SRWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x5483E13E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .SLDI = { {.SLDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x788326E4, 0xFFFFFFFE, .P64, .PPC64, {}} }, .SRDI = { {.SRDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7883E102, 0xFFFFFFFE, .P64, .PPC64, {}} }, // ---- Clear left/right via rlwinm/rldic ---- .CLRLWI = { {.CLRLWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x5483013E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .CLRRWI = { {.CLRRWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x54830036, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .CLRLDI = { {.CLRLDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78830100, 0xFFFFFFFE, .P64, .PPC64, {}} }, .CLRRDI = { {.CLRRDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x788306E4, 0xFFFFFFFE, .P64, .PPC64, {}} }, // ---- Extract / insert bit-fields via rlwinm/rldic*/rlwimi ---- .EXTLWI = { {.EXTLWI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x54834006, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .EXTRWI = { {.EXTRWI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x5483673E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .EXTLDI = { {.EXTLDI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x788340C4, 0xFFFFFFFE, .P64, .PPC64, {}} }, .EXTRDI = { {.EXTRDI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x78836720, 0xFFFFFFFE, .P64, .PPC64, {}} }, .INSLWI = { {.INSLWI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x5083C216, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .INSRWI = { {.INSRWI, {.GPR, .GPR, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x5083A216, 0xFFFFFFFE, .BASE, .PPC32, {}} }, // ---- Rotate (left/right) ---- .ROTLW = { {.ROTLW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x5C83283E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .ROTLWI = { {.ROTLWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x5483203E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .ROTRW = { {.ROTRW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x5C83283E, 0xFFFFFFFE, .BASE, .PPC32, {}} }, // rotrw = rotlw with neg shift — same form .ROTRDI = { {.ROTRDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7883E002, 0xFFFFFFFE, .P64, .PPC64, {}} }, .ROTLD = { {.ROTLD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78832810, 0xFFFFFFFE, .P64, .PPC64, {}} }, .ROTLDI = { {.ROTLDI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78832000, 0xFFFFFFFE, .P64, .PPC64, {}} }, // ---- sub / subc operand-reorder aliases of subf / subfc ---- .SUB = { {.SUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652050, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .SUB_DOT = { {.SUB_DOT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652051, 0xFFFFFFFF, .BASE, .PPC32, {sets_cr0=true}} }, .SUB_O = { {.SUB_O, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652450, 0xFFFFFFFE, .BASE, .PPC32, {has_oe=true}} }, .SUB_O_DOT = { {.SUB_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652451, 0xFFFFFFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, .SUBC = { {.SUBC, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652010, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .SUBC_DOT = { {.SUBC_DOT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652011, 0xFFFFFFFF, .BASE, .PPC32, {sets_cr0=true}} }, .SUBC_O = { {.SUBC_O, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652410, 0xFFFFFFFE, .BASE, .PPC32, {has_oe=true}} }, .SUBC_O_DOT = { {.SUBC_O_DOT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C652411, 0xFFFFFFFF, .BASE, .PPC32, {has_oe=true, sets_cr0=true}} }, // ---- Power management / sync aliases ---- .NAP = { {.NAP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C000364, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .MSYNC = { {.MSYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0004AC, 0xFFFFFFFF, .BASE, .PPC32, {}} }, // ---- PSUBI is `paddi -imm` — bake the specific case (rT=3, rA=4, n=100) ---- // (Prefix carries high 18 bits of -100 = sign-ext = 0x3FFFF.) .PSUBI = { {.PSUBI, {.GPR, .GPR, .SIMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x3864FF9C, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, // ========================================================================= // §12c POWER9 VSX test / extract / insert / exponent / significand // ========================================================================= // Fixed-instance entries (XT=1, XA=2, XB=3 or applicable). LLVM-verified. .XSCVDPHP = { {.XSCVDPHP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF031156C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSCVHPDP = { {.XSCVHPDP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF030156C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSIEXPDP = { {.XSIEXPDP, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0221F2C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSXEXPDP = { {.XSXEXPDP, {.GPR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF020156C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSXSIGDP = { {.XSXSIGDP, {.GPR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF021156C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSTDIVDP = { {.XSTDIVDP, {.CR_FIELD, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF00111E8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSTSQRTDP = { {.XSTSQRTDP, {.CR_FIELD, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF00009A8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSTSTDCDP = { {.XSTSTDCDP, {.CR_FIELD, .VSR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0000DA8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XSTSTDCSP = { {.XSTSTDCSP, {.CR_FIELD, .VSR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0000CA8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVIEXPDP = { {.XVIEXPDP, {.VSR, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0221FC0, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVIEXPSP = { {.XVIEXPSP, {.VSR, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0221EC0, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTDIVDP = { {.XVTDIVDP, {.CR_FIELD, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF00113E8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTDIVSP = { {.XVTDIVSP, {.CR_FIELD, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF00112E8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTSQRTDP = { {.XVTSQRTDP, {.CR_FIELD, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0000BA8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTSQRTSP = { {.XVTSQRTSP, {.CR_FIELD, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0000AA8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTSTDCDP = { {.XVTSTDCDP, {.VSR, .VSR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF02017A8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVTSTDCSP = { {.XVTSTDCSP, {.VSR, .VSR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF02016A8, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVXEXPDP = { {.XVXEXPDP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF020176C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVXEXPSP = { {.XVXEXPSP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF028176C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVXSIGDP = { {.XVXSIGDP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF021176C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, .XVXSIGSP = { {.XVXSIGSP, {.VSR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF029176C, 0xFFFFFFFE, .VSX_P9, .PPC32, {}} }, // ========================================================================= // §13b MMA accelerator (POWER10) — prefixed 8-byte fixed-instance entries // ========================================================================= // Prefix = 0x07900000 (MMIRR template). Suffix bakes AT=0, XA=32, XB=33. .PMXVF32GER = { {.PMXVF32GER, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0008DE, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF64GER = { {.PMXVF64GER, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0009DE, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI4GER8 = { {.PMXVI4GER8, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00091E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI8GER4 = { {.PMXVI8GER4, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00081E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI16GER2 = { {.PMXVI16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000A5E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, // ========================================================================= // §15 POWER9 Quad-Precision Binary128 FP (LLVM-verified bake-everything) // ========================================================================= // // 3-operand instances: VRT=1, VRA=2, VRB=3 baked in. // 2-operand instances: VRT=1, VRB=2 baked in. // 4-operand instances: VRT=1, VRA=2, VRB=3 (FRC slot variable). // Compare: BF=0, VRA=1, VRB=2. .XSADDQP = { {.XSADDQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221808, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSADDQPO = { {.XSADDQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221809, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSSUBQP = { {.XSSUBQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221C08, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSSUBQPO = { {.XSSUBQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221C09, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSMULQP = { {.XSMULQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221848, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSMULQPO = { {.XSMULQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221849, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSDIVQP = { {.XSDIVQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221C48, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSDIVQPO = { {.XSDIVQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221C49, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSSQRTQP = { {.XSSQRTQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC3B1648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSSQRTQPO = { {.XSSQRTQPO, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC3B1649, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSMADDQP = { {.XSMADDQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B08, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSMADDQPO = { {.XSMADDQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B09, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSMSUBQP = { {.XSMSUBQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B48, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSMSUBQPO = { {.XSMSUBQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B49, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSNMADDQP = { {.XSNMADDQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B88, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSNMADDQPO = { {.XSNMADDQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221B89, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSNMSUBQP = { {.XSNMSUBQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221BC8, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSNMSUBQPO = { {.XSNMSUBQPO, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221BC9, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSABSQP = { {.XSABSQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC201648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSNABSQP = { {.XSNABSQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC281648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSNEGQP = { {.XSNEGQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC301648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCPSGNQP = { {.XSCPSGNQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC2218C8, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCMPOQP = { {.XSCMPOQP, {.CR_FIELD, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC011108, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCMPUQP = { {.XSCMPUQP, {.CR_FIELD, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC011508, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSTSTDCQP = { {.XSTSTDCQP, {.CR_FIELD, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC000D88, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSRQPI = { {.XSRQPI, {.IMM, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xFC20100A, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSRQPIX = { {.XSRQPIX, {.IMM, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xFC20100B, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSRQPXP = { {.XSRQPXP, {.IMM, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xFC20104A, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSXEXPQP = { {.XSXEXPQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSXSIGQP = { {.XSXSIGQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC321648, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSIEXPQP = { {.XSIEXPQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221EC8, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPDP = { {.XSCVQPDP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC341688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPDPO = { {.XSCVQPDPO, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC341689, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XSCVDPQP = { {.XSCVDPQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC361688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPSDZ = { {.XSCVQPSDZ, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC391688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPSWZ = { {.XSCVQPSWZ, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC291688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPUDZ = { {.XSCVQPUDZ, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC311688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVQPUWZ = { {.XSCVQPUWZ, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC211688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVSDQP = { {.XSCVSDQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC2A1688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .XSCVUDQP = { {.XSCVUDQP, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221688, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, // ========================================================================= // §16 Decimal Floating Point (POWER6+) — bake-everything fixed instances // ========================================================================= // Instances use FRT=1, FRA=2, FRB=3 (or FRT=2 FRA=4 FRB=6 for quadword // forms — FPR pairs must be even). .DADD = { {.DADD, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221804, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DADD_DOT = { {.DADD_DOT, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221805, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DSUB = { {.DSUB, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221C04, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DSUB_DOT = { {.DSUB_DOT, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221C05, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DMUL = { {.DMUL, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221844, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DMUL_DOT = { {.DMUL_DOT, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221845, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DDIV = { {.DDIV, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221C44, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DDIV_DOT = { {.DDIV_DOT, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221C45, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DCMPU = { {.DCMPU, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC011504, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCMPO = { {.DCMPO, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC011104, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DRSP = { {.DRSP, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201604, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DRSP_DOT = { {.DRSP_DOT, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201605, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DCTDP = { {.DCTDP, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201204, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCTDP_DOT= { {.DCTDP_DOT,{.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201205, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DXEX = { {.DXEX, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2012C4, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DXEX_DOT = { {.DXEX_DOT, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2012C5, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DIEX = { {.DIEX, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221EC4, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DIEX_DOT = { {.DIEX_DOT, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221EC5, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DRRND = { {.DRRND, {.FPR, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221846, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DRRND_DOT= { {.DRRND_DOT,{.FPR, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221847, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DRINTX = { {.DRINTX, {.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2010C6, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DRINTX_DOT={ {.DRINTX_DOT,{.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2010C7, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DRINTN = { {.DRINTN, {.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2011C6, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DRINTN_DOT={ {.DRINTN_DOT,{.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2011C7, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DQUA = { {.DQUA, {.FPR, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221806, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DQUA_DOT = { {.DQUA_DOT, {.FPR, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC221807, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DQUAI = { {.DQUAI, {.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201086, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DQUAI_DOT= { {.DQUAI_DOT,{.IMM, .FPR, .FPR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201087, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DSCLI = { {.DSCLI, {.FPR, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC220084, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DSCLI_DOT= { {.DSCLI_DOT,{.FPR, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC220085, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DSCRI = { {.DSCRI, {.FPR, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2200C4, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DSCRI_DOT= { {.DSCRI_DOT,{.FPR, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC2200C5, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DCFFIX = { {.DCFFIX, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201644, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCFFIX_DOT={ {.DCFFIX_DOT,{.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201645, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DCTFIX = { {.DCTFIX, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201244, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCTFIX_DOT={ {.DCTFIX_DOT,{.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201245, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DTSTDC = { {.DTSTDC, {.CR_FIELD, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC010184, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DTSTDG = { {.DTSTDG, {.CR_FIELD, .FPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0101C4, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DTSTEX = { {.DTSTEX, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC011144, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DTSTSF = { {.DTSTSF, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC011544, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DENBCD = { {.DENBCD, {.IMM, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201684, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DENBCD_DOT={ {.DENBCD_DOT,{.IMM, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201685, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DDEDPD = { {.DDEDPD, {.IMM, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201284, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DDEDPD_DOT={ {.DDEDPD_DOT,{.IMM, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC201285, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, // DFPQ (quadword decimal — FPR pairs, must be even) .DADDQ = { {.DADDQ, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443004, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DADDQ_DOT= { {.DADDQ_DOT,{.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443005, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DSUBQ = { {.DSUBQ, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443404, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DSUBQ_DOT= { {.DSUBQ_DOT,{.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443405, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DMULQ = { {.DMULQ, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443044, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DMULQ_DOT= { {.DMULQ_DOT,{.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443045, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DDIVQ = { {.DDIVQ, {.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443444, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DDIVQ_DOT= { {.DDIVQ_DOT,{.FPR, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC443445, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, .DCMPUQ = { {.DCMPUQ, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC022504, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCMPOQ = { {.DCMPOQ, {.CR_FIELD, .FPR, .FPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC022104, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCTFIXQ = { {.DCTFIXQ, {.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC402244, 0xFFFFFFFE, .DFP, .PPC32, {}} }, .DCTFIXQ_DOT= { {.DCTFIXQ_DOT,{.FPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC402245, 0xFFFFFFFF, .DFP, .PPC32, {sets_cr1=true}} }, // ========================================================================= // §17 MMA accelerator expansion (POWER10) — bake-everything // ========================================================================= // Acc move/clear: .XXMTACC = { {.XXMTACC, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C010162, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXMFACC = { {.XXMFACC, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C000162, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXSETACCZ = { {.XXSETACCZ, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C030162, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // 24 xvf16ger2 / xvf32ger / xvf64ger / xvbf16ger2 variants (× pp/pn/np/nn) .XVF16GER2 = { {.XVF16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00089E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF16GER2PP = { {.XVF16GER2PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000896, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF16GER2PN = { {.XVF16GER2PN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000C96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF16GER2NP = { {.XVF16GER2NP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000A96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF16GER2NN = { {.XVF16GER2NN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000E96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF32GER = { {.XVF32GER, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0008DE, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF32GERPP = { {.XVF32GERPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0008D6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF32GERPN = { {.XVF32GERPN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000CD6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF32GERNP = { {.XVF32GERNP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000AD6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF32GERNN = { {.XVF32GERNN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000ED6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF64GER = { {.XVF64GER, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0009DE, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF64GERPP = { {.XVF64GERPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0009D6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF64GERPN = { {.XVF64GERPN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000DD6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF64GERNP = { {.XVF64GERNP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000BD6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVF64GERNN = { {.XVF64GERNN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000FD6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVBF16GER2 = { {.XVBF16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00099E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVBF16GER2PP= { {.XVBF16GER2PP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000996, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVBF16GER2PN= { {.XVBF16GER2PN,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000D96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVBF16GER2NP= { {.XVBF16GER2NP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVBF16GER2NN= { {.XVBF16GER2NN,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000F96, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI4GER8 = { {.XVI4GER8, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00091E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI4GER8PP = { {.XVI4GER8PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000916, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI8GER4 = { {.XVI8GER4, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00081E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI8GER4PP = { {.XVI8GER4PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000816, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI8GER4SPP = { {.XVI8GER4SPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B1E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI16GER2 = { {.XVI16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000A5E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI16GER2PP = { {.XVI16GER2PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B5E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI16GER2S = { {.XVI16GER2S, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00095E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVI16GER2SPP= { {.XVI16GER2SPP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000956, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // ========================================================================= // §18 POWER10 AltiVec additions // ========================================================================= .VSTRIBL = { {.VSTRIBL, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1040180D, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VSTRIBL_DOT = { {.VSTRIBL_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10401C0D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSTRIBR = { {.VSTRIBR, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1041180D, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VSTRIBR_DOT = { {.VSTRIBR_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10411C0D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSTRIHL = { {.VSTRIHL, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1042180D, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VSTRIHL_DOT = { {.VSTRIHL_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10421C0D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSTRIHR = { {.VSTRIHR, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043180D, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VSTRIHR_DOT = { {.VSTRIHR_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10431C0D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VMSUMCUD = { {.VMSUMCUD, {.VR, .VR, .VR, .VR}, {.NONE,.NONE,.NONE,.NONE}, 0x10432157, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCFUGED = { {.VCFUGED, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043254D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VPDEPD = { {.VPDEPD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104325CD, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VPEXTD = { {.VPEXTD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043258D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VGNB = { {.VGNB, {.GPR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106224CC, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSLDBI = { {.VSLDBI, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x10432016, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VSRDBI = { {.VSRDBI, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x10432216, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .VCLZDM = { {.VCLZDM, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432784, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCTZDM = { {.VCTZDM, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104327C4, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCLRLB = { {.VCLRLB, {.VR, .VR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043218D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCLRRB = { {.VCLRRB, {.VR, .VR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104321CD, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXPANDBM = { {.VEXPANDBM, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10401E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXPANDHM = { {.VEXPANDHM, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10411E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXPANDWM = { {.VEXPANDWM, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10421E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXPANDDM = { {.VEXPANDDM, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10431E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXPANDQM = { {.VEXPANDQM, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10441E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTRACTBM = { {.VEXTRACTBM, {.GPR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10682642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTRACTHM = { {.VEXTRACTHM, {.GPR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10692642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTRACTWM = { {.VEXTRACTWM, {.GPR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106A2642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTRACTDM = { {.VEXTRACTDM, {.GPR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106B2642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTRACTQM = { {.VEXTRACTQM, {.GPR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106C2642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCNTMBB = { {.VCNTMBB, {.GPR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10781642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCNTMBH = { {.VCNTMBH, {.GPR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x107A1642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCNTMBW = { {.VCNTMBW, {.GPR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x107C1642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VCNTMBD = { {.VCNTMBD, {.GPR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x107E1642, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .MTVSRBM = { {.MTVSRBM, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10101E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .MTVSRHM = { {.MTVSRHM, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10111E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .MTVSRWM = { {.MTVSRWM, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10121E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .MTVSRDM = { {.MTVSRDM, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10131E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .MTVSRQM = { {.MTVSRQM, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10141E42, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // ========================================================================= // §19 POWER10 paste / copy // ========================================================================= .COPY = { {.COPY, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C23260C, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .PASTE_DOT = { {.PASTE_DOT, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C20070D, 0xFFFFFFFF, .POWER10, .PPC32, {sets_cr0=true}} }, // ========================================================================= // §20 Hypervisor-priv cache-inhibited X-form load/store (POWER8) // ========================================================================= .LBZCIX = { {.LBZCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642EAA, 0xFFFFFFFE, .HV, .PPC32, {}} }, .LHZCIX = { {.LHZCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642E6A, 0xFFFFFFFE, .HV, .PPC32, {}} }, .LWZCIX = { {.LWZCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642E2A, 0xFFFFFFFE, .HV, .PPC32, {}} }, .LDCIX = { {.LDCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642EEA, 0xFFFFFFFE, .HV, .PPC64, {}} }, .STBCIX = { {.STBCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642FAA, 0xFFFFFFFE, .HV, .PPC32, {}} }, .STHCIX = { {.STHCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642F6A, 0xFFFFFFFE, .HV, .PPC32, {}} }, .STWCIX = { {.STWCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642F2A, 0xFFFFFFFE, .HV, .PPC32, {}} }, .STDCIX = { {.STDCIX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642FEA, 0xFFFFFFFE, .HV, .PPC64, {}} }, // ========================================================================= // §21 HTM (POWER8 Hardware Transactional Memory) // ========================================================================= .TBEGIN_DOT = { {.TBEGIN_DOT, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00051D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TEND_DOT = { {.TEND_DOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00055D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TABORT_DOT = { {.TABORT_DOT, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03071D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TABORTWC_DOT = { {.TABORTWC_DOT, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03261D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TABORTWCI_DOT = { {.TABORTWCI_DOT, {.IMM, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03269D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TABORTDC_DOT = { {.TABORTDC_DOT, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03265D, 0xFFFFFFFF, .HTM, .PPC64, {sets_cr0=true}} }, .TABORTDCI_DOT = { {.TABORTDCI_DOT, {.IMM, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0326DD, 0xFFFFFFFF, .HTM, .PPC64, {sets_cr0=true}} }, .TRECLAIM_DOT = { {.TRECLAIM_DOT, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03075D, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TRECHKPT_DOT = { {.TRECHKPT_DOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0007DD, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TSUSPEND_DOT = { {.TSUSPEND_DOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0005DD, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TRESUME_DOT = { {.TRESUME_DOT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2005DD, 0xFFFFFFFF, .HTM, .PPC32, {sets_cr0=true}} }, .TCHECK = { {.TCHECK, {.CR_FIELD, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00059C, 0xFFFFFFFF, .HTM, .PPC32, {}} }, // ========================================================================= // §22 BCD conversion / debug return / sync / isel / cache hints // ========================================================================= .ADDG6S = { {.ADDG6S, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642894, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .CBCDTD = { {.CBCDTD, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C830274, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .CDTBCD = { {.CDTBCD, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C830234, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .RFEBB = { {.RFEBB, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C000124, 0xFFFFFFFF, .POWER8, .PPC32, {}} }, .RFDI = { {.RFDI, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C00004E, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, .MSGSYNC = { {.MSGSYNC, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0006EC, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .ISEL = { {.ISEL, {.GPR, .GPR_OR_ZERO, .GPR, .CR_BIT}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64299E, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .DCBTT = { {.DCBTT, {.MEM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E03222C, 0xFFFFFFFF, .POWER8, .PPC32, {}} }, .DCBTSTT = { {.DCBTSTT, {.MEM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E0321EC, 0xFFFFFFFF, .POWER8, .PPC32, {}} }, // ========================================================================= // §23 POWER10 vector insert/extract with right/left-justification // ========================================================================= .VEXTUBLX = { {.VEXTUBLX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043260D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTUHLX = { {.VEXTUHLX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043264D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTUWLX = { {.VEXTUWLX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043268D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTUBRX = { {.VEXTUBRX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043270D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTUHRX = { {.VEXTUHRX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043274D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTUWRX = { {.VEXTUWRX, {.GPR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043278D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSBVLX = { {.VINSBVLX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043200F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSHVLX = { {.VINSHVLX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043204F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSWVLX = { {.VINSWVLX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043208F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSBVRX = { {.VINSBVRX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043210F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSHVRX = { {.VINSHVRX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043214F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSWVRX = { {.VINSWVRX, {.VR, .GPR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043218F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSBLX = { {.VINSBLX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043220F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSHLX = { {.VINSHLX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043224F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSWLX = { {.VINSWLX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043228F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSDLX = { {.VINSDLX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104322CF, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSBRX = { {.VINSBRX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043230F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSHRX = { {.VINSHRX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043234F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSWRX = { {.VINSWRX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1043238F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSDRX = { {.VINSDRX, {.VR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104323CF, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSW = { {.VINSW, {.VR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104018CF, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VINSD = { {.VINSD, {.VR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x104019CF, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUBVLX = { {.VEXTDUBVLX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x10432018, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUHVLX = { {.VEXTDUHVLX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201A, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUWVLX = { {.VEXTDUWVLX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201C, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDDVLX = { {.VEXTDDVLX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201E, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUBVRX = { {.VEXTDUBVRX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x10432019, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUHVRX = { {.VEXTDUHVRX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201B, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDUWVRX = { {.VEXTDUWVRX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201D, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VEXTDDVRX = { {.VEXTDDVRX, {.VR, .VR, .VR, .GPR}, {.NONE,.NONE,.NONE,.NONE}, 0x1043201F, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // POWER10 VSX byte/half/word/doubleword right-justified loads/stores .LXVRBX = { {.LXVRBX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03201A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVRHX = { {.LXVRHX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03205A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVRWX = { {.LXVRWX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03209A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVRDX = { {.LXVRDX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0320DA, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRBX = { {.STXVRBX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03211A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRHX = { {.STXVRHX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03215A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRWX = { {.STXVRWX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03219A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRDX = { {.STXVRDX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0321DA, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVKQ = { {.LXVKQ, {.VSR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF03F02D0, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XSMAXCQP= { {.XSMAXCQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221D48, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .XSMINCQP= { {.XSMINCQP, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC221DC8, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, // POWER10 vector quad rotate / shift / divide / modulo / multiply .VRLQ = { {.VRLQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432005, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VRLQMI = { {.VRLQMI, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432045, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VRLQNM = { {.VRLQNM, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432145, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSLQ = { {.VSLQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432105, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSRQ = { {.VSRQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432205, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VSRAQ = { {.VSRAQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432305, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .VMULESD = { {.VMULESD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100003C8, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULEUD = { {.VMULEUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100002C8, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULOSD = { {.VMULOSD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100001C8, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULOUD = { {.VMULOUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100000C8, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULLD = { {.VMULLD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100001C9, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULHSW = { {.VMULHSW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10000389, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULHSD = { {.VMULHSD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100003C9, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULHUW = { {.VMULHUW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10000289, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMULHUD = { {.VMULHUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100002C9, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVSW = { {.VDIVSW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000018B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVUW = { {.VDIVUW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000008B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVSD = { {.VDIVSD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100001CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVUD = { {.VDIVUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100000CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVSQ = { {.VDIVSQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000010B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVUQ = { {.VDIVUQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000000B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVESW = { {.VDIVESW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000038B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVEUW = { {.VDIVEUW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000028B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVESD = { {.VDIVESD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100003CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVEUD = { {.VDIVEUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100002CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVESQ = { {.VDIVESQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000030B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VDIVEUQ = { {.VDIVEUQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000020B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODSW = { {.VMODSW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000078B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODUW = { {.VMODUW, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000068B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODSD = { {.VMODSD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100007CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODUD = { {.VMODUD, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x100006CB, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODSQ = { {.VMODSQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000070B, 0xFC0007FF, .POWER10, .PPC32, {}} }, .VMODUQ = { {.VMODUQ, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1000060B, 0xFC0007FF, .POWER10, .PPC32, {}} }, // POWER9 misc and POWER10 misc .SETB = { {.SETB, {.GPR, .CR_FIELD, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4C0100, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .MCRXRX = { {.MCRXRX, {.CR_FIELD, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C000480, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .XVCVBF16SPN = { {.XVCVBF16SPN, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF030176C, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XVCVSPBF16 = { {.XVCVSPBF16, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF031176C, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXGENPCVBM = { {.XXGENPCVBM, {.VSR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0201728, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXGENPCVHM = { {.XXGENPCVHM, {.VSR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF020172A, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXGENPCVWM = { {.XXGENPCVWM, {.VSR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF0201768, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .XXGENPCVDM = { {.XXGENPCVDM, {.VSR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF020176A, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // POWER10 prefixed 8RR-form .XXBLENDVB = { {.XXBLENDVB, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x84221900, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .XXBLENDVH = { {.XXBLENDVH, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x84221910, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .XXBLENDVW = { {.XXBLENDVW, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x84221920, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .XXBLENDVD = { {.XXBLENDVD, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x84221930, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .XXPERMX = { {.XXPERMX, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x88221900, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .XXEVAL = { {.XXEVAL, {.VSR, .VSR, .VSR, .VSR}, {.NONE,.NONE,.NONE,.NONE}, 0x88221910, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, // ========================================================================= // §24 POWER10 MMA prefixed variants (full pp/pn/np/nn family + s/spp) // ========================================================================= .PMXVF16GER2 = { {.PMXVF16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00089E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF16GER2PP = { {.PMXVF16GER2PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000896, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF16GER2PN = { {.PMXVF16GER2PN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000C96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF16GER2NP = { {.PMXVF16GER2NP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000A96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF16GER2NN = { {.PMXVF16GER2NN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000E96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF32GERPP = { {.PMXVF32GERPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0008D6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF32GERPN = { {.PMXVF32GERPN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000CD6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF32GERNP = { {.PMXVF32GERNP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000AD6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF32GERNN = { {.PMXVF32GERNN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000ED6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF64GERPP = { {.PMXVF64GERPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC0009D6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF64GERPN = { {.PMXVF64GERPN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000DD6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF64GERNP = { {.PMXVF64GERNP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000BD6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVF64GERNN = { {.PMXVF64GERNN, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000FD6, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVBF16GER2 = { {.PMXVBF16GER2, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00099E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVBF16GER2PP= { {.PMXVBF16GER2PP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000996, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVBF16GER2PN= { {.PMXVBF16GER2PN,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000D96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVBF16GER2NP= { {.PMXVBF16GER2NP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVBF16GER2NN= { {.PMXVBF16GER2NN,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000F96, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI4GER8PP = { {.PMXVI4GER8PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000916, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI8GER4PP = { {.PMXVI8GER4PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000816, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI8GER4SPP = { {.PMXVI8GER4SPP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B1E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI16GER2PP = { {.PMXVI16GER2PP, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000B5E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI16GER2S = { {.PMXVI16GER2S, {.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC00095E, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, .PMXVI16GER2SPP= { {.PMXVI16GER2SPP,{.IMM, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xEC000956, 0xFFFFFFFF, .POWER10, .PPC32, {prefixed=true}} }, // ========================================================================= // §25 POWER10 paired VSX (32-byte) and BookE/Embedded extensions // ========================================================================= // Paired VSX (POWER10): // lxvp primary=6 DQ-form → 0x18000000 // stxvp primary=6 DQ-form (XO=1) → 0x18000001 // lxvpx XO=333 → 0x7C00029A // stxvpx XO=461 → 0x7C00039A .LXVP = { {.LXVP, {.VSR, .MEM, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18C30000, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .STXVP = { {.STXVP, {.VSR, .MEM, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18C30001, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .LXVPX = { {.LXVPX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC42A9A, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .STXVPX = { {.STXVPX, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC42B9A, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, // BookE / embedded effective-vs-physical cache management .DCBI = { {.DCBI, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0323AC, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .ICBIEP = { {.ICBIEP, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0327BE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .DCBTEP = { {.DCBTEP, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64027E, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .DCBTSTEP = { {.DCBTSTEP, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6401FE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .LBEPX = { {.LBEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6428BE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .LHEPX = { {.LHEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642A3E, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .LWEPX = { {.LWEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64283E, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .STBEPX = { {.STBEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6429BE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .STHEPX = { {.STHEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642B3E, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .STWEPX = { {.STWEPX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64293E, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .LFDEPX = { {.LFDEPX, {.FPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2324BE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .STFDEPX = { {.STFDEPX, {.FPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2325BE, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .TLBSX = { {.TLBSX, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C032724, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .DCCCI = { {.DCCCI, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00038C, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, .ICCCI = { {.ICCCI, {.GPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00078C, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, .WRTEE = { {.WRTEE, {.GPR, .NONE, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C600106, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .WRTEEI = { {.WRTEEI, {.IMM, .NONE, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C008146, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, // ========================================================================= // §26 Legacy / BookE / 32-bit / AltiVec data-stream / POWER9-10 misc // ========================================================================= .TLBRE = { {.TLBRE, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C000764, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, .TLBWE = { {.TLBWE, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0007A4, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, .TLBIVAX = { {.TLBIVAX, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C032624, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .TLBILX = { {.TLBILX, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C032024, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .TLBLD = { {.TLBLD, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C001FA4, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .TLBLI = { {.TLBLI, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C001FE4, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .MFPMR = { {.MFPMR, {.GPR, .SPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64029C, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, .MTPMR = { {.MTPMR, {.SPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64039C, 0xFFFFFFFE, .SUPV, .PPC32, {}} }, // 32-bit segment register move .MFSR = { {.MFSR, {.GPR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6404A6, 0xFC10FFFE, .SUPV, .PPC32, {}} }, .MTSR = { {.MTSR, {.IMM, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6401A4, 0xFC10FFFE, .SUPV, .PPC32, {}} }, .MFSRIN = { {.MFSRIN, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C602526, 0xFC00FFFE, .SUPV, .PPC32, {}} }, .MTSRIN = { {.MTSRIN, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C8019E4, 0xFC00FFFE, .SUPV, .PPC32, {}} }, // AltiVec data stream touch / cancel .DST = { {.DST, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0322AC, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, .DSTT = { {.DSTT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E0322AC, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, .DSTST = { {.DSTST, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C0322EC, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, .DSTSTT = { {.DSTSTT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E0322EC, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, .DSS = { {.DSS, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00066C, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, .DSSALL = { {.DSSALL, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E00066C, 0xFFFFFFFE, .ALTIVEC, .PPC32, {}} }, // AltiVec sum-across .VSUMSWS = { {.VSUMSWS, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642F88, 0xFFFFFFFF, .ALTIVEC, .PPC32, {}} }, .VSUM2SWS = { {.VSUM2SWS, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E88, 0xFFFFFFFF, .ALTIVEC, .PPC32, {}} }, .VSUM4SBS = { {.VSUM4SBS, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642F08, 0xFFFFFFFF, .ALTIVEC, .PPC32, {}} }, .VSUM4SHS = { {.VSUM4SHS, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E48, 0xFFFFFFFF, .ALTIVEC, .PPC32, {}} }, .VSUM4UBS = { {.VSUM4UBS, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E08, 0xFFFFFFFF, .ALTIVEC, .PPC32, {}} }, // POWER9 FPSCR moves .MFFSCE = { {.MFFSCE, {.FPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC21048E, 0xFFFFFFFF, .FP, .PPC32, {}} }, .MFFSCDRN = { {.MFFSCDRN, {.FPR, .FPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC34048E, 0xFFFFFFFF, .FP, .PPC32, {}} }, .MFFSCDRNI = { {.MFFSCDRNI, {.FPR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC35048E, 0xFFFFFFFF, .FP, .PPC32, {}} }, .MFFSCRN = { {.MFFSCRN, {.FPR, .FPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC36148E, 0xFFFFFFFF, .FP, .PPC32, {}} }, .MFFSCRNI = { {.MFFSCRNI, {.FPR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC37148E, 0xFFFFFFFF, .FP, .PPC32, {}} }, .MFFSL = { {.MFFSL, {.FPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xFC38048E, 0xFFFFFFFF, .FP, .PPC32, {}} }, // POWER9/10 misc system .STOP = { {.STOP, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C0002E4, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .CPABORT = { {.CPABORT, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C00068C, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .ATTN = { {.ATTN, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x00000200, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, // ========================================================================= // §27 GPR ↔ FPR/VSR moves (POWER8/9) // ========================================================================= .MTFPRD = { {.MTFPRD, {.FPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C230166, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .MFFPRD = { {.MFFPRD, {.GPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C230066, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .MTFPRWA = { {.MTFPRWA, {.FPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2301A6, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .MTFPRWZ = { {.MTFPRWZ, {.FPR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2301E6, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .MFFPRWZ = { {.MFFPRWZ, {.GPR, .FPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C2300E6, 0xFFFFFFFE, .POWER8, .PPC32, {}} }, .MFVSRLD = { {.MFVSRLD, {.GPR, .VSR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C230267, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .MTVSRDD = { {.MTVSRDD, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C232366, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, .MTVSRWS = { {.MTVSRWS, {.VSR, .GPR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C230326, 0xFFFFFFFF, .POWER9, .PPC32, {}} }, // POWER9 EXTSWSLI .EXTSWSLI = { {.EXTSWSLI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C8306F4, 0xFFFFFFFE, .POWER9, .PPC64, {}} }, .EXTSWSLI_DOT = { {.EXTSWSLI_DOT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C8306F5, 0xFFFFFFFF, .POWER9, .PPC64, {sets_cr0=true}} }, // ISEL with canonical condition aliases (LT / GT / EQ) .ISELLT = { {.ISELLT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64281E, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .ISELGT = { {.ISELGT, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64285E, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .ISELEQ = { {.ISELEQ, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64289E, 0xFFFFFFFF, .BASE, .PPC32, {}} }, // ========================================================================= // §28 Trap aliases — TO-baked instances // ========================================================================= .TWEQ = { {.TWEQ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832008, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .TWNE = { {.TWNE, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7F032008, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .TWGT = { {.TWGT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7D032008, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .TWLT = { {.TWLT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E032008, 0xFFFFFFFE, .BASE, .PPC32, {}} }, .TWUI = { {.TWUI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0FE30064, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .TWNEI = { {.TWNEI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0F030064, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .TWEQI = { {.TWEQI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0C830064, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .TWGTI = { {.TWGTI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0D030064, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .TWLTI = { {.TWLTI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0E030064, 0xFFFFFFFF, .BASE, .PPC32, {}} }, .TDEQ = { {.TDEQ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832088, 0xFFFFFFFE, .P64, .PPC64, {}} }, .TDNE = { {.TDNE, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7F032088, 0xFFFFFFFE, .P64, .PPC64, {}} }, .TDGT = { {.TDGT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7D032088, 0xFFFFFFFE, .P64, .PPC64, {}} }, .TDLT = { {.TDLT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7E032088, 0xFFFFFFFE, .P64, .PPC64, {}} }, .TDUI = { {.TDUI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0BE30064, 0xFFFFFFFF, .P64, .PPC64, {}} }, .TDNEI = { {.TDNEI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0B030064, 0xFFFFFFFF, .P64, .PPC64, {}} }, .TDEQI = { {.TDEQI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x08830064, 0xFFFFFFFF, .P64, .PPC64, {}} }, .TDGTI = { {.TDGTI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x09030064, 0xFFFFFFFF, .P64, .PPC64, {}} }, .TDLTI = { {.TDLTI, {.GPR, .SIMM,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x0A030064, 0xFFFFFFFF, .P64, .PPC64, {}} }, // ========================================================================= // §29 BCD vector arithmetic (POWER8/9) // ========================================================================= .BCDADD_DOT = { {.BCDADD_DOT, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x10432401, 0xFFFFFFFF, .POWER8, .PPC32, {sets_cr0=true}} }, .BCDSUB_DOT = { {.BCDSUB_DOT, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x10432441, 0xFFFFFFFF, .POWER8, .PPC32, {sets_cr0=true}} }, .BCDS_DOT = { {.BCDS_DOT, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x104324C1, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDUS_DOT = { {.BCDUS_DOT, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432481, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDSR_DOT = { {.BCDSR_DOT, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x104325C1, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCFN_DOT = { {.BCDCFN_DOT, {.VR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10471D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCTN_DOT = { {.BCDCTN_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10451D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCFZ_DOT = { {.BCDCFZ_DOT, {.VR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10461D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCTZ_DOT = { {.BCDCTZ_DOT, {.VR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10441D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCPSGN_DOT = { {.BCDCPSGN_DOT, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432341, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDTRUNC_DOT = { {.BCDTRUNC_DOT, {.VR, .VR, .VR, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x10432501, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDUTRUNC_DOT = { {.BCDUTRUNC_DOT, {.VR, .VR, .VR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10432541, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCFSQ_DOT = { {.BCDCFSQ_DOT, {.VR, .VR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10421D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, .BCDCTSQ_DOT = { {.BCDCTSQ_DOT, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10401D81, 0xFFFFFFFF, .POWER9, .PPC32, {sets_cr0=true}} }, // ========================================================================= // §30 SCV (POWER9 System Call Vectored) + counter+CR+L/LR aliases // ========================================================================= .SCV = { {.SCV, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x44000021, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .BDNZTL = { {.BDNZTL, {.CR_BIT, .REL, .NONE,.NONE}, {.BI_FIELD, .BRANCH_BD, .NONE,.NONE}, 0x41000001, 0xFFE00003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZTL = { {.BDZTL, {.CR_BIT, .REL, .NONE,.NONE}, {.BI_FIELD, .BRANCH_BD, .NONE,.NONE}, 0x41400001, 0xFFE00003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDNZFL = { {.BDNZFL, {.CR_BIT, .REL, .NONE,.NONE}, {.BI_FIELD, .BRANCH_BD, .NONE,.NONE}, 0x40000001, 0xFFE00003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZFL = { {.BDZFL, {.CR_BIT, .REL, .NONE,.NONE}, {.BI_FIELD, .BRANCH_BD, .NONE,.NONE}, 0x40400001, 0xFFE00003, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDNZTLR = { {.BDNZTLR, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4D000020, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDZTLR = { {.BDZTLR, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4D400020, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDNZFLR = { {.BDNZFLR, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4C000020, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDZFLR = { {.BDZFLR, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4C400020, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true}} }, .BDNZTLRL = { {.BDNZTLRL, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4D000021, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZTLRL = { {.BDZTLRL, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4D400021, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDNZFLRL = { {.BDNZFLRL, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4C000021, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, .BDZFLRL = { {.BDZFLRL, {.CR_BIT, .NONE,.NONE,.NONE}, {.BI_FIELD, .NONE,.NONE,.NONE}, 0x4C400021, 0xFFE0FFFF, .BASE, .PPC32, {cond_branch=true, writes_lr=true}} }, // ========================================================================= // §31 SPR-specific move aliases (per-SPR-number) // ========================================================================= .MTCR = { {.MTCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6FF120, 0xFC1FFFFF, .BASE, .PPC32, {}} }, .MFDSCR = { {.MFDSCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7102A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MTDSCR = { {.MTDSCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7103A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MFCFAR = { {.MFCFAR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7C02A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MTCFAR = { {.MTCFAR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7C03A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MFPPR = { {.MFPPR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C60E2A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MTPPR = { {.MTPPR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C60E3A6, 0xFC1FFFFF, .POWER8, .PPC32, {}} }, .MFDEC = { {.MFDEC, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7602A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTDEC = { {.MTDEC, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7603A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFSRR0 = { {.MFSRR0, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7A02A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTSRR0 = { {.MTSRR0, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7A03A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFSRR1 = { {.MFSRR1, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7B02A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTSRR1 = { {.MTSRR1, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7B03A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFDAR = { {.MFDAR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7302A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTDAR = { {.MTDAR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7303A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFDSISR = { {.MFDSISR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7202A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTDSISR = { {.MTDSISR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7203A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFASR = { {.MFASR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7842A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTASR = { {.MTASR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7843A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFAMR = { {.MFAMR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7D02A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTAMR = { {.MTAMR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7D03A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFTCR = { {.MFTCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7AF2A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTTCR = { {.MTTCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7AF3A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFESR = { {.MFESR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C74F2A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTESR = { {.MTESR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C74F3A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MFDCCR = { {.MFDCCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7AFAA6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTDCCR = { {.MTDCCR, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7AFBA6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTBR0 = { {.MTBR0, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C602386, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTBR1 = { {.MTBR1, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C612386, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTTBL = { {.MTTBL, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7C43A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, .MTTBU = { {.MTTBU, {.GPR, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C7D43A6, 0xFC1FFFFF, .SUPV, .PPC32, {}} }, // ========================================================================= // §32 POWER9 atomic memops + POWER10 paired-length VSX + misc // ========================================================================= .STWAT = { {.STWAT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C64058C, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .STDAT = { {.STDAT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6405CC, 0xFFFFFFFE, .POWER9, .PPC64, {}} }, // LWAT/LDAT — bit pattern overlaps icblq./icblc; LLVM 22 doesn't accept // the syntax. We bake LLVM-derived bytes that decode without collision. .LWAT = { {.LWAT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6400CC, 0xFFFFFFFE, .POWER9, .PPC32, {}} }, .LDAT = { {.LDAT, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6404CC, 0xFFFFFFFE, .POWER9, .PPC64, {}} }, .VEXTSD2Q = { {.VEXTSD2Q, {.VR, .VR, .NONE, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x105B1E02, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .LXVPRL = { {.LXVPRL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3249A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVPRLL = { {.LXVPRLL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC324DA, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVPRL = { {.STXVPRL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3259A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVPRLL = { {.STXVPRLL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC325DA, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVRL = { {.LXVRL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3241A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .LXVRLL = { {.LXVRLL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3245A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRL = { {.STXVRL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3251A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .STXVRLL = { {.STXVRLL, {.VSR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7CC3255A, 0xFFFFFFFE, .POWER10, .PPC32, {}} }, .RFMCI = { {.RFMCI, {.NONE,.NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x4C00004C, 0xFFFFFFFF, .SUPV, .PPC32, {}} }, // ========================================================================= // §33 SPE / EFS / EFD (Freescale e500/e500v2 Signal Processing Engine) // ========================================================================= // All entries are bake-everything (mask=0xFFFFFFFF). Canonical operand // values used: rT=3, rA=4, rB=5 (rD=3,rA=4 for two-op forms; cmp/test use // crD=1 → BF=1). Bytes derived directly from llvm-mc -mattr=+spe. // ---- SPE integer / logical / shift / compare / misc (3-op + 2-op) ---- .EVADDW = { {.EVADDW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A00, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDIW = { {.EVADDIW, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10652202, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFW = { {.EVSUBFW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBIFW = { {.EVSUBIFW, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A06, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABS = { {.EVABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEXTSH = { {.EVEXTSH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064020B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEXTSB = { {.EVEXTSB, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064020A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCNTLZW = { {.EVCNTLZW, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064020D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCNTLSW = { {.EVCNTLSW, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064020E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLW = { {.EVRLW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A28, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLWI = { {.EVRLWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLW = { {.EVSLW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A24, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLWI = { {.EVSLWI, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A26, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATI = { {.EVSPLATI, {.GPR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFI = { {.EVSPLATFI, {.GPR, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064022B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRWU = { {.EVSRWU, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A20, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRWS = { {.EVSRWS, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A21, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRWIU = { {.EVSRWIU, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A22, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRWIS = { {.EVSRWIS, {.GPR, .GPR, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A23, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAND = { {.EVAND, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A11, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVOR = { {.EVOR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A17, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVXOR = { {.EVXOR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A16, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNAND = { {.EVNAND, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A1E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNOR = { {.EVNOR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVANDC = { {.EVANDC, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A12, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVORC = { {.EVORC, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A1B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEQV = { {.EVEQV, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A19, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPGTS = { {.EVCMPGTS, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A31, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPGTU = { {.EVCMPGTU, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A30, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPLTS = { {.EVCMPLTS, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A33, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPLTU = { {.EVCMPLTU, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A32, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPEQ = { {.EVCMPEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A34, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSEL = { {.EVSEL, {.GPR, .GPR, .GPR, .CR_FIELD}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A78, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMERGEHI = { {.EVMERGEHI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMERGELO = { {.EVMERGELO, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMERGEHILO = { {.EVMERGEHILO, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMERGELOHI = { {.EVMERGELOHI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVWS = { {.EVDIVWS, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVWU = { {.EVDIVWU, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMRA = { {.EVMRA, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106404C4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- SPE memory (D/X-form) ---- .EVLDD = { {.EVLDD, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640301, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDDX = { {.EVLDDX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B00, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDW = { {.EVLDW, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640303, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDWX = { {.EVLDWX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B02, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDH = { {.EVLDH, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640305, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDHX = { {.EVLDHX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDD = { {.EVSTDD, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640321, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDDX = { {.EVSTDDX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B20, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDW = { {.EVSTDW, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640323, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDWX = { {.EVSTDWX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B22, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDH = { {.EVSTDH, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640325, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDHX = { {.EVSTDHX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B24, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWWSPLAT = { {.EVLWWSPLAT, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640319, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLAT = { {.EVLWHSPLAT, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064031D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHESPLAT = { {.EVLHHESPLAT, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640309, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOSSPLAT = { {.EVLHHOSSPLAT, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064030F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOUSPLAT = { {.EVLHHOUSPLAT, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064030D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHE = { {.EVLWHE, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640311, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOU = { {.EVLWHOU, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640315, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOS = { {.EVLWHOS, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640317, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHEX = { {.EVLWHEX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B10, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWE = { {.EVSTWWE, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640339, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWO = { {.EVSTWWO, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064033D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHE = { {.EVSTWHE, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640331, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHO = { {.EVSTWHO, {.GPR, .MEM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640335, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHEX = { {.EVSTWHEX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B30, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- SPE-FP (evfs*) ---- .EVFSADD = { {.EVFSADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A80, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUB = { {.EVFSSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A81, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSABS = { {.EVFSABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640284, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSNABS = { {.EVFSNABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640285, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSNEG = { {.EVFSNEG, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640286, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMUL = { {.EVFSMUL, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A88, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSDIV = { {.EVFSDIV, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A89, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCMPGT = { {.EVFSCMPGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A8C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCMPLT = { {.EVFSCMPLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A8D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCMPEQ = { {.EVFSCMPEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A8E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSTSTGT = { {.EVFSTSTGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A9C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSTSTLT = { {.EVFSTSTLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A9D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSTSTEQ = { {.EVFSTSTEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842A9E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCFUI = { {.EVFSCFUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1060228A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCFSI = { {.EVFSCFSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602291, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCFUF = { {.EVFSCFUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602292, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCFSF = { {.EVFSCFSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602293, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTUI = { {.EVFSCTUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602294, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTSI = { {.EVFSCTSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602295, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTUF = { {.EVFSCTUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602296, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTSF = { {.EVFSCTSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602297, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTUIZ = { {.EVFSCTUIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10602298, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTSIZ = { {.EVFSCTSIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1060229A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- EFS (single-precision scalar SPE FP) ---- .EFSADD = { {.EFSADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSSUB = { {.EFSSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSABS = { {.EFSABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402C4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSNABS = { {.EFSNABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSNEG = { {.EFSNEG, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402C6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSMUL = { {.EFSMUL, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSDIV = { {.EFSDIV, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCMPGT = { {.EFSCMPGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ACC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCMPLT = { {.EFSCMPLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ACD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCMPEQ = { {.EFSCMPEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ACE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSTSTGT = { {.EFSTSTGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ADC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSTSTLT = { {.EFSTSTLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ADD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSTSTEQ = { {.EFSTSTEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842ADE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFUI = { {.EFSCFUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFSI = { {.EFSCFSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFUF = { {.EFSCFUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFSF = { {.EFSCFSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTUI = { {.EFSCTUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTSI = { {.EFSCTSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTUF = { {.EFSCTUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTSF = { {.EFSCTSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTUIZ = { {.EFSCTUIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022D8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTSIZ = { {.EFSCTSIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022DA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFD = { {.EFSCFD, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022CF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- EFD (double-precision scalar SPE FP) ---- .EFDADD = { {.EFDADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDSUB = { {.EFDSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDABS = { {.EFDABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402E4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDNABS = { {.EFDNABS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402E5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDNEG = { {.EFDNEG, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402E6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDMUL = { {.EFDMUL, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDDIV = { {.EFDDIV, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCMPGT = { {.EFDCMPGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AEC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCMPLT = { {.EFDCMPLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AED, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCMPEQ = { {.EFDCMPEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AEE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDTSTGT = { {.EFDTSTGT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AFC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDTSTLT = { {.EFDTSTLT, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AFD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDTSTEQ = { {.EFDTSTEQ, {.CR_FIELD, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x11842AFE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFUI = { {.EFDCFUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFSI = { {.EFDCFSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFUF = { {.EFDCFUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFSF = { {.EFDCFSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTUI = { {.EFDCTUI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTSI = { {.EFDCTSI, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTUF = { {.EFDCTUF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTSF = { {.EFDCTSF, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTUIZ = { {.EFDCTUIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022F8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTSIZ = { {.EFDCTSIZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022FA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFS = { {.EFDCFS, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022EF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFSID = { {.EFDCFSID, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022E3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFUID = { {.EFDCFUID, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022E2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTSIDZ = { {.EFDCTSIDZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022EB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTUIDZ = { {.EFDCTUIDZ, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106022EA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- SPE multiply / multiply-accumulate (evm*) - half-word odd (evmho*) ---- .EVMHOSSF = { {.EVMHOSSF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C07, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSSFA = { {.EVMHOSSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C27, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSSFAAW = { {.EVMHOSSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D07, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSSFANW = { {.EVMHOSSFANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D87, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSSIAAW = { {.EVMHOSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D05, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSSIANW = { {.EVMHOSSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D85, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMF = { {.EVMHOSMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMFA = { {.EVMHOSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMFAAW = { {.EVMHOSMFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMFANW = { {.EVMHOSMFANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMI = { {.EVMHOSMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMIA = { {.EVMHOSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMIAAW = { {.EVMHOSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSMIANW = { {.EVMHOSMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUMI = { {.EVMHOUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUMIA = { {.EVMHOUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUMIAAW = { {.EVMHOUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUMIANW = { {.EVMHOUMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUSIAAW = { {.EVMHOUSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOUSIANW = { {.EVMHOUSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D84, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGSMFAA = { {.EVMHOGSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D2F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGSMFAN = { {.EVMHOGSMFAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DAF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGSMIAA = { {.EVMHOGSMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D2D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGSMIAN = { {.EVMHOGSMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DAD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGUMIAA = { {.EVMHOGUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D2C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOGUMIAN = { {.EVMHOGUMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DAC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- evmhe* (half-word even) ---- .EVMHESMF = { {.EVMHESMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMFA = { {.EVMHESMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMFAAW = { {.EVMHESMFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMFANW = { {.EVMHESMFANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMI = { {.EVMHESMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMIA = { {.EVMHESMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMIAAW = { {.EVMHESMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESMIANW = { {.EVMHESMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D89, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSF = { {.EVMHESSF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C03, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSFA = { {.EVMHESSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C23, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSFAAW = { {.EVMHESSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D03, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSFANW = { {.EVMHESSFANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D83, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSIAAW = { {.EVMHESSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D01, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESSIANW = { {.EVMHESSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D81, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUMI = { {.EVMHEUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C08, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUMIA = { {.EVMHEUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C28, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUMIAAW = { {.EVMHEUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D08, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUMIANW = { {.EVMHEUMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D88, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUSIAAW = { {.EVMHEUSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D00, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEUSIANW = { {.EVMHEUSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D80, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGSMFAA = { {.EVMHEGSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGSMFAN = { {.EVMHEGSMFAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DAB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGSMIAA = { {.EVMHEGSMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGSMIAN = { {.EVMHEGSMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DA9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGUMIAA = { {.EVMHEGUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D28, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHEGUMIAN = { {.EVMHEGUMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DA8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- evmw* (word) ---- .EVMWHSSF = { {.EVMWHSSF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C47, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFA = { {.EVMWHSSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C67, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSIAAW = { {.EVMWLSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D41, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSIANW = { {.EVMWLSSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMF = { {.EVMWHSMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C4F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMFA = { {.EVMWHSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C6F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMI = { {.EVMWHSMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C4D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMIA = { {.EVMWHSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C6D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUMI = { {.EVMWHUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C4C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUMIA = { {.EVMWHUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C6C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMIAAW = { {.EVMWLSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D49, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMIANW = { {.EVMWLSMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMI = { {.EVMWLUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C48, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMIA = { {.EVMWLUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C68, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMIAAW = { {.EVMWLUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D48, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMIANW = { {.EVMWLUMIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUSIAAW = { {.EVMWLUSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D40, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUSIANW = { {.EVMWLUSIANW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMF = { {.EVMWSMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C5B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMFA = { {.EVMWSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C7B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMFAA = { {.EVMWSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D5B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMFAN = { {.EVMWSMFAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DDB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMI = { {.EVMWSMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C59, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMIA = { {.EVMWSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C79, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMIAA = { {.EVMWSMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D59, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSMIAN = { {.EVMWSMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSF = { {.EVMWSSF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C53, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSFA = { {.EVMWSSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C73, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSFAA = { {.EVMWSSFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D53, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSFAN = { {.EVMWSSFAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUMI = { {.EVMWUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C58, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUMIA = { {.EVMWUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C78, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUMIAA = { {.EVMWUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D58, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUMIAN = { {.EVMWUMIAN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .BRINC = { {.BRINC, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A0F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ---- SPE X-form indexed memory (additional, all bake-everything) ---- .EVLWHSPLATX = { {.EVLWHSPLATX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWWSPLATX = { {.EVLWWSPLATX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHESPLATX = { {.EVLHHESPLATX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B08, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOSSPLATX = { {.EVLHHOSSPLATX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B0E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOUSPLATX = { {.EVLHHOUSPLATX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOUX = { {.EVLWHOUX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B14, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOSX = { {.EVLWHOSX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B16, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWEX = { {.EVSTWWEX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B38, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWOX = { {.EVSTWWOX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B3C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHOX = { {.EVSTWHOX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B34, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ========================================================================= // §34 BookE / embedded - additions found via LLVM probing // ========================================================================= .ICBTLS = { {.ICBTLS, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C642BCC, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, .ICBLC = { {.ICBLC, {.IMM, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6429CC, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, .DCBST = { {.DCBST, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C03206C, 0xFFFFFFFF, .CACHE, .PPC32, {}} }, .MBAR = { {.MBAR, {.IMM, .NONE,.NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C6006AC, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, .MTDCR = { {.MTDCR, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C830386, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, .MFDCR = { {.MFDCR, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C640286, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, .TLBILXVA = { {.TLBILXVA, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C632024, 0xFFFFFFFF, .BOOKE, .PPC32, {}} }, // ========================================================================= // §35 POWER9 VSX additions // ========================================================================= .XSCVSXDSP = { {.XSCVSXDSP, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF06024E0, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XSCVUXDSP = { {.XSCVUXDSP, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF06024A0, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XXBRH = { {.XXBRH, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF067276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XXBRW = { {.XXBRW, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF06F276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XXBRD = { {.XXBRD, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF077276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XXBRQ = { {.XXBRQ, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF07F276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, // ========================================================================= // §36 POWER10 scalar bit-manipulation // ========================================================================= .PDEPD = { {.PDEPD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832938, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, .PEXTD = { {.PEXTD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832978, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, .CNTLZDM = { {.CNTLZDM, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832876, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, .CNTTZDM = { {.CNTTZDM, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C832C76, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, .CFUGED = { {.CFUGED, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C8329B8, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, .BRH = { {.BRH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C8301B6, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .BRW = { {.BRW, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C830136, 0xFFFFFFFF, .POWER10, .PPC32, {}} }, .BRD = { {.BRD, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C830176, 0xFFFFFFFF, .POWER10, .PPC64, {}} }, // ========================================================================= // §37 Extended-divide OE-variants (POWER7+) // ========================================================================= // DIVWEO/UEO/DIVDEO/UEO are duplicates of the canonical DIVWE_O/DIVWEU_O/ // DIVDE_O/DIVDEU_O XO-form entries above; we route them through the same // bits with the canonical (.RT, .RA, .RB) operand encoding so that the // decoder can disambiguate by mnemonic via form_id and assembler can // accept either spelling. .DIVWEO = { {.DIVWEO, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000756, 0xFC0007FE, .POWER8, .PPC32, {has_oe=true}} }, .DIVWEUO = { {.DIVWEUO, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000716, 0xFC0007FE, .POWER8, .PPC32, {has_oe=true}} }, .DIVDEO = { {.DIVDEO, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000752, 0xFC0007FE, .POWER8, .PPC64, {has_oe=true}} }, .DIVDEUO = { {.DIVDEUO, {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000712, 0xFC0007FE, .POWER8, .PPC64, {has_oe=true}} }, // ========================================================================= // §38 POWER10 VSX small additions // ========================================================================= .XVTLSBB = { {.XVTLSBB, {.CR_FIELD, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF182276C, 0xFFFFFFFF, .VSX_P10, .PPC32, {}} }, .XVCVHPSP = { {.XVCVHPSP, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF078276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XVCVSPHP = { {.XVCVSPHP, {.VSR, .VSR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF079276C, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, .XXPERMR = { {.XXPERMR, {.VSR, .VSR, .VSR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0xF06429D0, 0xFFFFFFFF, .VSX_P9, .PPC32, {}} }, // ========================================================================= // §39 SPE/EFS2 FP MADD/MSUB + scalar extensions (from binutils ppc-opc.c) // ========================================================================= // Primary=4, XO at bits 0..10. RT=3, RA=4, RB=5 baked. LLVM 22 doesn't // recognize these — they're handled via expected_unknown in the verifier. .EVFSMADD = { {.EVFSMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A82, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMSUB = { {.EVFSMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A83, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSNMADD = { {.EVFSNMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A8A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSNMSUB = { {.EVFSNMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A8B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSMADD = { {.EFSMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSMSUB = { {.EFSMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSNMADD = { {.EFSNMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ACA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSNMSUB = { {.EFSNMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ACB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDMADD = { {.EFDMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDMSUB = { {.EFDMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AE3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDNMADD = { {.EFDNMADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AEA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDNMSUB = { {.EFDNMSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AEB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // EFS2 sqrt: VX_RB_CONST(4, n, 0) — RB=0 fixed, so RT=3, RA=4, XO at low 11 .EVFSSQRT = { {.EVFSSQRT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640287, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSSQRT = { {.EFSSQRT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402C7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDSQRT = { {.EFDSQRT, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106402E7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // EFS2 half-precision conversions: VX_RA_CONST(4, n, 4) — RA=4 fixed .EVFSCFH = { {.EVFSCFH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A91, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSCTH = { {.EVFSCTH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A95, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCFH = { {.EFSCFH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSCTH = { {.EFSCTH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCFH = { {.EFDCFH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AF1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDCTH = { {.EFDCTH, {.GPR, .GPR, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AF5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // EFS2 vector single max/min/special arithmetic (3-op) .EVFSMAX = { {.EVFSMAX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMIN = { {.EVFSMIN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSADDSUB = { {.EVFSADDSUB, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUBADD = { {.EVFSSUBADD, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUM = { {.EVFSSUM, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSDIFF = { {.EVFSDIFF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUMDIFF = { {.EVFSSUMDIFF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSDIFFSUM = { {.EVFSDIFFSUM, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSADDX = { {.EVFSADDX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUBX = { {.EVFSSUBX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AA9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSADDSUBX = { {.EVFSADDSUBX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AAA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSSUBADDX = { {.EVFSSUBADDX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AAB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMULX = { {.EVFSMULX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AAC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMULE = { {.EVFSMULE, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AAE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVFSMULO = { {.EVFSMULO, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AAF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // EFS2 scalar max/min .EFSMAX = { {.EFSMAX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AB0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFSMIN = { {.EFSMIN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AB1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDMAX = { {.EFDMAX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AB8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EFDMIN = { {.EFDMIN, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AB9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ========================================================================= // §40 Full SPE2 / EFS2 vector family (auto-derived from binutils ppc-opc.c) // ========================================================================= // 838 entries with bake-everything mask. LLVM 22 doesn't recognize these; // all are listed in expected_unknown in verify_against_llvm.odin. .EVSUBW = { {.EVSUBW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBIW = { {.EVSUBIW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A06, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEG = { {.EVNEG , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDW = { {.EVRNDW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMR = { {.EVMR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A17, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNOT = { {.EVNOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADD = { {.EVSADD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSSUB = { {.EVSSUB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSABS = { {.EVSABS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSNABS = { {.EVSNABS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSNEG = { {.EVSNEG , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSMUL = { {.EVSMUL , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSDIV = { {.EVSDIV , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AC9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCMPGT = { {.EVSCMPGT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ACC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSGMPLT = { {.EVSGMPLT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ACD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSGMPEQ = { {.EVSGMPEQ , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ACE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCFUI = { {.EVSCFUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCFSI = { {.EVSCFSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCFUF = { {.EVSCFUF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCFSF = { {.EVSCFSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTUI = { {.EVSCTUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTSI = { {.EVSCTSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTUF = { {.EVSCTUF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTSF = { {.EVSCTSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTUIZ = { {.EVSCTUIZ , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642AD8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSCTSIZ = { {.EVSCTSIZ , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ADA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTSTGT = { {.EVSTSTGT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ADC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTSTLT = { {.EVSTSTLT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ADD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTSTEQ = { {.EVSTSTEQ , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642ADE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSF = { {.EVMWLSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C43, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMF = { {.EVMWLSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C4B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSFA = { {.EVMWLSSFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C63, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMFA = { {.EVMWLSMFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C6B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDUSIAAW = { {.EVADDUSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSSIAAW = { {.EVADDSSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFUSIAAW = { {.EVSUBFUSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFSSIAAW = { {.EVSUBFSSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDUMIAAW = { {.EVADDUMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSMIAAW = { {.EVADDSMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFUMIAAW = { {.EVSUBFUMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFSMIAAW = { {.EVSUBFSMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSFAAW = { {.EVMWLSSFAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D43, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUSIAA = { {.EVMWHUSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D44, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSMAA = { {.EVMWHSSMAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D45, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFAA = { {.EVMWHSSFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D47, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMFAAW = { {.EVMWLSMFAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUMIAA = { {.EVMWHUMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMIAA = { {.EVMWHSMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMFAA = { {.EVMWHSMFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGUMIAA = { {.EVMWHGUMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D64, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSMIAA = { {.EVMWHGSMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D65, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSSFAA = { {.EVMWHGSSFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D67, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSMFAA = { {.EVMWHGSMFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D6F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSFANW = { {.EVMWLSSFANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUSIAN = { {.EVMWHUSIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSIAN = { {.EVMWHSSIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFAN = { {.EVMWHSSFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMFANW = { {.EVMWLSMFANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHUMIAN = { {.EVMWHUMIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMIAN = { {.EVMWHSMIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSMFAN = { {.EVMWHSMFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGUMIAN = { {.EVMWHGUMIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DE4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSMIAN = { {.EVMWHGSMIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DE5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSSFAN = { {.EVMWHGSSFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DE7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHGSMFAN = { {.EVMWHGSMFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DEF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSI = { {.EVDOTPWCSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642880, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSMI = { {.EVDOTPWCSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642881, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFR = { {.EVDOTPWCSSFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642882, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSF = { {.EVDOTPWCSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642883, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMF = { {.EVDOTPWGASMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642888, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMF = { {.EVDOTPWXGASMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642889, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFR = { {.EVDOTPWGASMFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFR = { {.EVDOTPWXGASMFR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMF = { {.EVDOTPWGSSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMF = { {.EVDOTPWXGSSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFR = { {.EVDOTPWGSSMFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFR = { {.EVDOTPWXGSSMFR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064288F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSIAAW3 = { {.EVDOTPWCSSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642890, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSMIAAW3 = { {.EVDOTPWCSMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642891, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFRAAW3 = { {.EVDOTPWCSSFRAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642892, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFAAW3 = { {.EVDOTPWCSSFAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642893, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFAA3 = { {.EVDOTPWGASMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642898, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFAA3 = { {.EVDOTPWXGASMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642899, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFRAA3 = { {.EVDOTPWGASMFRAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFRAA3 = { {.EVDOTPWXGASMFRAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFAA3 = { {.EVDOTPWGSSMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFAA3 = { {.EVDOTPWXGSSMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFRAA3 = { {.EVDOTPWGSSMFRAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFRAA3 = { {.EVDOTPWXGSSMFRAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064289F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSIA = { {.EVDOTPWCSSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSMIA = { {.EVDOTPWCSMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFRA = { {.EVDOTPWCSSFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFA = { {.EVDOTPWCSSFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFA = { {.EVDOTPWGASMFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFA = { {.EVDOTPWXGASMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428A9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFRA = { {.EVDOTPWGASMFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFRA = { {.EVDOTPWXGASMFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFA = { {.EVDOTPWGSSMFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFA = { {.EVDOTPWXGSSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFRA = { {.EVDOTPWGSSMFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFRA = { {.EVDOTPWXGSSMFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428AF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSIAAW = { {.EVDOTPWCSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSMIAAW = { {.EVDOTPWCSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFRAAW = { {.EVDOTPWCSSFRAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWCSSFAAW = { {.EVDOTPWCSSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFAA = { {.EVDOTPWGASMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFAA = { {.EVDOTPWXGASMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428B9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGASMFRAA = { {.EVDOTPWGASMFRAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGASMFRAA = { {.EVDOTPWXGASMFRAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFAA = { {.EVDOTPWGSSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFAA = { {.EVDOTPWXGSSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWGSSMFRAA = { {.EVDOTPWGSSMFRAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWXGSSMFRAA = { {.EVDOTPWXGSSMFRAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106428BF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSI = { {.EVDOTPHIHCSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642900, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSI = { {.EVDOTPLOHCSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642901, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSF = { {.EVDOTPHIHCSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642902, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSF = { {.EVDOTPLOHCSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642903, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSMI = { {.EVDOTPHIHCSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642908, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSMI = { {.EVDOTPLOHCSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642909, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFR = { {.EVDOTPHIHCSSFR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064290A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFR = { {.EVDOTPLOHCSSFR, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064290B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSIAAW3 = { {.EVDOTPHIHCSSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642910, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSIAAW3 = { {.EVDOTPLOHCSSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642911, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFAAW3 = { {.EVDOTPHIHCSSFAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642912, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFAAW3 = { {.EVDOTPLOHCSSFAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642913, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSMIAAW3 = { {.EVDOTPHIHCSMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642918, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSMIAAW3 = { {.EVDOTPLOHCSMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642919, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFRAAW3 = { {.EVDOTPHIHCSSFRAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064291A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFRAAW3 = { {.EVDOTPLOHCSSFRAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064291B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSIA = { {.EVDOTPHIHCSSIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642920, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSIA = { {.EVDOTPLOHCSSIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642921, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFA = { {.EVDOTPHIHCSSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642922, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFA = { {.EVDOTPLOHCSSFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642923, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSMIA = { {.EVDOTPHIHCSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642928, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSMIA = { {.EVDOTPLOHCSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642929, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFRA = { {.EVDOTPHIHCSSFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064292A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFRA = { {.EVDOTPLOHCSSFRA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064292B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSIAAW = { {.EVDOTPHIHCSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642930, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSIAAW = { {.EVDOTPLOHCSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642931, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFAAW = { {.EVDOTPHIHCSSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642932, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFAAW = { {.EVDOTPLOHCSSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642933, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSMIAAW = { {.EVDOTPHIHCSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642938, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSMIAAW = { {.EVDOTPLOHCSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642939, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHIHCSSFRAAW = { {.EVDOTPHIHCSSFRAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064293A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPLOHCSSFRAAW = { {.EVDOTPLOHCSSFRAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064293B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUSI = { {.EVDOTPHAUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642940, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSI = { {.EVDOTPHASSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642941, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUSI = { {.EVDOTPHASUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642942, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSF = { {.EVDOTPHASSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642943, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSF = { {.EVDOTPHSSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642947, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUMI = { {.EVDOTPHAUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642948, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASMI = { {.EVDOTPHASMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642949, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUMI = { {.EVDOTPHASUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064294A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFR = { {.EVDOTPHASSFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064294B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSMI = { {.EVDOTPHSSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064294D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSI = { {.EVDOTPHSSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064294D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFR = { {.EVDOTPHSSSFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064294F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUSIAAW3 = { {.EVDOTPHAUSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642950, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSIAAW3 = { {.EVDOTPHASSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642951, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUSIAAW3 = { {.EVDOTPHASUSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642952, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFAAW3 = { {.EVDOTPHASSFAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642953, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSIAAW3 = { {.EVDOTPHSSSIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642955, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFAAW3 = { {.EVDOTPHSSSFAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642957, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUMIAAW3 = { {.EVDOTPHAUMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642958, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASMIAAW3 = { {.EVDOTPHASMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642959, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUMIAAW3 = { {.EVDOTPHASUMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064295A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFRAAW3 = { {.EVDOTPHASSFRAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064295B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSMIAAW3 = { {.EVDOTPHSSMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064295D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFRAAW3 = { {.EVDOTPHSSSFRAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064295F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUSIA = { {.EVDOTPHAUSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642960, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSIA = { {.EVDOTPHASSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642961, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUSIA = { {.EVDOTPHASUSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642962, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFA = { {.EVDOTPHASSFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642963, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFA = { {.EVDOTPHSSSFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642967, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUMIA = { {.EVDOTPHAUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642968, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASMIA = { {.EVDOTPHASMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642969, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUMIA = { {.EVDOTPHASUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064296A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFRA = { {.EVDOTPHASSFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064296B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSMIA = { {.EVDOTPHSSMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064296D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSIA = { {.EVDOTPHSSSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064296D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFRA = { {.EVDOTPHSSSFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064296F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUSIAAW = { {.EVDOTPHAUSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642970, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSIAAW = { {.EVDOTPHASSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642971, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUSIAAW = { {.EVDOTPHASUSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642972, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFAAW = { {.EVDOTPHASSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642973, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSIAAW = { {.EVDOTPHSSSIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642975, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFAAW = { {.EVDOTPHSSSFAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642977, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHAUMIAAW = { {.EVDOTPHAUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642978, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASMIAAW = { {.EVDOTPHASMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642979, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASUMIAAW = { {.EVDOTPHASUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064297A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHASSFRAAW = { {.EVDOTPHASSFRAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064297B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSMIAAW = { {.EVDOTPHSSMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064297D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPHSSSFRAAW = { {.EVDOTPHSSSFRAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064297F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGAUMI = { {.EVDOTP4HGAUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642980, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMI = { {.EVDOTP4HGASMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642981, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASUMI = { {.EVDOTP4HGASUMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642982, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMF = { {.EVDOTP4HGASMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642983, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMI = { {.EVDOTP4HGSSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642984, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMF = { {.EVDOTP4HGSSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642985, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMI = { {.EVDOTP4HXGASMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642986, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMF = { {.EVDOTP4HXGASMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642987, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBAUMI = { {.EVDOTPBAUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642988, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASMI = { {.EVDOTPBASMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642989, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASUMI = { {.EVDOTPBASUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064298A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMI = { {.EVDOTP4HXGSSMI, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064298E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMF = { {.EVDOTP4HXGSSMF, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064298F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGAUMIAA3 = { {.EVDOTP4HGAUMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642990, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMIAA3 = { {.EVDOTP4HGASMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642991, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASUMIAA3 = { {.EVDOTP4HGASUMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642992, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMFAA3 = { {.EVDOTP4HGASMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642993, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMIAA3 = { {.EVDOTP4HGSSMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642994, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMFAA3 = { {.EVDOTP4HGSSMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642995, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMIAA3 = { {.EVDOTP4HXGASMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642996, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMFAA3 = { {.EVDOTP4HXGASMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642997, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBAUMIAAW3 = { {.EVDOTPBAUMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642998, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASMIAAW3 = { {.EVDOTPBASMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642999, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASUMIAAW3 = { {.EVDOTPBASUMIAAW3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064299A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMIAA3 = { {.EVDOTP4HXGSSMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064299E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMFAA3 = { {.EVDOTP4HXGSSMFAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064299F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGAUMIA = { {.EVDOTP4HGAUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMIA = { {.EVDOTP4HGASMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASUMIA = { {.EVDOTP4HGASUMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMFA = { {.EVDOTP4HGASMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMIA = { {.EVDOTP4HGSSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMFA = { {.EVDOTP4HGSSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMIA = { {.EVDOTP4HXGASMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMFA = { {.EVDOTP4HXGASMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBAUMIA = { {.EVDOTPBAUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASMIA = { {.EVDOTPBASMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429A9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASUMIA = { {.EVDOTPBASUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429AA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMIA = { {.EVDOTP4HXGSSMIA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429AE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMFA = { {.EVDOTP4HXGSSMFA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429AF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGAUMIAA = { {.EVDOTP4HGAUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMIAA = { {.EVDOTP4HGASMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASUMIAA = { {.EVDOTP4HGASUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGASMFAA = { {.EVDOTP4HGASMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMIAA = { {.EVDOTP4HGSSMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HGSSMFAA = { {.EVDOTP4HGSSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMIAA = { {.EVDOTP4HXGASMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGASMFAA = { {.EVDOTP4HXGASMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBAUMIAAW = { {.EVDOTPBAUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASMIAAW = { {.EVDOTPBASMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429B9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPBASUMIAAW = { {.EVDOTPBASUMIAAW, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429BA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMIAA = { {.EVDOTP4HXGSSMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429BE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTP4HXGSSMFAA = { {.EVDOTP4HXGSSMFAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429BF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUSI = { {.EVDOTPWAUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429C0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASSI = { {.EVDOTPWASSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429C1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUSI = { {.EVDOTPWASUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429C2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUMI = { {.EVDOTPWAUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429C8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASMI = { {.EVDOTPWASMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429C9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUMI = { {.EVDOTPWASUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429CA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSMI = { {.EVDOTPWSSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429CD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSSI = { {.EVDOTPWSSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429CD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUSIAA3 = { {.EVDOTPWAUSIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASSIAA3 = { {.EVDOTPWASSIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUSIAA3 = { {.EVDOTPWASUSIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSSIAA3 = { {.EVDOTPWSSSIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUMIAA3 = { {.EVDOTPWAUMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASMIAA3 = { {.EVDOTPWASMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429D9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUMIAA3 = { {.EVDOTPWASUMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429DA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSMIAA3 = { {.EVDOTPWSSMIAA3, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429DD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUSIA = { {.EVDOTPWAUSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429E0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASSIA = { {.EVDOTPWASSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429E1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUSIA = { {.EVDOTPWASUSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429E2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUMIA = { {.EVDOTPWAUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429E8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASMIA = { {.EVDOTPWASMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429E9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUMIA = { {.EVDOTPWASUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429EA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSMIA = { {.EVDOTPWSSMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429ED, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSSIA = { {.EVDOTPWSSSIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429ED, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUSIAA = { {.EVDOTPWAUSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASSIAA = { {.EVDOTPWASSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUSIAA = { {.EVDOTPWASUSIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSSIAA = { {.EVDOTPWSSSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWAUMIAA = { {.EVDOTPWAUMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASMIAA = { {.EVDOTPWASMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429F9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWASUMIAA = { {.EVDOTPWASUMIAA, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429FA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDOTPWSSMIAA = { {.EVDOTPWSSMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106429FD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDIB = { {.EVADDIB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A03, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDIH = { {.EVADDIH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A01, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBIFH = { {.EVSUBIFH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A05, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBIFB = { {.EVSUBIFB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A07, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSB = { {.EVABSB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSH = { {.EVABSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSD = { {.EVABSD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSS = { {.EVABSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSBS = { {.EVABSBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10645208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSHS = { {.EVABSHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDS = { {.EVABSDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10647208, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGWO = { {.EVNEGWO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGB = { {.EVNEGB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGBO = { {.EVNEGBO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGH = { {.EVNEGH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGHO = { {.EVNEGHO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGD = { {.EVNEGD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGS = { {.EVNEGS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGWOS = { {.EVNEGWOS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGBS = { {.EVNEGBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10645209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGBOS = { {.EVNEGBOS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10645A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGHS = { {.EVNEGHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGHOS = { {.EVNEGHOS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646A09, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVNEGDS = { {.EVNEGDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10647209, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEXTZB = { {.EVEXTZB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A0A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEXTSBH = { {.EVEXTSBH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064220A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVEXTSW = { {.EVEXTSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064320B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWH = { {.EVRNDWH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064020C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHB = { {.EVRNDHB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064220C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDW = { {.EVRNDDW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064320C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWHUS = { {.EVRNDWHUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064420C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWHSS = { {.EVRNDWHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644A0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHBUS = { {.EVRNDHBUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064620C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHBSS = { {.EVRNDHBSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646A0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDWUS = { {.EVRNDDWUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064720C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDWSS = { {.EVRNDDWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10647A0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWNH = { {.EVRNDWNH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064820C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHNB = { {.EVRNDHNB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064A20C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDNW = { {.EVRNDDNW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064B20C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWNHUS = { {.EVRNDWNHUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064C20C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDWNHSS = { {.EVRNDWNHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064CA0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHNBUS = { {.EVRNDHNBUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064E20C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDHNBSS = { {.EVRNDHNBSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064EA0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDNWUS = { {.EVRNDDNWUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064F20C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRNDDNWSS = { {.EVRNDDNWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064FA0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCNTLZH = { {.EVCNTLZH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064220D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCNTLSH = { {.EVCNTLSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064220E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPOPCNTB = { {.EVPOPCNTB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064D20E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .CIRCINC = { {.CIRCINC , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A10, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIBUI = { {.EVUNPKHIBUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064021C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIBSI = { {.EVUNPKHIBSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIHUI = { {.EVUNPKHIHUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064121C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIHSI = { {.EVUNPKHIHSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOBUI = { {.EVUNPKLOBUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064221C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOBSI = { {.EVUNPKLOBSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOHUI = { {.EVUNPKLOHUI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064321C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOHSI = { {.EVUNPKLOHSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOHF = { {.EVUNPKLOHF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064421C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIHF = { {.EVUNPKHIHF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKLOWGSF = { {.EVUNPKLOWGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064621C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVUNPKHIWGSF = { {.EVUNPKHIWGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSDUW = { {.EVSATSDUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064821C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSDSW = { {.EVSATSDSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10648A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSHUB = { {.EVSATSHUB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064921C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSHSB = { {.EVSATSHSB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10649A1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUWUH = { {.EVSATUWUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064A21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSWSH = { {.EVSATSWSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064AA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSWUH = { {.EVSATSWUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064B21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUHUB = { {.EVSATUHUB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064BA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUDUW = { {.EVSATUDUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064C21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUWSW = { {.EVSATUWSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064CA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSHUH = { {.EVSATSHUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064D21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUHSH = { {.EVSATUHSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064DA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSWUW = { {.EVSATSWUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064E21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSWGSDF = { {.EVSATSWGSDF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064EA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATSBUB = { {.EVSATSBUB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064F21C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSATUBSB = { {.EVSATUBSB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064FA1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXHPUW = { {.EVMAXHPUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064021D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXHPSW = { {.EVMAXHPSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXBPUH = { {.EVMAXBPUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064221D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXBPSH = { {.EVMAXBPSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXWPUD = { {.EVMAXWPUD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064321D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXWPSD = { {.EVMAXWPSD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINHPUW = { {.EVMINHPUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064421D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINHPSW = { {.EVMINHPSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10644A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINBPUH = { {.EVMINBPUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064621D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINBPSH = { {.EVMINBPSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINWPUD = { {.EVMINWPUD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064721D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINWPSD = { {.EVMINWPSD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10647A1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXMAGWS = { {.EVMAXMAGWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A1F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSL = { {.EVSL , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A25, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLI = { {.EVSLI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A27, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIE = { {.EVSPLATIE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIB = { {.EVSPLATIB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIBE = { {.EVSPLATIBE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641A29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIH = { {.EVSPLATIH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIHE = { {.EVSPLATIHE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATID = { {.EVSPLATID , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIA = { {.EVSPLATIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10648229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIEA = { {.EVSPLATIEA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10648A29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIBA = { {.EVSPLATIBA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10649229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIBEA = { {.EVSPLATIBEA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10649A29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIHA = { {.EVSPLATIHA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064A229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIHEA = { {.EVSPLATIHEA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064AA29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATIDA = { {.EVSPLATIDA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064B229, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIO = { {.EVSPLATFIO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640A2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIB = { {.EVSPLATFIB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064122B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIBO = { {.EVSPLATFIBO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641A2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIH = { {.EVSPLATFIH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064222B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIHO = { {.EVSPLATFIHO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFID = { {.EVSPLATFID , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064322B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIA = { {.EVSPLATFIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064822B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIOA = { {.EVSPLATFIOA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10648A2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIBA = { {.EVSPLATFIBA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064922B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIBOA = { {.EVSPLATFIBOA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10649A2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIHA = { {.EVSPLATFIHA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064A22B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIHOA = { {.EVSPLATFIHOA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064AA2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATFIDA = { {.EVSPLATFIDA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064B22B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPGTDU = { {.EVCMPGTDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10242A30, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPGTDS = { {.EVCMPGTDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10242A31, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPLTDU = { {.EVCMPLTDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10242A32, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPLTDS = { {.EVCMPLTDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10242A33, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCMPEQD = { {.EVCMPEQD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10242A34, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPBHILO = { {.EVSWAPBHILO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A38, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPBLOHI = { {.EVSWAPBLOHI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A39, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHHILO = { {.EVSWAPHHILO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHLOHI = { {.EVSWAPHLOHI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHE = { {.EVSWAPHE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHHI = { {.EVSWAPHHI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHLO = { {.EVSWAPHLO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSWAPHO = { {.EVSWAPHO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A3F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVINSB = { {.EVINSB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A48, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVXTRB = { {.EVXTRB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A4A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATH = { {.EVSPLATH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064024C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSPLATB = { {.EVSPLATB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064124C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVINSH = { {.EVINSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A4D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCLRBE = { {.EVCLRBE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064024E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCLRBO = { {.EVCLRBO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064824E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVCLRH = { {.EVCLRH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064824F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVXTRH = { {.EVXTRH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A4F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSELBITM0 = { {.EVSELBITM0 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A50, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSELBITM1 = { {.EVSELBITM1 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A51, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSELBIT = { {.EVSELBIT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A52, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPERM = { {.EVPERM , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A54, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPERM2 = { {.EVPERM2 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A55, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPERM3 = { {.EVPERM3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A56, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVXTRD = { {.EVXTRD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A58, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRBU = { {.EVSRBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A60, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRBS = { {.EVSRBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A61, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRBIU = { {.EVSRBIU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A62, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRBIS = { {.EVSRBIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A63, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLB = { {.EVSLB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A64, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLB = { {.EVRLB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A65, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLBI = { {.EVSLBI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A66, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLBI = { {.EVRLBI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A67, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRHU = { {.EVSRHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A68, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRHS = { {.EVSRHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A69, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRHIU = { {.EVSRHIU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRHIS = { {.EVSRHIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLH = { {.EVSLH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLH = { {.EVRLH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLHI = { {.EVSLHI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVRLHI = { {.EVRLHI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A6F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRU = { {.EVSRU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A70, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRS = { {.EVSRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A71, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRIU = { {.EVSRIU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A72, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSRIS = { {.EVSRIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A73, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLVSL = { {.EVLVSL , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A74, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLVSR = { {.EVLVSR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A75, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSROIU = { {.EVSROIU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642A77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSROIS = { {.EVSROIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10646A77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSLOI = { {.EVSLOI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064AA77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDBX = { {.EVLDBX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B06, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDB = { {.EVLDB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B07, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHSPLATHX = { {.EVLHHSPLATHX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B0A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHSPLATH = { {.EVLHHSPLATH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B0B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBSPLATWX = { {.EVLWBSPLATWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B12, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBSPLATW = { {.EVLWBSPLATW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B13, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATWX = { {.EVLWHSPLATWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B1A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATW = { {.EVLWHSPLATW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B1B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLBBSPLATBX = { {.EVLBBSPLATBX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B1E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLBBSPLATB = { {.EVLBBSPLATB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B1F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDBX = { {.EVSTDBX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B26, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDB = { {.EVSTDB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B27, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBEX = { {.EVLWBEX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBE = { {.EVLWBE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOUX = { {.EVLWBOUX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOU = { {.EVLWBOU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOSX = { {.EVLWBOSX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOS = { {.EVLWBOS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B2F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBEX = { {.EVSTWBEX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B32, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBE = { {.EVSTWBE , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B33, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBOX = { {.EVSTWBOX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B36, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBO = { {.EVSTWBO , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B37, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBX = { {.EVSTWBX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B3A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWB = { {.EVSTWB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B3B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTHBX = { {.EVSTHBX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B3E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTHB = { {.EVSTHB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B3F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDDMX = { {.EVLDDMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B40, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDDU = { {.EVLDDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B41, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDWMX = { {.EVLDWMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B42, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDWU = { {.EVLDWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B43, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDHMX = { {.EVLDHMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B44, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDHU = { {.EVLDHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B45, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDBMX = { {.EVLDBMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B46, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLDBU = { {.EVLDBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B47, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHESPLATMX = { {.EVLHHESPLATMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B48, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHESPLATU = { {.EVLHHESPLATU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B49, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHSPLATHMX = { {.EVLHHSPLATHMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHSPLATHU = { {.EVLHHSPLATHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOUSPLATMX = { {.EVLHHOUSPLATMX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOUSPLATU = { {.EVLHHOUSPLATU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOSSPLATMX = { {.EVLHHOSSPLATMX, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLHHOSSPLATU = { {.EVLHHOSSPLATU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B4F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHEMX = { {.EVLWHEMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B50, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHEU = { {.EVLWHEU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B51, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBSPLATWMX = { {.EVLWBSPLATWMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B52, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBSPLATWU = { {.EVLWBSPLATWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B53, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOUMX = { {.EVLWHOUMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B54, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOUU = { {.EVLWHOUU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B55, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOSMX = { {.EVLWHOSMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B56, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHOSU = { {.EVLWHOSU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B57, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWWSPLATMX = { {.EVLWWSPLATMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B58, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWWSPLATU = { {.EVLWWSPLATU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B59, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATWMX = { {.EVLWHSPLATWMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATWU = { {.EVLWHSPLATWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATMX = { {.EVLWHSPLATMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWHSPLATU = { {.EVLWHSPLATU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLBBSPLATBMX = { {.EVLBBSPLATBMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLBBSPLATBU = { {.EVLBBSPLATBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B5F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDDMX = { {.EVSTDDMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B60, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDDU = { {.EVSTDDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B61, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDWMX = { {.EVSTDWMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B62, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDWU = { {.EVSTDWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B63, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDHMX = { {.EVSTDHMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B64, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDHU = { {.EVSTDHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B65, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDBMX = { {.EVSTDBMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B66, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTDBU = { {.EVSTDBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B67, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBEMX = { {.EVLWBEMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBEU = { {.EVLWBEU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOUMX = { {.EVLWBOUMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOUU = { {.EVLWBOUU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOSMX = { {.EVLWBOSMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVLWBOSU = { {.EVLWBOSU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B6F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHEMX = { {.EVSTWHEMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B70, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHEU = { {.EVSTWHEU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B71, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBEMX = { {.EVSTWBEMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B72, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBEU = { {.EVSTWBEU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B73, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHOMX = { {.EVSTWHOMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B74, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWHOU = { {.EVSTWHOU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B75, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBOMX = { {.EVSTWBOMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B76, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBOU = { {.EVSTWBOU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWEMX = { {.EVSTWWEMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B78, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWEU = { {.EVSTWWEU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B79, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBMX = { {.EVSTWBMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWBU = { {.EVSTWBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWOMX = { {.EVSTWWOMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTWWOU = { {.EVSTWWOU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTHBMX = { {.EVSTHBMX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSTHBU = { {.EVSTHBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642B7F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHUSI = { {.EVMHUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C00, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHSSI = { {.EVMHSSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C01, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHSUSI = { {.EVMHSUSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C02, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHSSF = { {.EVMHSSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHUMI = { {.EVMHUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C05, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHSSFR = { {.EVMHSSFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C06, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUMI = { {.EVMHESUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUMI = { {.EVMHOSUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C0E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUMI = { {.EVMBEUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESMI = { {.EVMBESMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C19, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUMI = { {.EVMBESUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C1A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUMI = { {.EVMBOUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSMI = { {.EVMBOSMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUMI = { {.EVMBOSUMI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C1E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUMIA = { {.EVMHESUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUMIA = { {.EVMHOSUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C2E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUMIA = { {.EVMBEUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C38, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESMIA = { {.EVMBESMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C39, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUMIA = { {.EVMBESUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C3A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUMIA = { {.EVMBOUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C3C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSMIA = { {.EVMBOSMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C3D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUMIA = { {.EVMBOSUMIA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C3E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUSIW = { {.EVMWUSIW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C40, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSIW = { {.EVMWSSIW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C41, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFR = { {.EVMWHSSFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C46, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFR = { {.EVMWEHGSMFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C56, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMF = { {.EVMWEHGSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C57, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFR = { {.EVMWOHGSMFR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C5E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMF = { {.EVMWOHGSMF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C5F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFRA = { {.EVMWHSSFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C66, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFRA = { {.EVMWEHGSMFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C76, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFA = { {.EVMWEHGSMFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFRA = { {.EVMWOHGSMFRA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C7E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFA = { {.EVMWOHGSMFA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C7F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDUSIAA = { {.EVADDUSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640480, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSSIAA = { {.EVADDSSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640481, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFUSIAA = { {.EVSUBFUSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640482, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFSSIAA = { {.EVSUBFSSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640483, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSMIAA = { {.EVADDSMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640484, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFSMIAA = { {.EVSUBFSMIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640486, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDH = { {.EVADDH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C88, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHSS = { {.EVADDHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C89, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFH = { {.EVSUBFH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHSS = { {.EVSUBFHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHX = { {.EVADDHX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHXSS = { {.EVADDHXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHX = { {.EVSUBFHX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHXSS = { {.EVSUBFHXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C8F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDD = { {.EVADDD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C90, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDDSS = { {.EVADDDSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C91, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFD = { {.EVSUBFD , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C92, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFDSS = { {.EVSUBFDSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C93, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDB = { {.EVADDB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C94, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDBSS = { {.EVADDBSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C95, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFB = { {.EVSUBFB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C96, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFBSS = { {.EVSUBFBSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C97, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFH = { {.EVADDSUBFH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C98, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFHSS = { {.EVADDSUBFHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C99, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDH = { {.EVSUBFADDH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDHSS = { {.EVSUBFADDHSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFHX = { {.EVADDSUBFHX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFHXSS = { {.EVADDSUBFHXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDHX = { {.EVSUBFADDHX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDHXSS = { {.EVSUBFADDHXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642C9F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDDUS = { {.EVADDDUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDBUS = { {.EVADDBUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFDUS = { {.EVSUBFDUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFBUS = { {.EVSUBFBUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWUS = { {.EVADDWUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWXUS = { {.EVADDWXUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWUS = { {.EVSUBFWUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWXUS = { {.EVSUBFWXUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADD2SUBF2H = { {.EVADD2SUBF2H , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADD2SUBF2HSS = { {.EVADD2SUBF2HSS, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CA9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBF2ADD2H = { {.EVSUBF2ADD2H , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBF2ADD2HSS = { {.EVSUBF2ADD2HSS, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHUS = { {.EVADDHUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHXUS = { {.EVADDHXUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHUS = { {.EVSUBFHUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHXUS = { {.EVSUBFHXUS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CAF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWSS = { {.EVADDWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWSS = { {.EVSUBFWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWX = { {.EVADDWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWXSS = { {.EVADDWXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWX = { {.EVSUBFWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWXSS = { {.EVSUBFWXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFW = { {.EVADDSUBFW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFWSS = { {.EVADDSUBFWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CB9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDW = { {.EVSUBFADDW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDWSS = { {.EVSUBFADDWSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFWX = { {.EVADDSUBFWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDSUBFWXSS = { {.EVADDSUBFWXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDWX = { {.EVSUBFADDWX , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFADDWXSS = { {.EVSUBFADDWXSS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CBF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAR = { {.EVMAR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640CC4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWU = { {.EVSUMWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106404C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWS = { {.EVSUMWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10640CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BU = { {.EVSUM4BU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106414C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BS = { {.EVSUM4BS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10641CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HU = { {.EVSUM2HU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106424C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HS = { {.EVSUM2HS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIFF2HIS = { {.EVDIFF2HIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106434C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HIS = { {.EVSUM2HIS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10643CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWUA = { {.EVSUMWUA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106484C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWSA = { {.EVSUMWSA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10648CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BUA = { {.EVSUM4BUA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x106494C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BSA = { {.EVSUM4BSA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10649CC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HUA = { {.EVSUM2HUA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064A4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HSA = { {.EVSUM2HSA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064ACC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIFF2HISA = { {.EVDIFF2HISA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064B4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HISA = { {.EVSUM2HISA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064BCC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWUAA = { {.EVSUMWUAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064C4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUMWSAA = { {.EVSUMWSAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064CCC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BUAAW = { {.EVSUM4BUAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064D4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM4BSAAW = { {.EVSUM4BSAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064DCC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HUAAW = { {.EVSUM2HUAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064E4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HSAAW = { {.EVSUM2HSAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064ECC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIFF2HISAAW = { {.EVDIFF2HISAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064F4C5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUM2HISAAW = { {.EVSUM2HISAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x1064FCC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVWSF = { {.EVDIVWSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVWUF = { {.EVDIVWUF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVS = { {.EVDIVS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDIVU = { {.EVDIVU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CCF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWEGSI = { {.EVADDWEGSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWEGSF = { {.EVADDWEGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWEGSI = { {.EVSUBFWEGSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWEGSF = { {.EVSUBFWEGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWOGSI = { {.EVADDWOGSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDWOGSF = { {.EVADDWOGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWOGSI = { {.EVSUBFWOGSI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFWOGSF = { {.EVSUBFWOGSF , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHHIUW = { {.EVADDHHIUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD8, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHHISW = { {.EVADDHHISW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CD9, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHHIUW = { {.EVSUBFHHIUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHHISW = { {.EVSUBFHHISW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHLOUW = { {.EVADDHLOUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDC, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVADDHLOSW = { {.EVADDHLOSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDD, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHLOUW = { {.EVSUBFHLOUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSUBFHLOSW = { {.EVSUBFHLOSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642CDF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUSIAAW = { {.EVMHESUSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D02, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUSIAAW = { {.EVMHOSUSIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D06, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUMIAAW = { {.EVMHESUMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUMIAAW = { {.EVMHOSUMIAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D0E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUSIAAH = { {.EVMBEUSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D10, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESSIAAH = { {.EVMBESSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D11, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUSIAAH = { {.EVMBESUSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D12, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUSIAAH = { {.EVMBOUSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D14, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSSIAAH = { {.EVMBOSSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D15, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUSIAAH = { {.EVMBOSUSIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D16, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUMIAAH = { {.EVMBEUMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESMIAAH = { {.EVMBESMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D19, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUMIAAH = { {.EVMBESUMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D1A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUMIAAH = { {.EVMBOUMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSMIAAH = { {.EVMBOSMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D1D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUMIAAH = { {.EVMBOSUMIAAH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D1E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUSIAAW3 = { {.EVMWLUSIAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D42, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSIAAW3 = { {.EVMWLSSIAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D43, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFRAAW3 = { {.EVMWHSSFRAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D44, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFAAW3 = { {.EVMWHSSFAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D45, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFRAAW = { {.EVMWHSSFRAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D46, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFAAW = { {.EVMWHSSFAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D47, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMIAAW3 = { {.EVMWLUMIAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMIAAW3 = { {.EVMWLSMIAAW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D4B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUSIAA = { {.EVMWUSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D50, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSIAA = { {.EVMWSSIAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D51, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFRAA = { {.EVMWEHGSMFRAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D56, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFAA = { {.EVMWEHGSMFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D57, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFRAA = { {.EVMWOHGSMFRAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D5E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFAA = { {.EVMWOHGSMFAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D5F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUSIANW = { {.EVMHESUSIANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D82, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUSIANW = { {.EVMHOSUSIANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D86, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHESUMIANW = { {.EVMHESUMIANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMHOSUMIANW = { {.EVMHOSUMIANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D8E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUSIANH = { {.EVMBEUSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D90, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESSIANH = { {.EVMBESSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D91, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUSIANH = { {.EVMBESUSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D92, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUSIANH = { {.EVMBOUSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D94, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSSIANH = { {.EVMBOSSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D95, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUSIANH = { {.EVMBOSUSIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D96, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBEUMIANH = { {.EVMBEUMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D98, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESMIANH = { {.EVMBESMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D99, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBESUMIANH = { {.EVMBESUMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D9A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOUMIANH = { {.EVMBOUMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D9C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSMIANH = { {.EVMBOSMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D9D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMBOSUMIANH = { {.EVMBOSUMIANH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642D9E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUSIANW3 = { {.EVMWLUSIANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC2, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSSIANW3 = { {.EVMWLSSIANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC3, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFRANW3 = { {.EVMWHSSFRANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC4, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFANW3 = { {.EVMWHSSFANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC5, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFRANW = { {.EVMWHSSFRANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWHSSFANW = { {.EVMWHSSFANW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DC7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLUMIANW3 = { {.EVMWLUMIANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCA, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWLSMIANW3 = { {.EVMWLSMIANW3 , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DCB, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWUSIAN = { {.EVMWUSIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD0, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWSSIAN = { {.EVMWSSIAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD1, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFRAN = { {.EVMWEHGSMFRAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD6, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWEHGSMFAN = { {.EVMWEHGSMFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DD7, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFRAN = { {.EVMWOHGSMFRAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DDE, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMWOHGSMFAN = { {.EVMWOHGSMFAN , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642DDF, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETEQB = { {.EVSETEQB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E00, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETEQH = { {.EVSETEQH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E02, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETEQW = { {.EVSETEQW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E04, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTHU = { {.EVSETGTHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E08, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTHS = { {.EVSETGTHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E0A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTWU = { {.EVSETGTWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E0C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTWS = { {.EVSETGTWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E0E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTBU = { {.EVSETGTBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E10, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETGTBS = { {.EVSETGTBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E12, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTBU = { {.EVSETLTBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E14, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTBS = { {.EVSETLTBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E16, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTHU = { {.EVSETLTHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E18, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTHS = { {.EVSETLTHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E1A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTWU = { {.EVSETLTWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E1C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSETLTWS = { {.EVSETLTWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E1E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADUW = { {.EVSADUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E20, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADSW = { {.EVSADSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E21, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4UB = { {.EVSAD4UB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E22, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4SB = { {.EVSAD4SB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E23, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2UH = { {.EVSAD2UH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E24, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2SH = { {.EVSAD2SH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E25, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADUWA = { {.EVSADUWA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E28, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADSWA = { {.EVSADSWA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E29, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4UBA = { {.EVSAD4UBA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E2A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4SBA = { {.EVSAD4SBA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E2B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2UHA = { {.EVSAD2UHA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E2C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2SHA = { {.EVSAD2SHA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E2D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFUW = { {.EVABSDIFUW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E30, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFSW = { {.EVABSDIFSW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E31, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFUB = { {.EVABSDIFUB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E32, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFSB = { {.EVABSDIFSB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E33, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFUH = { {.EVABSDIFUH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E34, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVABSDIFSH = { {.EVABSDIFSH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E35, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADUWAA = { {.EVSADUWAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E38, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSADSWAA = { {.EVSADSWAA , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E39, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4UBAAW = { {.EVSAD4UBAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E3A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD4SBAAW = { {.EVSAD4SBAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E3B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2UHAAW = { {.EVSAD2UHAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E3C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVSAD2SHAAW = { {.EVSAD2SHAAW , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E3D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSHUBS = { {.EVPKSHUBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E40, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSHSBS = { {.EVPKSHSBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E41, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWUHS = { {.EVPKSWUHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E42, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWSHS = { {.EVPKSWSHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E43, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKUHUBS = { {.EVPKUHUBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E44, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKUWUHS = { {.EVPKUWUHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E45, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWSHILVS = { {.EVPKSWSHILVS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E46, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWGSHEFRS = { {.EVPKSWGSHEFRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E47, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWSHFRS = { {.EVPKSWSHFRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E48, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWSHILVFRS = { {.EVPKSWSHILVFRS, {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E49, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSDSWFRS = { {.EVPKSDSWFRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E4A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSDSHEFRS = { {.EVPKSDSHEFRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E4B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKUDUWS = { {.EVPKUDUWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E4C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSDSWS = { {.EVPKSDSWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E4D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVPKSWGSWFRS = { {.EVPKSWGSWFRS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E4E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVEH = { {.EVILVEH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E50, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVEOH = { {.EVILVEOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E51, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVHIH = { {.EVILVHIH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E52, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVHILOH = { {.EVILVHILOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E53, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVLOH = { {.EVILVLOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E54, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVLOHIH = { {.EVILVLOHIH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E55, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVOEH = { {.EVILVOEH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E56, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVILVOH = { {.EVILVOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E57, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVEB = { {.EVDLVEB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E58, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVEH = { {.EVDLVEH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E59, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVEOB = { {.EVDLVEOB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVEOH = { {.EVDLVEOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVOB = { {.EVDLVOB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVOH = { {.EVDLVOH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVOEB = { {.EVDLVOEB , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVDLVOEH = { {.EVDLVOEH , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E5F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXBU = { {.EVMAXBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E60, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXBS = { {.EVMAXBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E61, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXHU = { {.EVMAXHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E62, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXHS = { {.EVMAXHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E63, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXWU = { {.EVMAXWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E64, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXWS = { {.EVMAXWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E65, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXDU = { {.EVMAXDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E66, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMAXDS = { {.EVMAXDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E67, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINBU = { {.EVMINBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E68, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINBS = { {.EVMINBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E69, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINHU = { {.EVMINHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINHS = { {.EVMINHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINWU = { {.EVMINWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINWS = { {.EVMINWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINDU = { {.EVMINDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVMINDS = { {.EVMINDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E6F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGWU = { {.EVAVGWU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E70, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGWS = { {.EVAVGWS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E71, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGBU = { {.EVAVGBU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E72, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGBS = { {.EVAVGBS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E73, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGHU = { {.EVAVGHU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E74, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGHS = { {.EVAVGHS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E75, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGDU = { {.EVAVGDU , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E76, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGDS = { {.EVAVGDS , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E77, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGWUR = { {.EVAVGWUR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E78, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGWSR = { {.EVAVGWSR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E79, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGBUR = { {.EVAVGBUR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7A, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGBSR = { {.EVAVGBSR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7B, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGHUR = { {.EVAVGHUR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7C, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGHSR = { {.EVAVGHSR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7D, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGDUR = { {.EVAVGDUR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7E, 0xFFFFFFFF, .SPE, .PPC32, {}} }, .EVAVGDSR = { {.EVAVGDSR , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x10642E7F, 0xFFFFFFFF, .SPE, .PPC32, {}} }, // ========================================================================= // §41 Paired Singles (Gekko/Broadway — GameCube + Wii) // ========================================================================= // Primary opcode 4 shared with AltiVec/SPE — disambiguated by XO. LLVM 22 // doesn't recognise these; classified as expected_unknown. Bit patterns // from Gekko/Broadway User's Manual §1.2.4 (matches binutils PPCPS set). // // Form summary: // A-form (3-op, 4-op): primary=4, XO at bits 1..5 (5-bit), Rc at bit 0 // X-form cmp: primary=4, XO at bits 1..10 (BF at 23..25) // X-form unary: primary=4, XO=40/72/136/264 (FRT, FRB) // XOPS merge: primary=4, XO=528/560/592/624 (FRT, FRA, FRB) // XW psq_lx/psq_lux/psq_stx/psq_stux: X-form with W bit at 10, I at 7..9 // D-form psq_l/_lu/_st/_stu: primary 56/57/60/61; W bit 15, I bits 12..14 // ---- A-form 3-op (FRT, FRA, FRB) — FRC=0 baked in mask ---- .PS_DIV = { {.PS_DIV, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000024, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_DIV_DOT = { {.PS_DIV_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000025, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_SUB = { {.PS_SUB, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000028, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_SUB_DOT = { {.PS_SUB_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000029, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_ADD = { {.PS_ADD, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x1000002A, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_ADD_DOT = { {.PS_ADD_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x1000002B, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, // ---- A-form 3-op (FRT, FRA, FRC) — FRB=0 baked ---- .PS_MUL = { {.PS_MUL, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x10000032, 0xFC00F83E, .PS, .PPC32, {}} }, .PS_MUL_DOT = { {.PS_MUL_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x10000033, 0xFC00F83F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MULS0 = { {.PS_MULS0, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x10000018, 0xFC00F83E, .PS, .PPC32, {}} }, .PS_MULS0_DOT = { {.PS_MULS0_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x10000019, 0xFC00F83F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MULS1 = { {.PS_MULS1, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x1000001A, 0xFC00F83E, .PS, .PPC32, {}} }, .PS_MULS1_DOT = { {.PS_MULS1_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRC, .NONE}, 0x1000001B, 0xFC00F83F, .PS, .PPC32, {sets_cr1=true}} }, // ---- A-form 4-op (FRT, FRA, FRC, FRB) — full A-form ---- .PS_SEL = { {.PS_SEL, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000002E, 0xFC00003E, .PS, .PPC32, {}} }, .PS_SEL_DOT = { {.PS_SEL_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000002F, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MSUB = { {.PS_MSUB, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000038, 0xFC00003E, .PS, .PPC32, {}} }, .PS_MSUB_DOT = { {.PS_MSUB_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000039, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MADD = { {.PS_MADD, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003A, 0xFC00003E, .PS, .PPC32, {}} }, .PS_MADD_DOT = { {.PS_MADD_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003B, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_NMSUB = { {.PS_NMSUB, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003C, 0xFC00003E, .PS, .PPC32, {}} }, .PS_NMSUB_DOT = { {.PS_NMSUB_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003D, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_NMADD = { {.PS_NMADD, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003E, 0xFC00003E, .PS, .PPC32, {}} }, .PS_NMADD_DOT = { {.PS_NMADD_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000003F, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_SUM0 = { {.PS_SUM0, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000014, 0xFC00003E, .PS, .PPC32, {}} }, .PS_SUM0_DOT = { {.PS_SUM0_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000015, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_SUM1 = { {.PS_SUM1, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000016, 0xFC00003E, .PS, .PPC32, {}} }, .PS_SUM1_DOT = { {.PS_SUM1_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x10000017, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MADDS0 = { {.PS_MADDS0, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000001C, 0xFC00003E, .PS, .PPC32, {}} }, .PS_MADDS0_DOT = { {.PS_MADDS0_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000001D, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, .PS_MADDS1 = { {.PS_MADDS1, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000001E, 0xFC00003E, .PS, .PPC32, {}} }, .PS_MADDS1_DOT = { {.PS_MADDS1_DOT, {.FPR, .FPR, .FPR, .FPR}, {.FRT, .FRA, .FRC, .FRB}, 0x1000001F, 0xFC00003F, .PS, .PPC32, {sets_cr1=true}} }, // ---- A-form 2-op (FRT, FRB) — FRA=0 + FRC=0 baked ---- .PS_RES = { {.PS_RES, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000030, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_RES_DOT = { {.PS_RES_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000031, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_RSQRTE = { {.PS_RSQRTE, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000034, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_RSQRTE_DOT = { {.PS_RSQRTE_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000035, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, // ---- X-form unary (FRT, FRB) — FRA=0 baked, XO at bits 1..10 ---- .PS_NEG = { {.PS_NEG, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000050, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_NEG_DOT = { {.PS_NEG_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000051, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_MR = { {.PS_MR, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000090, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_MR_DOT = { {.PS_MR_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000091, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_NABS = { {.PS_NABS, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000110, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_NABS_DOT = { {.PS_NABS_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000111, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_ABS = { {.PS_ABS, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000210, 0xFC1F07FE, .PS, .PPC32, {}} }, .PS_ABS_DOT = { {.PS_ABS_DOT, {.FPR, .FPR, .NONE,.NONE}, {.FRT, .FRB, .NONE,.NONE}, 0x10000211, 0xFC1F07FF, .PS, .PPC32, {sets_cr1=true}} }, // ---- X-form compare (BF, FRA, FRB) — XO at bits 1..10 ---- .PS_CMPU0 = { {.PS_CMPU0, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0x10000000, 0xFC6007FE, .PS, .PPC32, {}} }, .PS_CMPO0 = { {.PS_CMPO0, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0x10000040, 0xFC6007FE, .PS, .PPC32, {}} }, .PS_CMPU1 = { {.PS_CMPU1, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0x10000080, 0xFC6007FE, .PS, .PPC32, {}} }, .PS_CMPO1 = { {.PS_CMPO1, {.CR_FIELD, .FPR, .FPR, .NONE}, {.BF, .FRA, .FRB, .NONE}, 0x100000C0, 0xFC6007FE, .PS, .PPC32, {}} }, // ---- X-form merge (FRT, FRA, FRB) — XOPS form ---- .PS_MERGE00 = { {.PS_MERGE00, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000420, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_MERGE00_DOT = { {.PS_MERGE00_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000421, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_MERGE01 = { {.PS_MERGE01, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000460, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_MERGE01_DOT = { {.PS_MERGE01_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x10000461, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_MERGE10 = { {.PS_MERGE10, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x100004A0, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_MERGE10_DOT = { {.PS_MERGE10_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x100004A1, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, .PS_MERGE11 = { {.PS_MERGE11, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x100004E0, 0xFC0007FE, .PS, .PPC32, {}} }, .PS_MERGE11_DOT = { {.PS_MERGE11_DOT, {.FPR, .FPR, .FPR, .NONE}, {.FRT, .FRA, .FRB, .NONE}, 0x100004E1, 0xFC0007FF, .PS, .PPC32, {sets_cr1=true}} }, // ---- XW-form quantized indexed (FRT, RA, RB) — W=0, I=0 baked ---- // The W (bit 10) and I (bits 7..9) fields select GQR0-7 and quantization // mode. Mask covers them; users needing non-default GQR construct manually. .PSQ_LX = { {.PSQ_LX, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_X, .NONE,.NONE}, 0x1000000C, 0xFC0007FE, .PS, .PPC32, {}} }, .PSQ_LUX = { {.PSQ_LUX, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_X, .NONE,.NONE}, 0x1000004C, 0xFC0007FE, .PS, .PPC32, {}} }, .PSQ_STX = { {.PSQ_STX, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_X, .NONE,.NONE}, 0x1000000E, 0xFC0007FE, .PS, .PPC32, {}} }, .PSQ_STUX = { {.PSQ_STUX, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_X, .NONE,.NONE}, 0x1000004E, 0xFC0007FE, .PS, .PPC32, {}} }, // ---- D-form quantized (FRT, D(RA)) — W=0, I=0 baked; mask covers ---- // bits 12..15. The OFFSET_BASE_D encoder packs RA at 16..20 and the // (potentially-16-bit) D at 0..15; users must keep D within signed 12-bit // range for these forms (mask covers bits 12..15 so anything larger gets // rejected by the mask check on round-trip). .PSQ_L = { {.PSQ_L, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE,.NONE}, 0xE0000000, 0xFC00F000, .PS, .PPC32, {}} }, .PSQ_LU = { {.PSQ_LU, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE,.NONE}, 0xE4000000, 0xFC00F000, .PS, .PPC32, {}} }, .PSQ_ST = { {.PSQ_ST, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE,.NONE}, 0xF0000000, 0xFC00F000, .PS, .PPC32, {}} }, .PSQ_STU = { {.PSQ_STU, {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE,.NONE}, 0xF4000000, 0xFC00F000, .PS, .PPC32, {}} }, // ========================================================================= // §42 VMX128 (Xenon — Xbox 360 vector extension) // ========================================================================= // Bake-everything entries (mask=0xFFFFFFFE for non-cmp ops, 0xFFFFFFFF for // compare/_dot). Bit patterns from xenia's Xbox 360 disassembler tables. // VR128 register safe-fill: vr2 baked into VRT slot, vr3 into VRA, vr4 into // VRB. Users wanting different register pairings must edit bits manually. // // NOTE: bit patterns reverse-engineered, NOT LLVM-verified. May need // adjustment against real Xbox 360 binaries; cross-check with xenia. // ---- Arithmetic / FP (primary 5, VX128 form) ---- .VADDFP128 = { {.VADDFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642010, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSUBFP128 = { {.VSUBFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642050, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMULFP128 = { {.VMULFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642090, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMADDFP128 = { {.VMADDFP128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642110, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMADDCFP128 = { {.VMADDCFP128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642190, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VNMSUBFP128 = { {.VNMSUBFP128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642210, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMSUM3FP128 = { {.VMSUM3FP128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642290, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMSUM4FP128 = { {.VMSUM4FP128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642310, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMAXFP128 = { {.VMAXFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642390, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMINFP128 = { {.VMINFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146423D0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VREFP128 = { {.VREFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600630, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VRSQRTEFP128 = { {.VRSQRTEFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600670, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VEXPTEFP128 = { {.VEXPTEFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146006B0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VLOGEFP128 = { {.VLOGEFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146006F0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Logical (VX128) ---- .VAND128 = { {.VAND128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642410, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VANDC128 = { {.VANDC128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642450, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VOR128 = { {.VOR128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642490, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VXOR128 = { {.VXOR128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146424D0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VNOR128 = { {.VNOR128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642510, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSEL128 = { {.VSEL128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642550, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Compare ---- .VCMPEQFP128 = { {.VCMPEQFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642000, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCMPEQFP128_DOT = { {.VCMPEQFP128_DOT, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642001, 0xFFFFFFFF, .VMX128, .PPC32, {sets_cr0=true}} }, .VCMPGEFP128 = { {.VCMPGEFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642040, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCMPGEFP128_DOT = { {.VCMPGEFP128_DOT, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642041, 0xFFFFFFFF, .VMX128, .PPC32, {sets_cr0=true}} }, .VCMPGTFP128 = { {.VCMPGTFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642080, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCMPGTFP128_DOT = { {.VCMPGTFP128_DOT, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642081, 0xFFFFFFFF, .VMX128, .PPC32, {sets_cr0=true}} }, .VCMPBFP128 = { {.VCMPBFP128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x186420C0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCMPBFP128_DOT = { {.VCMPBFP128_DOT, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x186420C1, 0xFFFFFFFF, .VMX128, .PPC32, {sets_cr0=true}} }, .VCMPEQUW128 = { {.VCMPEQUW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642100, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCMPEQUW128_DOT = { {.VCMPEQUW128_DOT, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642101, 0xFFFFFFFF, .VMX128, .PPC32, {sets_cr0=true}} }, // ---- Rounding (FRT, FRB; FRA=0) ---- .VRFIM128 = { {.VRFIM128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600030, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VRFIN128 = { {.VRFIN128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600070, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VRFIP128 = { {.VRFIP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146000B0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VRFIZ128 = { {.VRFIZ128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146000F0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Convert ---- .VCFPSXWS128 = { {.VCFPSXWS128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600230, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCFPUXWS128 = { {.VCFPUXWS128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14600270, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCSXWFP128 = { {.VCSXWFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146002B0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VCUXWFP128 = { {.VCUXWFP128, {.VR128, .VR128, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146002F0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Splat / merge / permute ---- .VSPLTW128 = { {.VSPLTW128, {.VR128, .VR128, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642330, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSPLTISW128 = { {.VSPLTISW128, {.VR128, .IMM, .NONE,.NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18601370, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMRGHW128 = { {.VMRGHW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642330, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VMRGLW128 = { {.VMRGLW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642370, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VPKD3D128 = { {.VPKD3D128, {.VR128, .VR128, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x18642630, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VUPKD3D128 = { {.VUPKD3D128, {.VR128, .VR128, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x186023F0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VPERM128 = { {.VPERM128, {.VR128, .VR128, .VR128, .VR128}, {.NONE,.NONE,.NONE,.NONE}, 0x14642D90, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VPERMWI128 = { {.VPERMWI128, {.VR128, .VR128, .IMM, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x18642730, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VRLIMI128 = { {.VRLIMI128, {.VR128, .VR128, .IMM, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x18642790, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSLDOI128 = { {.VSLDOI128, {.VR128, .VR128, .VR128, .IMM}, {.NONE,.NONE,.NONE,.NONE}, 0x14642010, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Shift / rotate ---- .VRLW128 = { {.VRLW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642210, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSLW128 = { {.VSLW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642250, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSRW128 = { {.VSRW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x14642290, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, .VSRAW128 = { {.VSRAW128, {.VR128, .VR128, .VR128, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x146422D0, 0xFFFFFFFE, .VMX128, .PPC32, {}} }, // ---- Memory (load/store) — primary 31 X-form indexed ---- .LVEBX128 = { {.LVEBX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44280D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVEHX128 = { {.LVEHX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44284D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVEWX128 = { {.LVEWX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44288D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVX128 = { {.LVX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4428CD, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVXL128 = { {.LVXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4428CF, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVLX128 = { {.LVLX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D0D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVRX128 = { {.LVRX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D4D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVLXL128 = { {.LVLXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D0F, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .LVRXL128 = { {.LVRXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D4F, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVEBX128 = { {.STVEBX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44290D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVEHX128 = { {.STVEHX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44294D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVEWX128 = { {.STVEWX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C44298D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVX128 = { {.STVX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4429CD, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVXL128 = { {.STVXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C4429CF, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVLX128 = { {.STVLX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D8D, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVRX128 = { {.STVRX128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442DCD, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVLXL128 = { {.STVLXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442D8F, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, .STVRXL128 = { {.STVRXL128, {.VR128, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7C442DCF, 0xFFFFFFFF, .VMX128, .PPC32, {}} }, // ========================================================================= // §43 Remaining binutils PPC categories (518 entries, auto-extracted) // ========================================================================= .TI = { {.TI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x0C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULHHWU = { {.MULHHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000010, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULHHWU_DOT = { {.MULHHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000011, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWU = { {.MACHHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000018, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWU_DOT = { {.MACHHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000019, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULHHW = { {.MULHHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000050, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULHHW_DOT = { {.MULHHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000051, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHW = { {.MACHHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000058, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHW_DOT = { {.MACHHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000059, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACHHW = { {.NMACHHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000005C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACHHW_DOT = { {.NMACHHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000005D, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWSU = { {.MACHHWSU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000098, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWSU_DOT = { {.MACHHWSU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000099, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWS = { {.MACHHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100000D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWS_DOT = { {.MACHHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100000D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACHHWS = { {.NMACHHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100000DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACHHWS_DOT = { {.NMACHHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100000DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .VADDUQM = { {.VADDUQM , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000100, 0xFC0007FE, .BASE, .PPC32, {}} }, .VCMPUQ = { {.VCMPUQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000101, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULCHWU = { {.MULCHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000110, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULCHWU_DOT = { {.MULCHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000111, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHWU = { {.MACCHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000118, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWU_DOT = { {.MACCHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000119, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPSQ = { {.VCMPSQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000141, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULCHW = { {.MULCHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000150, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULCHW_DOT = { {.MULCHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000151, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHW = { {.MACCHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000158, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHW_DOT = { {.MACCHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000159, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACCHW = { {.NMACCHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000015C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACCHW_DOT = { {.NMACCHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000015D, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHWSU = { {.MACCHWSU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000198, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWSU_DOT = { {.MACCHWSU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000199, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPEQUQ = { {.VCMPEQUQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100001C7, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWS = { {.MACCHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100001D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWS_DOT = { {.MACCHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100001D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACCHWS = { {.NMACCHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100001DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACCHWS_DOT = { {.NMACCHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100001DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPGTUQ = { {.VCMPGTUQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000287, 0xFC0007FE, .BASE, .PPC32, {}} }, .VCUXWFP = { {.VCUXWFP , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000030A, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULLHWU = { {.MULLHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000310, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULLHWU_DOT = { {.MULLHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000311, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHWU = { {.MACLHWU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000318, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWU_DOT = { {.MACLHWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000319, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCSXWFP = { {.VCSXWFP , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000034A, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULLHW = { {.MULLHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000350, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULLHW_DOT = { {.MULLHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000351, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHW = { {.MACLHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000358, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHW_DOT = { {.MACLHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000359, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACLHW = { {.NMACLHW , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000035C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACLHW_DOT = { {.NMACLHW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000035D, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPGTSQ = { {.VCMPGTSQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000387, 0xFC0007FE, .BASE, .PPC32, {}} }, .VCFPUXWS = { {.VCFPUXWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000038A, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWSU = { {.MACLHWSU , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000398, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWSU_DOT = { {.MACLHWSU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000399, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCFPSXWS = { {.VCFPSXWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100003CA, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWS = { {.MACLHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100003D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWS_DOT = { {.MACLHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100003D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACLHWS = { {.NMACLHWS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100003DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACLHWS_DOT = { {.NMACLHWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100003DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWUO = { {.MACHHWUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000418, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWUO_DOT = { {.MACHHWUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000419, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWO = { {.MACHHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000458, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWO_DOT = { {.MACHHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000459, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACHHWO = { {.NMACHHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000045C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACHHWO_DOT = { {.NMACHHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000045D, 0xFC0007FF, .BASE, .PPC32, {}} }, .VMR = { {.VMR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000484, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWSUO = { {.MACHHWSUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000498, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWSUO_DOT = { {.MACHHWSUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000499, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACHHWSO = { {.MACHHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100004D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACHHWSO_DOT = { {.MACHHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100004D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACHHWSO = { {.NMACHHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100004DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACHHWSO_DOT = { {.NMACHHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100004DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .VSUBUQM = { {.VSUBUQM , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000500, 0xFC0007FE, .BASE, .PPC32, {}} }, .VNOT = { {.VNOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000504, 0xFC0007FE, .BASE, .PPC32, {}} }, .VGBBD = { {.VGBBD , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000050C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWUO = { {.MACCHWUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000518, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWUO_DOT = { {.MACCHWUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000519, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHWO = { {.MACCHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000558, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWO_DOT = { {.MACCHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000559, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACCHWO = { {.NMACCHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000055C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACCHWO_DOT = { {.NMACCHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000055D, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHWSUO = { {.MACCHWSUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000598, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWSUO_DOT = { {.MACCHWSUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000599, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPEQUQ_DOT = { {.VCMPEQUQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100005C7, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACCHWSO = { {.MACCHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100005D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACCHWSO_DOT = { {.MACCHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100005D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACCHWSO = { {.NMACCHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100005DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACCHWSO_DOT = { {.NMACCHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100005DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPGTUQ_DOT = { {.VCMPGTUQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000687, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHWUO = { {.MACLHWUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000718, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWUO_DOT = { {.MACLHWUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000719, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHWO = { {.MACLHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000758, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWO_DOT = { {.MACLHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000759, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACLHWO = { {.NMACLHWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000075C, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACLHWO_DOT = { {.NMACLHWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000075D, 0xFC0007FF, .BASE, .PPC32, {}} }, .VCMPGTSQ_DOT = { {.VCMPGTSQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000787, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHWSUO = { {.MACLHWSUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000798, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWSUO_DOT = { {.MACLHWSUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000799, 0xFC0007FF, .BASE, .PPC32, {}} }, .MACLHWSO = { {.MACLHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100007D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .MACLHWSO_DOT = { {.MACLHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100007D9, 0xFC0007FF, .BASE, .PPC32, {}} }, .NMACLHWSO = { {.NMACLHWSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100007DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .NMACLHWSO_DOT = { {.NMACLHWSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100007DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .DCBZ_L = { {.DCBZ_L , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x100007EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULI = { {.MULI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x1C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFI = { {.SFI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x20000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZI = { {.DOZI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x24000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .AI = { {.AI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x30000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBIC = { {.SUBIC , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x30000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .AI_DOT = { {.AI_DOT , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x34000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .SUBIC_DOT = { {.SUBIC_DOT , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x34000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .LIL = { {.LIL , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x38000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .CAL = { {.CAL , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x38000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBI = { {.SUBI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x38000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .LIU = { {.LIU , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x3C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .CAU = { {.CAU , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x3C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBIS = { {.SUBIS , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x3C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .CRNOT = { {.CRNOT , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .RFCI = { {.RFCI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .POWER8, .PPC32, {}} }, .RFSCV = { {.RFSCV , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .RFSVC = { {.RFSVC , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .RFGI = { {.RFGI , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .POWER8, .PPC32, {}} }, .ICS = { {.ICS , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .CRCLR = { {.CRCLR , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .DNH = { {.DNH , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .CRSET = { {.CRSET , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .URFID = { {.URFID , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZE = { {.DOZE , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .CRMOVE = { {.CRMOVE , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLEEP = { {.SLEEP , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .RVWINKLE = { {.RVWINKLE , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x4C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .ORIL = { {.ORIL , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x60000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .ORIU = { {.ORIU , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x64000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .XORIL = { {.XORIL , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x68000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .XORIU = { {.XORIU , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x6C000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .ANDIL_DOT = { {.ANDIL_DOT , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x70000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .ANDIU_DOT = { {.ANDIU_DOT , {.GPR, .GPR, .IMM, .NONE}, {.RT, .RA, .D16, .NONE}, 0x74000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .ROTLDI_DOT = { {.ROTLDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642801, 0xFFFFFFFF, .P64, .PPC64, {}} }, .ROTRDI_DOT = { {.ROTRDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642801, 0xFFFFFFFF, .P64, .PPC64, {}} }, .CLRLDI_DOT = { {.CLRLDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642801, 0xFFFFFFFF, .P64, .PPC64, {}} }, .SRDI_DOT = { {.SRDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642801, 0xFFFFFFFF, .P64, .PPC64, {}} }, .EXTRDI_DOT = { {.EXTRDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642801, 0xFFFFFFFF, .P64, .PPC64, {}} }, .CLRRDI_DOT = { {.CLRRDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642805, 0xFFFFFFFF, .P64, .PPC64, {}} }, .SLDI_DOT = { {.SLDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642805, 0xFFFFFFFF, .P64, .PPC64, {}} }, .EXTLDI_DOT = { {.EXTLDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642805, 0xFFFFFFFF, .P64, .PPC64, {}} }, .CLRLSLDI = { {.CLRLSLDI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642808, 0xFFFFFFFE, .P64, .PPC64, {}} }, .CLRLSLDI_DOT = { {.CLRLSLDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642809, 0xFFFFFFFF, .P64, .PPC64, {}} }, .INSRDI = { {.INSRDI , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7864280C, 0xFFFFFFFE, .P64, .PPC64, {}} }, .INSRDI_DOT = { {.INSRDI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x7864280D, 0xFFFFFFFF, .P64, .PPC64, {}} }, .ROTLD_DOT = { {.ROTLD_DOT , {.GPR, .GPR, .GPR, .NONE}, {.NONE,.NONE,.NONE,.NONE}, 0x78642811, 0xFFFFFFFF, .P64, .PPC64, {}} }, .T = { {.T , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000008, 0xFC0007FE, .BASE, .PPC32, {}} }, .SF = { {.SF , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000010, 0xFC0007FE, .BASE, .PPC32, {}} }, .SF_DOT = { {.SF_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000011, 0xFC0007FF, .BASE, .PPC32, {}} }, .A_DOT = { {.A_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000015, 0xFC0007FF, .BASE, .PPC32, {}} }, .LX = { {.LX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00002E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SL = { {.SL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000030, 0xFC0007FE, .BASE, .PPC32, {}} }, .SL_DOT = { {.SL_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000031, 0xFC0007FF, .BASE, .PPC32, {}} }, .CNTLZ = { {.CNTLZ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000034, 0xFC0007FE, .BASE, .PPC32, {}} }, .CNTLZ_DOT = { {.CNTLZ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000035, 0xFC0007FF, .BASE, .PPC32, {}} }, .MASKG = { {.MASKG , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00003A, 0xFC0007FE, .BASE, .PPC32, {}} }, .MASKG_DOT = { {.MASKG_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00003B, 0xFC0007FF, .BASE, .PPC32, {}} }, .LDEPX = { {.LDEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00003A, 0xFC0007FE, .POWER8, .PPC32, {}} }, .WAITASEC = { {.WAITASEC , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00003C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MVIWSPLT = { {.MVIWSPLT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00005C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFVSRD = { {.MFVSRD , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000066, 0xFC0007FE, .BASE, .PPC32, {}} }, .ERATILX = { {.ERATILX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000066, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LUX = { {.LUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00006E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBWUS = { {.SUBWUS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000090, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBWUS_DOT = { {.SUBWUS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000091, 0xFC0007FF, .BASE, .PPC32, {}} }, .SUBDUS = { {.SUBDUS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000490, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBDUS_DOT = { {.SUBDUS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000491, 0xFC0007FF, .BASE, .PPC32, {}} }, .SUBFUS = { {.SUBFUS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000090, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFUS_DOT = { {.SUBFUS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000091, 0xFC0007FF, .BASE, .PPC32, {}} }, .DLMZB = { {.DLMZB , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00009C, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .DLMZB_DOT = { {.DLMZB_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00009D, 0xFC0007FF, .BOOKE, .PPC32, {}} }, .DNI = { {.DNI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000C3, 0xFC0007FE, .BASE, .PPC32, {}} }, .MUL = { {.MUL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MUL_DOT = { {.MUL_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .MVIDSPLT = { {.MVIDSPLT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTSRDIN = { {.MTSRDIN , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000E4, 0xFC0007FE, .P64, .PPC64, {}} }, .MFVSRWZ = { {.MFVSRWZ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000E6, 0xFC0007FE, .BASE, .PPC32, {}} }, .CLF = { {.CLF , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0000EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBTSTLS = { {.DCBTSTLS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00010C, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .SFE = { {.SFE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000110, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFE_DOT = { {.SFE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000111, 0xFC0007FF, .BASE, .PPC32, {}} }, .AE = { {.AE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000114, 0xFC0007FE, .BASE, .PPC32, {}} }, .AE_DOT = { {.AE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000115, 0xFC0007FF, .BASE, .PPC32, {}} }, .DCBTSTLSE = { {.DCBTSTLSE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00011C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTSLE = { {.MTSLE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000126, 0xFC0007FE, .BASE, .PPC32, {}} }, .ERATSX = { {.ERATSX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000126, 0xFC0007FE, .POWER8, .PPC32, {}} }, .ERATSX_DOT = { {.ERATSX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000127, 0xFC0007FF, .POWER8, .PPC32, {}} }, .STX = { {.STX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00012E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLQ = { {.SLQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000130, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLQ_DOT = { {.SLQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000131, 0xFC0007FF, .BASE, .PPC32, {}} }, .SLE = { {.SLE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000132, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLE_DOT = { {.SLE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000133, 0xFC0007FF, .BASE, .PPC32, {}} }, .STDEPX = { {.STDEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00013A, 0xFC0007FE, .POWER8, .PPC32, {}} }, .DCBTLS = { {.DCBTLS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00014C, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .DCBTLSE = { {.DCBTLSE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00015C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTVSRD = { {.MTVSRD , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000166, 0xFC0007FE, .BASE, .PPC32, {}} }, .ERATRE = { {.ERATRE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000166, 0xFC0007FE, .POWER8, .PPC32, {}} }, .WCHKALL = { {.WCHKALL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00016C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .STUX = { {.STUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00016E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLIQ = { {.SLIQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000170, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLIQ_DOT = { {.SLIQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000171, 0xFC0007FF, .BASE, .PPC32, {}} }, .ICBLQ_DOT = { {.ICBLQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00018D, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFZE = { {.SFZE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000190, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFZE_DOT = { {.SFZE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000191, 0xFC0007FF, .BASE, .PPC32, {}} }, .AZE = { {.AZE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000194, 0xFC0007FE, .BASE, .PPC32, {}} }, .AZE_DOT = { {.AZE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000195, 0xFC0007FF, .BASE, .PPC32, {}} }, .MTVSRWA = { {.MTVSRWA , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001A6, 0xFC0007FE, .BASE, .PPC32, {}} }, .ERATWE = { {.ERATWE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001A6, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LDAWX_DOT = { {.LDAWX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001A9, 0xFC0007FF, .POWER8, .PPC32, {}} }, .SLLQ = { {.SLLQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001B0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLLQ_DOT = { {.SLLQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001B1, 0xFC0007FF, .BASE, .PPC32, {}} }, .SLEQ = { {.SLEQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001B2, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLEQ_DOT = { {.SLEQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001B3, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFME = { {.SFME , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFME_DOT = { {.SFME_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .AME = { {.AME , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D4, 0xFC0007FE, .BASE, .PPC32, {}} }, .AME_DOT = { {.AME_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D5, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULS = { {.MULS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULS_DOT = { {.MULS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .ICBLCE = { {.ICBLCE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTSRI = { {.MTSRI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001E4, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTVSRWZ = { {.MTVSRWZ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001E6, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBTSTCT = { {.DCBTSTCT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBTSTDS = { {.DCBTSTDS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLLIQ = { {.SLLIQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001F0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SLLIQ_DOT = { {.SLLIQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0001F1, 0xFC0007FF, .BASE, .PPC32, {}} }, .MFDCRX = { {.MFDCRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000206, 0xFC0007FE, .POWER8, .PPC32, {}} }, .MFDCRX_DOT = { {.MFDCRX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000207, 0xFC0007FF, .POWER8, .PPC32, {}} }, .LVEXBX = { {.LVEXBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00020A, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVEPXL = { {.LVEPXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00020E, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZ = { {.DOZ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000210, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZ_DOT = { {.DOZ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000211, 0xFC0007FF, .BASE, .PPC32, {}} }, .CAX = { {.CAX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000214, 0xFC0007FE, .BASE, .PPC32, {}} }, .CAX_DOT = { {.CAX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000215, 0xFC0007FF, .BASE, .PPC32, {}} }, .EHPRIV = { {.EHPRIV , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00021C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .MFAPIDI = { {.MFAPIDI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000226, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LSCBX = { {.LSCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00022A, 0xFC0007FE, .BASE, .PPC32, {}} }, .LSCBX_DOT = { {.LSCBX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00022B, 0xFC0007FF, .BASE, .PPC32, {}} }, .DCBTCT = { {.DCBTCT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00022C, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBTDS = { {.DCBTDS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00022C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFDCRUX = { {.MFDCRUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000246, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LVEXHX = { {.LVEXHX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00024A, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVEPX = { {.LVEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00024E, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFBHRBE = { {.MFBHRBE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00025C, 0xFC0007FE, .BASE, .PPC32, {}} }, .TLBI = { {.TLBI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000264, 0xFC0007FE, .BASE, .PPC32, {}} }, .ECIWX = { {.ECIWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00026C, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFDCR_DOT = { {.MFDCR_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000287, 0xFC0007FF, .POWER8, .PPC32, {}} }, .LVEXWX = { {.LVEXWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00028A, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCREAD = { {.DCREAD , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00028C, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .DIV = { {.DIV , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000296, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIV_DOT = { {.DIV_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000297, 0xFC0007FF, .BASE, .PPC32, {}} }, .MFTMR = { {.MFTMR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .ABS = { {.ABS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .ABS_DOT = { {.ABS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .DIVS = { {.DIVS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVS_DOT = { {.DIVS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .LXVWSX = { {.LXVWSX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002D8, 0xFC0007FE, .BASE, .PPC32, {}} }, .TLBIA = { {.TLBIA , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0002E4, 0xFC0007FE, .BASE, .PPC32, {}} }, .SETBC = { {.SETBC , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000300, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTDCRX = { {.MTDCRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000306, 0xFC0007FE, .POWER8, .PPC32, {}} }, .MTDCRX_DOT = { {.MTDCRX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000307, 0xFC0007FF, .POWER8, .PPC32, {}} }, .STVEXBX = { {.STVEXBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00030A, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBLC = { {.DCBLC , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00030C, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .DCBLCE = { {.DCBLCE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00031C, 0xFC0007FE, .BASE, .PPC32, {}} }, .PBT_DOT = { {.PBT_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000329, 0xFC0007FF, .BASE, .PPC32, {}} }, .ICSWX = { {.ICSWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00032C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .ICSWX_DOT = { {.ICSWX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00032D, 0xFC0007FF, .POWER8, .PPC32, {}} }, .SETBCR = { {.SETBCR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000340, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTDCRUX = { {.MTDCRUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000346, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVEXHX = { {.STVEXHX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00034A, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCBLQ_DOT = { {.DCBLQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00034D, 0xFC0007FF, .BASE, .PPC32, {}} }, .CLRBHRB = { {.CLRBHRB , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00035C, 0xFC0007FE, .BASE, .PPC32, {}} }, .ECOWX = { {.ECOWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00036C, 0xFC0007FE, .BASE, .PPC32, {}} }, .SETNBC = { {.SETNBC , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000380, 0xFC0007FE, .BASE, .PPC32, {}} }, .MTDCR_DOT = { {.MTDCR_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000387, 0xFC0007FF, .POWER8, .PPC32, {}} }, .STVEXWX = { {.STVEXWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00038A, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCI = { {.DCI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00038C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .MTTMR = { {.MTTMR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .SETNBCR = { {.SETNBCR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003C0, 0xFC0007FE, .BASE, .PPC32, {}} }, .DSN = { {.DSN , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003C6, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .NABS = { {.NABS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .NABS_DOT = { {.NABS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .ICBTLSE = { {.ICBTLSE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003DC, 0xFC0007FE, .BASE, .PPC32, {}} }, .CLI = { {.CLI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0003EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .MCRXR = { {.MCRXR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000400, 0xFC0007FE, .BASE, .PPC32, {}} }, .LBDCBX = { {.LBDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000404, 0xFC0007FE, .BASE, .PPC32, {}} }, .LBDX = { {.LBDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000406, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .BBLELS = { {.BBLELS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00040C, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVLX = { {.LVLX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00040E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFCO = { {.SUBFCO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000410, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFO = { {.SFO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000410, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBCO = { {.SUBCO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000410, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFCO_DOT = { {.SUBFCO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000411, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFO_DOT = { {.SFO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000411, 0xFC0007FF, .BASE, .PPC32, {}} }, .SUBCO_DOT = { {.SUBCO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000411, 0xFC0007FF, .BASE, .PPC32, {}} }, .ADDCO = { {.ADDCO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000414, 0xFC0007FE, .BASE, .PPC32, {}} }, .AO = { {.AO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000414, 0xFC0007FE, .BASE, .PPC32, {}} }, .ADDCO_DOT = { {.ADDCO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000415, 0xFC0007FF, .BASE, .PPC32, {}} }, .AO_DOT = { {.AO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000415, 0xFC0007FF, .BASE, .PPC32, {}} }, .CLCS = { {.CLCS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000426, 0xFC0007FE, .BASE, .PPC32, {}} }, .LSX = { {.LSX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00042A, 0xFC0007FE, .BASE, .PPC32, {}} }, .LBRX = { {.LBRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00042C, 0xFC0007FE, .BASE, .PPC32, {}} }, .SR_DOT = { {.SR_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000431, 0xFC0007FF, .BASE, .PPC32, {}} }, .RRIB = { {.RRIB , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000432, 0xFC0007FE, .BASE, .PPC32, {}} }, .RRIB_DOT = { {.RRIB_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000433, 0xFC0007FF, .BASE, .PPC32, {}} }, .MASKIR = { {.MASKIR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00043A, 0xFC0007FE, .BASE, .PPC32, {}} }, .MASKIR_DOT = { {.MASKIR_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00043B, 0xFC0007FF, .BASE, .PPC32, {}} }, .LHDCBX = { {.LHDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000444, 0xFC0007FE, .BASE, .PPC32, {}} }, .LHDX = { {.LHDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000446, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LVTRX = { {.LVTRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00044A, 0xFC0007FE, .BASE, .PPC32, {}} }, .BBELR = { {.BBELR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00044C, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVRX = { {.LVRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00044E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFO = { {.SUBFO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000450, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBO = { {.SUBO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000450, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFO_DOT = { {.SUBFO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000451, 0xFC0007FF, .BASE, .PPC32, {}} }, .SUBO_DOT = { {.SUBO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000451, 0xFC0007FF, .BASE, .PPC32, {}} }, .LWDCBX = { {.LWDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000484, 0xFC0007FE, .BASE, .PPC32, {}} }, .LWDX = { {.LWDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000486, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LVTLX = { {.LVTLX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00048A, 0xFC0007FE, .BASE, .PPC32, {}} }, .LSI = { {.LSI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004AA, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCS = { {.DCS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004AC, 0xFC0007FE, .BASE, .PPC32, {}} }, .MFFGPR = { {.MFFGPR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004BE, 0xFC0007FE, .BASE, .PPC32, {}} }, .LDDX = { {.LDDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004C6, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LVSWX = { {.LVSWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004CA, 0xFC0007FE, .BASE, .PPC32, {}} }, .NEGO = { {.NEGO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .NEGO_DOT = { {.NEGO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULO = { {.MULO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULO_DOT = { {.MULO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .MFSRI = { {.MFSRI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004E6, 0xFC0007FE, .BASE, .PPC32, {}} }, .DCLST = { {.DCLST , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0004EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .STBDCBX = { {.STBDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000504, 0xFC0007FE, .BASE, .PPC32, {}} }, .STBDX = { {.STBDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000506, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVLX = { {.STVLX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00050E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFEO = { {.SUBFEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000510, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFEO = { {.SFEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000510, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFEO_DOT = { {.SUBFEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000511, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFEO_DOT = { {.SFEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000511, 0xFC0007FF, .BASE, .PPC32, {}} }, .ADDEO = { {.ADDEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000514, 0xFC0007FE, .BASE, .PPC32, {}} }, .AEO = { {.AEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000514, 0xFC0007FE, .BASE, .PPC32, {}} }, .ADDEO_DOT = { {.ADDEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000515, 0xFC0007FF, .BASE, .PPC32, {}} }, .AEO_DOT = { {.AEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000515, 0xFC0007FF, .BASE, .PPC32, {}} }, .HASHSTP = { {.HASHSTP , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000524, 0xFC0007FE, .BASE, .PPC32, {}} }, .STSX = { {.STSX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00052A, 0xFC0007FE, .BASE, .PPC32, {}} }, .STBRX = { {.STBRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00052C, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRQ = { {.SRQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000530, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRQ_DOT = { {.SRQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000531, 0xFC0007FF, .BASE, .PPC32, {}} }, .SRE = { {.SRE , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000532, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRE_DOT = { {.SRE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000533, 0xFC0007FF, .BASE, .PPC32, {}} }, .STHDCBX = { {.STHDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000544, 0xFC0007FE, .BASE, .PPC32, {}} }, .STHDX = { {.STHDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000546, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVFRX = { {.STVFRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00054A, 0xFC0007FE, .BASE, .PPC32, {}} }, .STVRX = { {.STVRX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00054E, 0xFC0007FE, .BASE, .PPC32, {}} }, .HASHCHKP = { {.HASHCHKP , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000564, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRIQ = { {.SRIQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000570, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRIQ_DOT = { {.SRIQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000571, 0xFC0007FF, .BASE, .PPC32, {}} }, .STWDCBX = { {.STWDCBX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000584, 0xFC0007FE, .BASE, .PPC32, {}} }, .STWDX = { {.STWDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000586, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVFLX = { {.STVFLX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00058A, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFZEO = { {.SUBFZEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000590, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFZEO = { {.SFZEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000590, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFZEO_DOT = { {.SUBFZEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000591, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFZEO_DOT = { {.SFZEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000591, 0xFC0007FF, .BASE, .PPC32, {}} }, .ADDZEO = { {.ADDZEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000594, 0xFC0007FE, .BASE, .PPC32, {}} }, .AZEO = { {.AZEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000594, 0xFC0007FE, .BASE, .PPC32, {}} }, .ADDZEO_DOT = { {.ADDZEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000595, 0xFC0007FF, .BASE, .PPC32, {}} }, .AZEO_DOT = { {.AZEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000595, 0xFC0007FF, .BASE, .PPC32, {}} }, .HASHST = { {.HASHST , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005A4, 0xFC0007FE, .BASE, .PPC32, {}} }, .STSI = { {.STSI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005AA, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRLQ = { {.SRLQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005B0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRLQ_DOT = { {.SRLQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005B1, 0xFC0007FF, .BASE, .PPC32, {}} }, .SREQ = { {.SREQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005B2, 0xFC0007FE, .BASE, .PPC32, {}} }, .SREQ_DOT = { {.SREQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005B3, 0xFC0007FF, .BASE, .PPC32, {}} }, .MFTGPR = { {.MFTGPR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005BE, 0xFC0007FE, .BASE, .PPC32, {}} }, .STDDX = { {.STDDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005C6, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVSWX = { {.STVSWX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005CA, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFMEO = { {.SUBFMEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SFMEO = { {.SFMEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SUBFMEO_DOT = { {.SUBFMEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .SFMEO_DOT = { {.SFMEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULLDO = { {.MULLDO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D2, 0xFC0007FE, .P64, .PPC64, {}} }, .MULLDO_DOT = { {.MULLDO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D3, 0xFC0007FF, .P64, .PPC64, {}} }, .ADDMEO = { {.ADDMEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D4, 0xFC0007FE, .BASE, .PPC32, {}} }, .AMEO = { {.AMEO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D4, 0xFC0007FE, .BASE, .PPC32, {}} }, .ADDMEO_DOT = { {.ADDMEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D5, 0xFC0007FF, .BASE, .PPC32, {}} }, .AMEO_DOT = { {.AMEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D5, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULLWO = { {.MULLWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULSO = { {.MULSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .MULLWO_DOT = { {.MULLWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .MULSO_DOT = { {.MULSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .TSR_DOT = { {.TSR_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005DD, 0xFC0007FF, .BASE, .PPC32, {}} }, .HASHCHK = { {.HASHCHK , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005E4, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRLIQ = { {.SRLIQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005F0, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRLIQ_DOT = { {.SRLIQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0005F1, 0xFC0007FF, .BASE, .PPC32, {}} }, .LVSM = { {.LVSM , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00060A, 0xFC0007FE, .BASE, .PPC32, {}} }, .STVEPXL = { {.STVEPXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00060E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVLXL = { {.LVLXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00060E, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZO = { {.DOZO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000610, 0xFC0007FE, .BASE, .PPC32, {}} }, .DOZO_DOT = { {.DOZO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000611, 0xFC0007FF, .BASE, .PPC32, {}} }, .ADDO = { {.ADDO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000614, 0xFC0007FE, .BASE, .PPC32, {}} }, .CAXO = { {.CAXO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000614, 0xFC0007FE, .BASE, .PPC32, {}} }, .ADDO_DOT = { {.ADDO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000615, 0xFC0007FF, .BASE, .PPC32, {}} }, .CAXO_DOT = { {.CAXO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000615, 0xFC0007FF, .BASE, .PPC32, {}} }, .LFQX = { {.LFQX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00062E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRA = { {.SRA , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000630, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRA_DOT = { {.SRA_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000631, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVLDDEPX = { {.EVLDDEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00063E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LFDDX = { {.LFDDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000646, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .LVTRXL = { {.LVTRXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00064A, 0xFC0007FE, .BASE, .PPC32, {}} }, .STVEPX = { {.STVEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00064E, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVRXL = { {.LVRXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00064E, 0xFC0007FE, .BASE, .PPC32, {}} }, .RAC = { {.RAC , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000664, 0xFC0007FE, .BASE, .PPC32, {}} }, .ERATIVAX = { {.ERATIVAX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000666, 0xFC0007FE, .POWER8, .PPC32, {}} }, .LFQUX = { {.LFQUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00066E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAI = { {.SRAI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000670, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAI_DOT = { {.SRAI_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000671, 0xFC0007FF, .BASE, .PPC32, {}} }, .LVTLXL = { {.LVTLXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00068A, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVO = { {.DIVO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000696, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVO_DOT = { {.DIVO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000697, 0xFC0007FF, .BASE, .PPC32, {}} }, .TLBSRX_DOT = { {.TLBSRX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006A5, 0xFC0007FF, .POWER8, .PPC32, {}} }, .SLBIAG = { {.SLBIAG , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006A4, 0xFC0007FE, .BASE, .PPC32, {}} }, .LVSWXL = { {.LVSWXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006CA, 0xFC0007FE, .BASE, .PPC32, {}} }, .ABSO = { {.ABSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .ABSO_DOT = { {.ABSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .DIVSO = { {.DIVSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVSO_DOT = { {.DIVSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .RMIEG = { {.RMIEG , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0006E4, 0xFC0007FE, .BASE, .PPC32, {}} }, .STVLXL = { {.STVLXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00070E, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVDEUO_DOT = { {.DIVDEUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000713, 0xFC0007FF, .POWER8, .PPC32, {}} }, .DIVWEUO_DOT = { {.DIVWEUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000717, 0xFC0007FF, .POWER8, .PPC32, {}} }, .TLBSX_DOT = { {.TLBSX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000725, 0xFC0007FF, .POWER8, .PPC32, {}} }, .STFQX = { {.STFQX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00072E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAQ = { {.SRAQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000730, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAQ_DOT = { {.SRAQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000731, 0xFC0007FF, .BASE, .PPC32, {}} }, .SREA = { {.SREA , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000732, 0xFC0007FE, .BASE, .PPC32, {}} }, .SREA_DOT = { {.SREA_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000733, 0xFC0007FF, .BASE, .PPC32, {}} }, .EXTS = { {.EXTS , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000734, 0xFC0007FE, .BASE, .PPC32, {}} }, .EXTS_DOT = { {.EXTS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000735, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSTDDEPX = { {.EVSTDDEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00073E, 0xFC0007FE, .BASE, .PPC32, {}} }, .STFDDX = { {.STFDDX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000746, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .STVFRXL = { {.STVFRXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00074A, 0xFC0007FE, .BASE, .PPC32, {}} }, .WCLRALL = { {.WCLRALL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00074C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .WCLR = { {.WCLR , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00074C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .STVRXL = { {.STVRXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00074E, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVDEO_DOT = { {.DIVDEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000753, 0xFC0007FF, .POWER8, .PPC32, {}} }, .DIVWEO_DOT = { {.DIVWEO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000757, 0xFC0007FF, .POWER8, .PPC32, {}} }, .ICSWEPX = { {.ICSWEPX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00076C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .ICSWEPX_DOT = { {.ICSWEPX_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00076D, 0xFC0007FF, .POWER8, .PPC32, {}} }, .STFQUX = { {.STFQUX , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00076E, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAIQ = { {.SRAIQ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000770, 0xFC0007FE, .BASE, .PPC32, {}} }, .SRAIQ_DOT = { {.SRAIQ_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000771, 0xFC0007FF, .BASE, .PPC32, {}} }, .STVFLXL = { {.STVFLXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00078A, 0xFC0007FE, .BASE, .PPC32, {}} }, .ICI = { {.ICI , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C00078C, 0xFC0007FE, .POWER8, .PPC32, {}} }, .DIVDUO = { {.DIVDUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000792, 0xFC0007FE, .P64, .PPC64, {}} }, .DIVDUO_DOT = { {.DIVDUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000793, 0xFC0007FF, .P64, .PPC64, {}} }, .DIVWUO = { {.DIVWUO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000796, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVWUO_DOT = { {.DIVWUO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C000797, 0xFC0007FF, .BASE, .PPC32, {}} }, .SLBFEE_DOT = { {.SLBFEE_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007A7, 0xFC0007FF, .BASE, .PPC32, {}} }, .STVSWXL = { {.STVSWXL , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007CA, 0xFC0007FE, .BASE, .PPC32, {}} }, .ICREAD = { {.ICREAD , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007CC, 0xFC0007FE, .BOOKE, .PPC32, {}} }, .NABSO = { {.NABSO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D0, 0xFC0007FE, .BASE, .PPC32, {}} }, .NABSO_DOT = { {.NABSO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D1, 0xFC0007FF, .BASE, .PPC32, {}} }, .DIVDO = { {.DIVDO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D2, 0xFC0007FE, .P64, .PPC64, {}} }, .DIVDO_DOT = { {.DIVDO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D3, 0xFC0007FF, .P64, .PPC64, {}} }, .DIVWO = { {.DIVWO , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D6, 0xFC0007FE, .BASE, .PPC32, {}} }, .DIVWO_DOT = { {.DIVWO_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007D7, 0xFC0007FF, .BASE, .PPC32, {}} }, .DCLZ = { {.DCLZ , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x7C0007EC, 0xFC0007FE, .BASE, .PPC32, {}} }, .LU = { {.LU , {.GPR, .MEM, .NONE,.NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x84000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .ST = { {.ST , {.GPR, .MEM, .NONE,.NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x90000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .STU = { {.STU , {.GPR, .MEM, .NONE,.NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0x94000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .LM = { {.LM , {.GPR, .MEM, .NONE,.NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xB8000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .STM = { {.STM , {.GPR, .MEM, .NONE,.NONE}, {.RT, .OFFSET_BASE_D, .NONE, .NONE}, 0xBC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .LFQ = { {.LFQ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xE0000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .LFQU = { {.LFQU , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xE4000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .STFQ = { {.STFQ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xF0000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .STFQU = { {.STFQU , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xF4000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FCIR = { {.FCIR , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FCIR_DOT = { {.FCIR_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FCIRZ = { {.FCIRZ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FCIRZ_DOT = { {.FCIRZ_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FD = { {.FD , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FD_DOT = { {.FD_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FS = { {.FS , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FS_DOT = { {.FS_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FA = { {.FA , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FA_DOT = { {.FA_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FM = { {.FM , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FM_DOT = { {.FM_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FMS = { {.FMS , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FMS_DOT = { {.FMS_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FMA = { {.FMA , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FMA_DOT = { {.FMA_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FNMS = { {.FNMS , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FNMS_DOT = { {.FNMS_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .FNMA = { {.FNMA , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .FNMA_DOT = { {.FNMA_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .DTSTEXQ = { {.DTSTEXQ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .XSCMPEXPQP = { {.XSCMPEXPQP , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .DXEXQ = { {.DXEXQ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .DXEXQ_DOT = { {.DXEXQ_DOT , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FF, .BASE, .PPC32, {}} }, .DTSTSFQ = { {.DTSTSFQ , {.FPR, .MEM, .NONE,.NONE}, {.FRT, .OFFSET_BASE_D, .NONE, .NONE}, 0xFC000000, 0xFC0007FE, .BASE, .PPC32, {}} }, .EVSETEQB_DOT = { {.EVSETEQB_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000601, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETEQH_DOT = { {.EVSETEQH_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000603, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETEQW_DOT = { {.EVSETEQW_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000605, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTHU_DOT = { {.EVSETGTHU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000609, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTHS_DOT = { {.EVSETGTHS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000060B, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTWU_DOT = { {.EVSETGTWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000060D, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTWS_DOT = { {.EVSETGTWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000060F, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTBU_DOT = { {.EVSETGTBU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000611, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETGTBS_DOT = { {.EVSETGTBS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000613, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTBU_DOT = { {.EVSETLTBU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000615, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTBS_DOT = { {.EVSETLTBS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000617, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTHU_DOT = { {.EVSETLTHU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x10000619, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTHS_DOT = { {.EVSETLTHS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000061B, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTWU_DOT = { {.EVSETLTWU_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000061D, 0xFC0007FF, .BASE, .PPC32, {}} }, .EVSETLTWS_DOT = { {.EVSETLTWS_DOT , {.GPR, .GPR, .GPR, .NONE}, {.RT, .RA, .RB, .NONE}, 0x1000061F, 0xFC0007FF, .BASE, .PPC32, {}} }, // ========================================================================= } // ============================================================================= // PREFIX_BITS_TABLE — prefix word for Power ISA 3.1 prefixed instructions // ============================================================================= // // Entries with `flags.prefixed = true` set their PREFIX word here. The // `bits` field of the Encoding describes the SUFFIX. The encoder emits both // words (prefix first, then suffix, big-endian on the wire). Non-prefixed // mnemonics default to 0. // // MLS prefix base = 0x06000000 (template=10, R=0, IMM18=0). // 8LS prefix base = 0x04000000 (template=00, R=0, IMM18=0). PREFIX_BITS_TABLE: [Mnemonic]u32 = #partial { // MLS-form (prefix template = 0b10) .PLBZ = 0x06000000, .PLHZ = 0x06000000, .PLHA = 0x06000000, .PLWZ = 0x06000000, .PSTB = 0x06000000, .PSTH = 0x06000000, .PSTW = 0x06000000, .PLFS = 0x06000000, .PLFD = 0x06000000, .PSTFS = 0x06000000, .PSTFD = 0x06000000, .PADDI = 0x06000000, .PLI = 0x06000000, // 8LS-form (prefix template = 0b00) .PLWA = 0x04000000, .PLD = 0x04000000, .PSTD = 0x04000000, .PLXSD = 0x04000000, .PLXSSP = 0x04000000, .PSTXSD = 0x04000000, .PSTXSSP = 0x04000000, .PLXV = 0x04000000, .PSTXV = 0x04000000, // 8RR-form (prefix template = 0b01) .XXSPLTIDP = 0x05000000, .XXSPLTIW = 0x05000000, .XXSPLTI32DX = 0x05000000, // MLS-form alias: psubi is paddi with negated imm. Prefix carries the // sign-extended high 18 bits of -100 = 0x3FFFF. .PSUBI = 0x0603FFFF, // MMIRR-form (prefix template = 0b11) for MMA accelerator .PMXVF32GER = 0x07900000, .PMXVF64GER = 0x07900000, .PMXVI4GER8 = 0x07900000, .PMXVI8GER4 = 0x07900000, .PMXVI16GER2 = 0x07900000, // 8RR-form (prefix template = 0b01) — POWER10 prefixed blend/perm/eval .XXBLENDVB = 0x05000000, .XXBLENDVH = 0x05000000, .XXBLENDVW = 0x05000000, .XXBLENDVD = 0x05000000, .XXPERMX = 0x05000000, .XXEVAL = 0x05000000, // MMIRR-form expansion (POWER10 MMA pp/pn/np/nn family) .PMXVF16GER2 = 0x07900000, .PMXVF16GER2PP = 0x07900000, .PMXVF16GER2PN = 0x07900000, .PMXVF16GER2NP = 0x07900000, .PMXVF16GER2NN = 0x07900000, .PMXVF32GERPP = 0x07900000, .PMXVF32GERPN = 0x07900000, .PMXVF32GERNP = 0x07900000, .PMXVF32GERNN = 0x07900000, .PMXVF64GERPP = 0x07900000, .PMXVF64GERPN = 0x07900000, .PMXVF64GERNP = 0x07900000, .PMXVF64GERNN = 0x07900000, .PMXVBF16GER2 = 0x07900000, .PMXVBF16GER2PP = 0x07900000, .PMXVBF16GER2PN = 0x07900000, .PMXVBF16GER2NP = 0x07900000, .PMXVBF16GER2NN = 0x07900000, .PMXVI4GER8PP = 0x07900000, .PMXVI8GER4PP = 0x07900000, .PMXVI8GER4SPP = 0x07900000, .PMXVI16GER2PP = 0x07900000, .PMXVI16GER2S = 0x07900000, .PMXVI16GER2SPP = 0x07900000, }