diff --git a/sys/src/libmach/9.c b/sys/src/libmach/9.c index 824c0aba4..cdd5c0abd 100644 --- a/sys/src/libmach/9.c +++ b/sys/src/libmach/9.c @@ -109,7 +109,7 @@ Mach mpower64 = "LR", /* name of link register */ "setSB", /* static base register name */ 0, /* value */ - 0x100000, /* page size (TODO, too many choices) */ + 0x1000, /* page size (TODO, too many choices) */ 0xffffffff80000000ull, /* kernel base (TODO, likely incorrect) */ 0xf000000000000000ull, /* kernel text mask (TODO, likely incorrect) */ 0x00007ffffff00000ull, /* user stack top (TODO, likely incorrect) */ diff --git a/sys/src/libmach/qdb.c b/sys/src/libmach/qdb.c index 257a69bd5..5b931a300 100644 --- a/sys/src/libmach/qdb.c +++ b/sys/src/libmach/qdb.c @@ -137,6 +137,9 @@ typedef struct { uchar ra; /* bits 11-15 */ uchar rb; /* bits 16-20 */ uchar rc; /* bit 31 */ + uchar vra; /* bit 11-15 */ + uchar vrb; /* bit 16-20 */ + uchar vrd; /* bit 6-10 */ union { uchar rs; /* bits 6-10 */ uchar rd; @@ -149,6 +152,7 @@ typedef struct { uvlong imm64; long w0; long w1; + uchar pop; /* op of second half of prefixed instruction */ uvlong addr; /* pc of instruction */ short target; short m64; /* 64-bit mode */ @@ -216,6 +220,9 @@ decode(uvlong pc, Instr *i) i->rb = IBF(w, 16, 20); i->rc = IB(w, 31); i->rs = IBF(w, 6, 10); /* also rd */ + i->vra = IBF(w, 11, 15); + i->vrb = IBF(w, 16, 20); + i->vrd = IBF(w, 6, 10); i->sh = IBF(w, 16, 20); i->xsh = (IB(w, 30)<<5) | i->sh; i->spr = IBF(w, 11, 20); @@ -225,7 +232,16 @@ decode(uvlong pc, Instr *i) if(i->op == 58){ /* class of 64-bit loads */ i->xo = i->simm & 3; i->simm &= ~3; - } + } else if(i->op == 4) + i->xo = IBF(w, 21, 31); + else if(i->op == 6) + i->xo = IBF(w, 28, 31); + else if(i->op == 57) + i->xo = IBF(w, 30, 31); + else if(i->op == 61) + i->xo = IBF(w, 29, 31); + else if(i->op == 17) + i->xo = IBF(w, 30, 31); i->imm64 = i->simm; if(i->op == 15) i->imm64 <<= 16; @@ -242,6 +258,7 @@ static int mkinstr(uvlong pc, Instr *i) { Instr x; + ulong w; if(decode(pc, i) < 0) return -1; @@ -249,10 +266,10 @@ mkinstr(uvlong pc, Instr *i) * combine ADDIS/ORI (CAU/ORIL) into MOVW * also ORIS/ORIL for unsigned in 64-bit mode */ - if ((i->op == 15 || i->op == 25) && i->ra==0) { + if((i->op == 15 || i->op == 25) && i->ra==0) { if(decode(pc+4, &x) < 0) return -1; - if (x.op == 24 && x.rs == x.ra && x.ra == i->rd) { + if(x.op == 24 && x.rs == x.ra && x.ra == i->rd) { i->imm64 |= (x.imm64 & 0xFFFF); if(i->op != 15) i->imm64 &= 0xFFFFFFFFUL; @@ -262,6 +279,15 @@ mkinstr(uvlong pc, Instr *i) return 1; } } + + /* ISA3.1+ prefixed instructions */ + if(i->op == 1){ + if(get4(mymap, pc+4, &w) < 0) + return -1; + i->w1 = w; + i->pop = IBF(i->w1, 0, 5); + i->size++; + } return 1; } @@ -459,7 +485,7 @@ stx(Opcode *o, Instr *i) format(o->mnemonic, i, "R%d,(R%b)"); else format(o->mnemonic, i, "R%d,(R%b+R%a)"); - if(i->rc && i->xo != 150) + if(i->rc && (i->xo != 150 && i->xo != 214)) bprint(i, " [illegal Rc]"); } @@ -668,6 +694,167 @@ neg(Opcode *o, Instr *i) format(o->mnemonic, i, o->ken); } +static void +vra2s(Opcode *o, Instr *i) +{ + char **p; + int n; + + static char* bcdc[] = { + [0] "bcdctsq.", + [2] "bcdcfsq.", + [4] "bcdctz.", + [5] "bcdctn.", + [6] "bcdcfz.", + [7] "bcdcfn.", + [31] "bcdsetsgn.", + }; + static char* vcz[] = { + [0] "vclzlsbb", + [1] "vctzlsbb", + [6] "vnegw", + [7] "vnegd", + [8] "vprtybw", + [9] "vprtybd", + [10] "vprtybq", + [31] "vctzd", + [16] "vextsb2w", + [17] "vextsh2w", + [24] "vextsb2d", + [25] "vextsh2d", + [26] "vextsw2d", + [27] "vextsd2q", + [28] "vctzb", + [29] "vctzh", + [30] "vctzw", + }; + static char* exp[] = { + [1] "vexpandhm", + [2] "vexpandwm", + [3] "vexpanddm", + [4] "vexpandqm", + [8] "vextractbm", + [9] "vextracthm", + [10] "vextractwm", + [11] "vextractdm", + [12] "vextractqm", + [16] "mtvsrbm", + [17] "mtvsrhm", + [18] "mtvsrwm", + [19] "mtvsrdm", + [20] "mtvsrqm", + [24] "vcntmbb", + [26] "vcntmbd", + [28] "vcntmbh", + [30] "vcntmbw", + }; + static char *vstr[] = { + [1] "vstribr[.]", + [2] "vstrihl[.]", + [3] "vstrihr[.]", + }; + static char *xscv[] = { + [1] "xscvqpuwz", + [2] "xscvudqp", + [3] "xscvuqqp", + [8] "xscvqpsqz", + [9] "xscvqpswz", + [10] "xscvsdqp", + [11] "xscvsqqp", + [17] "xscvqpudz", + [20] "xscvqpdp[o]", + [22] "xscvdpqp", + [25] "xscvqpsdz", + }; + static char *xsab[] = { + [2] "xsxexpqp", + [8] "xsnabsqp", + [16] "xsnegqp", + [18] "xsxsigqp", + [27] "xssqrtqp[o]", + }; + static char *xvx[] = { + [1] "xvxsigdp", + [2] "xvtlsbb", + [7] "xxbrh", + [8] "xvxexpsp", + [9] "xvxsigsp", + [15] "xxbrw", + [16] "xvcvbf16sp", + [17] "xvcvspbf16", + [23] "xxbrd", + [24] "xvcvhpsp", + [25] "xvcvsphp", + [31] "xxbrq", + }; + static char *xsc[] = { + [1] "xsxsigdp", + [16] "xscvhpdp", + [17] "xscvdphp", + }; + static char *xxcc[] = { + [1] "xxmtacc", + [3] "xxsetaccz", + }; + static char *dcff[] = { + [1] "dctfixqq", + }; + static char *lxvk[] = { + [31] "lxvkq", + }; + if(o->op == 4 && (o->xo & o->xomask) == 385){ + p = bcdc; n = nelem(bcdc); + } else switch(o->xo){ + case 1538: p = vcz; n = nelem(vcz); break; + case 1602: + if((i->vra & (12<<1)) == (12<<1)) + i->vra &= ~1; + if((i->vra & (13<<1)) == (13<<1)) + i->vra &= ~1; + p = exp; n = nelem(exp); break; + case 836: p = xscv; n = nelem(xscv); break; + case 804: p = xsab; n = nelem(xsab); break; + case 950: p = xvx; n = nelem(xvx); break; + case 13: p = vstr; n = nelem(vstr); break; + case 694: p = xsc; n = nelem(xsc); break; + case 177: p = xxcc; n = nelem(xxcc); break; + case 994: p = dcff; n = nelem(dcff); break; + case 360: p = lxvk; n = nelem(lxvk); break; + default: p = nil; n = 0; break; + } + + if(p == nil || i->vra > n || p[i->vra] == nil) + format(o->mnemonic, i, o->ken); + else + format(p[i->vra], i, o->ken); +} + +static void +addpcis(Opcode *o, Instr *i) +{ + long l; + char buf[16]; + + l = ((IBF(i->w0, 11, 15)<<11) | (IBF(i->w0, 16, 25)<<1) | (i->rc))<<16; + snprint(buf, sizeof buf, "$%ld,PC,R%%d", l); + format(o->mnemonic, i, buf); +} + +static void +vsldbi(Opcode *o, Instr *i) +{ + switch(IBF(i->w0, 21, 22)){ + case 1: + format("vsrdbi", i, o->ken); + break; + case 0: + format("vsldbi", i, o->ken); + break; + default: + format("unknown instruction", i, 0); + } +} + static char ir2[] = "R%a,R%d"; /* reverse of IBM order */ static char ir3[] = "R%b,R%a,R%d"; static char ir3r[] = "R%a,R%b,R%d"; @@ -691,9 +878,16 @@ static char rldc[] = "R%b,R%s,$%E,R%a"; static char rlim[] = "R%b,R%s,$%z,R%a"; static char rlimi[] = "$%k,R%s,$%z,R%a"; static char rldi[] = "$%e,R%s,$%E,R%a"; +static char vr2[] = "V%あ,V%う"; +static char vr3[] = "V%い,V%あ,V%う"; #define OEM IBF(~0,22,30) #define FP4 IBF(~0,26,30) +#define VXM IBF(~0,21,31) +#define VXM2 IBF(~0,23,31) +#define VCM IBF(~0,22,31) +#define DQM IBF(~0,28,31) +#define VAM IBF(~0,26,31) #define ALL (~0) #define RLDC 0xF #define RLDI 0xE @@ -703,6 +897,127 @@ notes: also, L bit (bit 10) mbz or selects 64-bit operands */ +typedef struct Popcode Popcode; + +struct Popcode { + ulong xo1; + ulong xomask1; + + ulong op2; + ulong xo2; + ulong xomask2; + + char *mnemonic; +}; + +/* mask of bits [lo, hi] */ +#define IBM(lo,hi) ( ((((~0UL)>>(31-hi))<<(31-hi))<<(lo))>>(lo) ) + +#define PLM IBM(6,8) +#define XXM1 IBM(6,11) +#define XXM2 IBM(11,13) +#define XXM3 IBM(26,27) +#define XXM4 IBM(6,8) +#define XXM5 IBM(21,28) + +#define PMXOP (((3<<4)|9)<<20) + +/* this is where they hide the x86 */ +static Popcode popcodes[] = { + {0, PLM, 61, 0, 0, "pstd"}, + {0, PLM, 62, 0, 0, "pstxvp"}, + {2<<24, PLM, 32, 0, 0, "plwz"}, + {1<<24, XXM1, 32, 3<<17, IBM(11,14), "xxspltiw"}, + {1<<24, XXM1, 32, 2<<17, IBM(11,14), "xxspltidp"}, + {1<<24, XXM1, 32, 0, XXM2, "xxsplti32dx"}, + {1<<24, XXM1, 33, 0, XXM3, "xxblendvb"}, + {1<<24, XXM1, 33, 1<<4, XXM3, "xxblendvh"}, + {1<<24, XXM1, 33, 2<<4, XXM3, "xxblendvw"}, + {1<<24, XXM1, 33, 3<<4, XXM3, "xxblendvd"}, + {2<<24, XXM4, 34, 0, 0, "plbz"}, + {1<<24, XXM1, 34, 0, XXM3, "xxpermx"}, + {1<<24, XXM1, 34, 1<<4, XXM3, "xxeval"}, + {2<<24, XXM4, 36, 0, 0, "pstw"}, + {2<<24, XXM4, 38, 0, 0, "pstb"}, + {2<<24, XXM4, 40, 0, 0, "plhz"}, + {0, XXM4, 41, 0, 0, "plwa"}, + {0, XXM4, 42, 0, 0, "plxsd"}, + {2<<24, XXM4, 42, 0, 0, "plha"}, + {0, XXM4, 43, 0, 0, "plxssp"}, + {2<<24, XXM4, 44, 0, 0, "psth"}, + {0, XXM4, 46, 0, 0, "pstxsd"}, + {0, XXM4, 47, 0, 0, "pstxssp"}, + {2<<24, XXM4, 48, 0, 0, "plfs"}, + {2<<24, XXM4, 50, 0, 0, "plfd"}, + {2<<24, XXM4, 52, 0, 0, "pstfs"}, + {2<<24, XXM4, 54, 0, 0, "pstfd"}, + {0, XXM4, 56, 0, 0, "plq"}, + {0, XXM4, 57, 0, 0, "pld"}, + {0, XXM4, 58, 0, 0, "plxvp"}, + {PMXOP, XXM1, 59, 2<<3, XXM5, "pmxvi8ger4pp"}, + {PMXOP, XXM1, 59, 18<<3, XXM5, "pmxvf16ger2pp"}, + {PMXOP, XXM1, 59, 26<<3, XXM5, "pmxvf32gerpp"}, + {PMXOP, XXM1, 59, 34<<3, XXM5, "pmxvi4ger8pp"}, + {PMXOP, XXM1, 59, 34<<3, XXM5, "pmxvi16ger2spp"}, + {PMXOP, XXM1, 59, 42<<3, XXM5, "pmxvi16ger2spp"}, + {PMXOP, XXM1, 59, 50<<3, XXM5, "pmxvbf16ger2pp"}, + {PMXOP, XXM1, 59, 58<<3, XXM5, "pmxvf64gerpp"}, + {PMXOP, XXM1, 59, 82<<3, XXM5, "pmxvf16ger2np"}, + {PMXOP, XXM1, 59, 90<<3, XXM5, "pmxvf32gernp"}, + {PMXOP, XXM1, 59, 114<<3, XXM5, "pmxvbf16ger2n"}, + {PMXOP, XXM1, 59, 122<<3, XXM5, "pmxvf64gernp"}, + {PMXOP, XXM1, 59, 146<<3, XXM5, "pmxvf16ger2pn"}, + {PMXOP, XXM1, 59, 154<<3, XXM5, "pmxvf32gerpn"}, + {PMXOP, XXM1, 59, 178<<3, XXM5, "pmxvbf16ger2pn"}, + {PMXOP, XXM1, 59, 186<<3, XXM5, "pmxvf64gerpn"}, + {PMXOP, XXM1, 59, 210<<3, XXM5, "pmxvf16ger2nn"}, + {PMXOP, XXM1, 59, 218<<3, XXM5, "pmxvf32gernn"}, + {PMXOP, XXM1, 59, 242<<3, XXM5, "pmxvbf16ger2nn"}, + {PMXOP, XXM1, 59, 250<<3, XXM5, "pmxvf64gernn"}, + {PMXOP, XXM1, 59, 3<<3, XXM5, "pmxvi8ger4"}, + {PMXOP, XXM1, 59, 19<<3, XXM5, "pmxvf16ger2"}, + {PMXOP, XXM1, 59, 27<<3, XXM5, "pmxvf32ger"}, + {PMXOP, XXM1, 59, 35<<3, XXM5, "pmxvi4ger8"}, + {PMXOP, XXM1, 59, 43<<3, XXM5, "pmxvi16ger2s"}, + {PMXOP, XXM1, 59, 51<<3, XXM5, "pmxvbf16ger2"}, + {PMXOP, XXM1, 59, 59<<3, XXM5, "pmxvf64ger"}, + {PMXOP, XXM1, 59, 75<<3, XXM5, "pmxvi16ger2"}, + {PMXOP, XXM1, 59, 99<<3, XXM5, "pmxvi8ger4spp"}, + {PMXOP, XXM1, 59, 107<<3, XXM5, "pmxvi16ger2pp"}, + {0, XXM4, 60, 0, 0, "pstq"}, + {2<<24, XXM4, 14, 0, 0, "paddi"}, + + {0}, +}; + +static void +prefixed(Opcode*, Instr *i) +{ + Popcode *p; + + for(p = popcodes; p->mnemonic != nil; p++){ + if(i->pop != p->op2) + continue; + if((i->w0 & p->xomask1) != p->xo1) + continue; + if((i->w1 & p->xomask2) != p->xo2) + continue; + format(p->mnemonic, i, nil); + return; + } + if((i->w0 & XXM1) == 3<<24) + format("NOP", i, nil); + else if((i->w0 & XXM4) == 0){ + if((i->pop & ~1) == 25<<1) + format("plxv", i, nil); + else if((i->pop & ~1) == 27<<1) + format("pstxv", i, nil); + else + format("unknown instruction", i, nil); + } else + format("unknown instruction", i, nil); +} + static Opcode opcodes[] = { {31, 266, OEM, "ADD%V%C", add, ir3}, {31, 10, OEM, "ADDC%V%C", add, ir3}, @@ -902,7 +1217,7 @@ static Opcode opcodes[] = { {21, 0, 0, "RLWNM%C", gencc, rlimi}, {23, 0, 0, "RLWNM%C", gencc, rlim}, - {17, 1, ALL, "SYSCALL", gen, 0}, + {17, 2, ALL, "SYSCALL", gen, 0}, {31, 27, ALL, "SLD%C", shift, il3}, /* 64 */ {31, 24, ALL, "SLW%C", shift, il3}, @@ -978,6 +1293,882 @@ static Opcode opcodes[] = { {26, 0, 0, "XOR", and, il2u}, {27, 0, 0, "XOR", shifted, 0}, + /* unimplemented/lightly implemented from here on out */ + {19, 2, FP4, "ADD", addpcis, 0}, + {19, 560, ALL, "BC%L.T", 0, "%d,%a,(TAR)"}, + {19, 370, ALL, "STOP", 0, 0}, + {17, 1, ALL, "SYSCALL.V", 0, 0}, + {19, 82, ALL, "RETURN.V", 0, 0}, + {19, 146, ALL, "RETURN.E", 0, 0}, + {19, 18, ALL, "RETURN.I", 0, 0}, + {19, 274, ALL, "HRETURN.I", 0, 0}, + {19, 306, ALL, "URETURN.I", 0, 0}, + + {4, 0, VXM, "vaddubm", 0, vr3}, + {4, 64, VXM, "vadduhm", 0, vr3}, + {4, 128, VXM, "vadduwm", 0, vr3}, + {4, 192, VXM, "vaddudm", 0, vr3}, + {4, 256, VXM, "vadduqm", 0, vr3}, + {4, 320, VXM, "vaddcuq", 0, vr3}, + {4, 384, VXM, "vaddcuw", 0, vr3}, + {4, 512, VXM, "vaddubs", 0, vr3}, + {4, 576, VXM, "vadduhs", 0, vr3}, + {4, 640, VXM, "vadduws", 0, vr3}, + {4, 768, VXM, "vaddsbs", 0, vr3}, + {4, 832, VXM, "vaddshs", 0, vr3}, + {4, 896, VXM, "vaddsws", 0, vr3}, + {4, 1024, VXM, "vsububm", 0, vr3}, + {4, 1088, VXM, "vsubuhm", 0, vr3}, + {4, 1152, VXM, "vsubuwm", 0, vr3}, + {4, 1216, VXM, "vsubudm", 0, vr3}, + {4, 1280, VXM, "vsubuqm", 0, vr3}, + {4, 1344, VXM, "vsubcuq", 0, vr3}, + {4, 1408, VXM, "vsubcuw", 0, vr3}, + {4, 1536, VXM, "vsububs", 0, vr3}, + {4, 1600, VXM, "vsubuhs", 0, vr3}, + {4, 1664, VXM, "vsubuws", 0, vr3}, + {4, 1792, VXM, "vsubsbs", 0, vr3}, + {4, 1856, VXM, "vsubshs", 0, vr3}, + {4, 1920, VXM, "vsubsws", 0, vr3}, + {4, 1, VXM, "vmul10cuq", 0, vr2}, + {4, 65, VXM, "vmul10ecuq", 0, vr2}, + {4, 257, VXM, "vcmpuq", 0, vr3}, + {4, 321, VXM, "vcmpsq", 0, vr3}, + {4, 513, VXM, "vmul10uq", 0, vr2}, + {4, 577, VXM, "vmul10euq", 0, vr2}, + {4, 833, VXM, "bcdcpsgn.", 0, vr3}, + {4, 1, VXM2, "bcdadd.", 0, vr3}, + {4, 65, VXM2, "bcdsub.", 0, vr3}, + {4, 129, VXM2, "bcdus.", 0, vr3}, + {4, 193, VXM2, "bcds.", 0, vr3}, + {4, 257, VXM2, "bcdtrunc.", 0, vr3}, + {4, 1345, VXM, "bcdutrunc.", 0, vr3}, + {4, 385, VXM2, "bcdctsq.", vra2s, vr2}, + {4, 385, VXM2, "bcdcfsq.", vra2s, vr2}, + {4, 385, VXM2, "bcdctz.", vra2s, vr2}, + {4, 385, VXM2, "bcdctn.", vra2s, vr2}, + {4, 385, VXM2, "bcdcfz.", vra2s, vr2}, + {4, 385, VXM2, "bcdcfn.", vra2s, vr2}, + {4, 385, VXM2, "bcdsetsgn.", 0, vr3}, + {4, 449, VXM2, "bcdsr.", 0, vr3}, + {4, 2, VXM, "vmaxub", 0, vr3}, + {4, 66, VXM, "vmaxuh", 0, vr3}, + {4, 130, VXM, "vmaxuw", 0, vr3}, + {4, 194, VXM, "vmaxud", 0, vr3}, + {4, 258, VXM, "vmaxsb", 0, vr3}, + {4, 322, VXM, "vmaxsh", 0, vr3}, + {4, 386, VXM, "vmaxsw", 0, vr3}, + {4, 450, VXM, "vmaxsd", 0, vr3}, + {4, 514, VXM, "vminub", 0, vr3}, + {4, 578, VXM, "vminuh", 0, vr3}, + {4, 642, VXM, "vminuw", 0, vr3}, + {4, 706, VXM, "vminud", 0, vr3}, + {4, 770, VXM, "vminsb", 0, vr3}, + {4, 834, VXM, "vminsh", 0, vr3}, + {4, 898, VXM, "vminsw", 0, vr3}, + {4, 962, VXM, "vminsd", 0, vr3}, + {4, 1026, VXM, "vavgub", 0, vr3}, + {4, 1090, VXM, "vavguh", 0, vr3}, + {4, 1154, VXM, "vavguw", 0, vr3}, + {4, 1282, VXM, "vavgsb", 0, vr3}, + {4, 1346, VXM, "vavgsh", 0, vr3}, + {4, 1410, VXM, "vavgsw", 0, vr3}, + {4, 1538, VXM, "vclzlsbb", vra2s, vr2}, + {4, 1538, VXM, "vctzlsbb", vra2s, vr2}, + {4, 1538, VXM, "vnegw", vra2s, vr2}, + {4, 1538, VXM, "vnegd", vra2s, vr2}, + {4, 1538, VXM, "vprtybw", vra2s, vr2}, + {4, 1538, VXM, "vprtybd", vra2s, vr2}, + {4, 1538, VXM, "vprtybq", vra2s, vr2}, + {4, 1538, VXM, "vextsb2w", vra2s, vr2}, + {4, 1538, VXM, "vextsh2w", vra2s, vr2}, + {4, 1538, VXM, "vextsb2d", vra2s, vr2}, + {4, 1538, VXM, "vextsh2d", vra2s, vr2}, + {4, 1538, VXM, "vextsw", vra2s, vr2}, + {4, 1538, VXM, "vextsd", vra2s, vr2}, + {4, 1538, VXM, "vctzb", vra2s, vr2}, + {4, 1538, VXM, "vctzh", vra2s, vr2}, + {4, 1538, VXM, "vctzw", vra2s, vr2}, + {4, 1538, VXM, "vctzd", vra2s, vr2}, + {4, 1602, ALL, "vexpandbm", vra2s, vr2}, + {4, 1602, VXM, "vexpandhm", vra2s, vr2}, + {4, 1602, VXM, "vexpandwm", vra2s, vr2}, + {4, 1602, VXM, "vexpanddm", vra2s, vr2}, + {4, 1602, VXM, "vexpandqm", vra2s, vr2}, + {4, 1602, VXM, "vextractbm", vra2s, vr2}, + {4, 1602, VXM, "vextracthm", vra2s, vr2}, + {4, 1602, VXM, "vextractwm", vra2s, vr2}, + {4, 1602, VXM, "vextractdm", vra2s, vr2}, + {4, 1602, VXM, "vextractqm", vra2s, vr2}, + {4, 1602, VXM, "mtvsrbm", 0, vr3}, + {4, 1602, VXM, "mtvsrhm", 0, vr3}, + {4, 1602, VXM, "mtvsrwm", 0, vr3}, + {4, 1602, VXM, "mtvsrdm", 0, vr3}, + {4, 1602, VXM, "mtvsrqm", 0, vr3}, + {4, 1602, VXM, "vcntmbb", 0, vr3}, + {4, 1602, VXM, "vcntmbd", 0, vr3}, + {4, 1602, VXM, "vcntmbh", 0, vr3}, + {4, 1602, VXM, "vcntmbw", 0, vr3}, + {4, 1666, VXM, "vshasigmaw", 0, vr3}, + {4, 1730, VXM, "vshasigmad", 0, vr3}, + {4, 1794, VXM, "vclzb", 0, vr3}, + {4, 1858, VXM, "vclzh", 0, vr3}, + {4, 1922, VXM, "vclzw", 0, vr3}, + {4, 1986, VXM, "vclzd", 0, vr3}, + {4, 1027, VXM, "vabsdub", 0, vr3}, + {4, 1091, VXM, "vabsduh", 0, vr3}, + {4, 1155, VXM, "vabsduw", 0, vr3}, + {4, 1795, VXM, "vpopcntb", 0, vr3}, + {4, 1859, VXM, "vpopcnth", 0, vr3}, + {4, 1923, VXM, "vpopcntw", 0, vr3}, + {4, 1987, VXM, "vpopcntd", 0, vr3}, + {4, 4, VXM, "vrlb", 0, vr3}, + {4, 68, VXM, "vrlh", 0, vr3}, + {4, 132, VXM, "vrlw", 0, vr3}, + {4, 196, VXM, "vrld", 0, vr3}, + {4, 260, VXM, "vslb", 0, vr3}, + {4, 324, VXM, "vslh", 0, vr3}, + {4, 388, VXM, "vslw", 0, vr3}, + {4, 452, VXM, "vsl", 0, vr3}, + {4, 516, VXM, "vsrb", 0, vr3}, + {4, 580, VXM, "vsrh", 0, vr3}, + {4, 644, VXM, "vsrw", 0, vr3}, + {4, 708, VXM, "vsr", 0, vr3}, + {4, 772, VXM, "vsrab", 0, vr3}, + {4, 836, VXM, "vsrah", 0, vr3}, + {4, 900, VXM, "vsraw", 0, vr3}, + {4, 964, VXM, "vsrad", 0, vr3}, + {4, 1028, VXM, "vand", 0, vr3}, + {4, 1092, VXM, "vandc", 0, vr3}, + {4, 1156, VXM, "vor", 0, vr3}, + {4, 1220, VXM, "vxor", 0, vr3}, + {4, 1284, VXM, "vnor", 0, vr3}, + {4, 1348, VXM, "vorc", 0, vr3}, + {4, 1412, VXM, "vnand", 0, vr3}, + {4, 1476, VXM, "vsld", 0, vr3}, + {4, 1540, VXM, "mfvscr", 0, vr3}, + {4, 1604, VXM, "mtvscr", 0, vr3}, + {4, 1668, VXM, "veqv", 0, vr3}, + {4, 1732, VXM, "vsrd", 0, vr3}, + {4, 1796, VXM, "vsrv", 0, vr3}, + {4, 1860, VXM, "vslv", 0, vr3}, + {4, 1924, VXM, "vclzdm", 0, vr3}, + {4, 1988, VXM, "vctzdm", 0, vr3}, + {4, 5, VXM, "vrlq", 0, vr3}, + {4, 69, VXM, "vrlqmi", 0, vr3}, + {4, 133, VXM, "vrlwmi", 0, vr3}, + {4, 197, VXM, "vrldmi", 0, vr3}, + {4, 261, VXM, "vslq", 0, vr3}, + {4, 325, VXM, "vrlqnm", 0, vr3}, + {4, 389, VXM, "vrlwnm", 0, vr3}, + {4, 453, VXM, "vrldnm", 0, vr3}, + {4, 517, VXM, "vsrq", 0, vr3}, + {4, 773, VXM, "vsraq", 0, vr3}, + {4, 6, VCM, "vcmpequb[.]", 0, vr3}, + {4, 70, VCM, "vcmpequh[.]", 0, vr3}, + {4, 134, VCM, "vcmpequw[.]", 0, vr3}, + {4, 198, VCM, "vcmpeqfp[.]", 0, vr3}, + {4, 454, VCM, "vcmpgefp[.]", 0, vr3}, + {4, 518, VCM, "vcmpgtub[.]", 0, vr3}, + {4, 582, VCM, "vcmpgtuh[.]", 0, vr3}, + {4, 646, VCM, "vcmpgtuw[.]", 0, vr3}, + {4, 710, VCM, "vcmpgtfp[.]", 0, vr3}, + {4, 774, VCM, "vcmpgtsb[.]", 0, vr3}, + {4, 838, VCM, "vcmpgtsh[.]", 0, vr3}, + {4, 902, VCM, "vcmpgtsw[.]", 0, vr3}, + {4, 966, VCM, "vcmpbfp[.]", 0, vr3}, + {4, 7, VCM, "vcmpneb[.]", 0, vr3}, + {4, 71, VCM, "vcmpneh[.]", 0, vr3}, + {4, 135, VCM, "vcmpnew[.]", 0, vr3}, + {4, 199, VCM, "vcmpequd[.]", 0, vr3}, + {4, 263, VCM, "vcmpnezb[.]", 0, vr3}, + {4, 327, VCM, "vcmpnezh[.]", 0, vr3}, + {4, 391, VCM, "vcmpnezw[.]", 0, vr3}, + {4, 455, VCM, "vcmpequq[.]", 0, vr3}, + {4, 647, VCM, "vcmpgtuq[.]", 0, vr3}, + {4, 711, VCM, "vcmpgtud[.]", 0, vr3}, + {4, 903, VCM, "vcmpgtsq[.]", 0, vr3}, + {4, 967, VCM, "vcmpgtsd[.]", 0, vr3}, + {4, 8, VXM, "vmuloub", 0, vr3}, + {4, 72, VXM, "vmulouh", 0, vr3}, + {4, 136, VXM, "vmulouw", 0, vr3}, + {4, 200, VXM, "vmuloud", 0, vr3}, + {4, 264, VXM, "vmulosb", 0, vr3}, + {4, 328, VXM, "vmulosh", 0, vr3}, + {4, 392, VXM, "vmulosw", 0, vr3}, + {4, 456, VXM, "vmulosd", 0, vr3}, + {4, 520, VXM, "vmuleub", 0, vr3}, + {4, 584, VXM, "vmuleuh", 0, vr3}, + {4, 648, VXM, "vmuleuw", 0, vr3}, + {4, 712, VXM, "vmuleud", 0, vr3}, + {4, 776, VXM, "vmulesb", 0, vr3}, + {4, 840, VXM, "vmulesh", 0, vr3}, + {4, 904, VXM, "vmulesw", 0, vr3}, + {4, 968, VXM, "vmulesd", 0, vr3}, + {4, 1032, VXM, "vpmsumb", 0, vr3}, + {4, 1096, VXM, "vpmsumh", 0, vr3}, + {4, 1160, VXM, "vpmsumw", 0, vr3}, + {4, 1224, VXM, "vpmsumd", 0, vr3}, + {4, 1288, VXM, "vcipher", 0, vr3}, + {4, 1352, VXM, "vncipher", 0, vr3}, + {4, 1480, VXM, "vsbox", 0, vr3}, + {4, 1544, VXM, "vsum4ubs", 0, vr3}, + {4, 1608, VXM, "vsum4shs", 0, vr3}, + {4, 1672, VXM, "vsum2sws", 0, vr3}, + {4, 1800, VXM, "vsum4sbs", 0, vr3}, + {4, 1928, VXM, "vsumsws", 0, vr3}, + {4, 137, VXM, "vmuluwm", 0, vr3}, + {4, 457, VXM, "vmulld", 0, vr3}, + {4, 649, VXM, "vmulhuw", 0, vr3}, + {4, 713, VXM, "vmulhud", 0, vr3}, + {4, 905, VXM, "vmulhsw", 0, vr3}, + {4, 969, VXM, "vmulhsd", 0, vr3}, + {4, 1289, VXM, "vcipherlast", 0, vr3}, + {4, 1353, VXM, "vncipherlast", 0, vr3}, + {4, 10, VXM, "vaddfp", 0, vr3}, + {4, 74, VXM, "vsubfp", 0, vr3}, + {4, 266, VXM, "vrefp", 0, vr3}, + {4, 330, VXM, "vrsqrtefp", 0, vr3}, + {4, 394, VXM, "vexptefp", 0, vr3}, + {4, 458, VXM, "vlogefp", 0, vr3}, + {4, 522, VXM, "vrfin", 0, vr3}, + {4, 586, VXM, "vrfiz", 0, vr3}, + {4, 650, VXM, "vrfip", 0, vr3}, + {4, 714, VXM, "vrfim", 0, vr3}, + {4, 778, VXM, "vcfux", 0, vr3}, + {4, 842, VXM, "vcfsx", 0, vr3}, + {4, 906, VXM, "vctuxs", 0, vr3}, + {4, 970, VXM, "vctsxs", 0, vr3}, + {4, 1034, VXM, "vmaxfp", 0, vr3}, + {4, 1098, VXM, "vminfp", 0, vr3}, + {4, 11, VXM, "vdivuq", 0, vr3}, + {4, 139, VXM, "vdivuw", 0, vr3}, + {4, 203, VXM, "vdivud", 0, vr3}, + {4, 267, VXM, "vdivsq", 0, vr3}, + {4, 395, VXM, "vdivsw", 0, vr3}, + {4, 459, VXM, "vdivsd", 0, vr3}, + {4, 523, VXM, "vdiveuq", 0, vr3}, + {4, 651, VXM, "vdiveuw", 0, vr3}, + {4, 715, VXM, "vdiveud", 0, vr3}, + {4, 779, VXM, "vdivesq", 0, vr3}, + {4, 907, VXM, "vdivesw", 0, vr3}, + {4, 971, VXM, "vdivesd", 0, vr3}, + {4, 1547, VXM, "vmoduq", 0, vr3}, + {4, 1675, VXM, "vmoduw", 0, vr3}, + {4, 1739, VXM, "vmodud", 0, vr3}, + {4, 1803, VXM, "vmodsq", 0, vr3}, + {4, 1931, VXM, "vmodsw", 0, vr3}, + {4, 1995, VXM, "vmodsd", 0, vr3}, + {4, 12, VXM, "vmrghb", 0, vr3}, + {4, 76, VXM, "vmrghh", 0, vr3}, + {4, 140, VXM, "vmrghw", 0, vr3}, + {4, 268, VXM, "vmrglb", 0, vr3}, + {4, 332, VXM, "vmrglh", 0, vr3}, + {4, 396, VXM, "vmrglw", 0, vr3}, + {4, 524, VXM, "vspltb", 0, vr3}, + {4, 588, VXM, "vsplth", 0, vr3}, + {4, 652, VXM, "vspltw", 0, vr3}, + {4, 780, VXM, "vspltisb", 0, vr3}, + {4, 844, VXM, "vspltish", 0, vr3}, + {4, 908, VXM, "vspltisw", 0, vr3}, + {4, 1036, VXM, "vslo", 0, vr3}, + {4, 1100, VXM, "vsro", 0, vr3}, + {4, 1228, VXM, "vgnb", 0, vr3}, + {4, 1292, VXM, "vgbbd", 0, vr3}, + {4, 1356, VXM, "vbpermq", 0, vr3}, + {4, 1484, VXM, "vbpermd", 0, vr3}, + {4, 1676, VXM, "vmrgow", 0, vr3}, + {4, 1932, VXM, "vmrgew", 0, vr3}, + {4, 13, VCM, "vstribl[.]", vra2s, vr2}, + {4, 13, VCM, "vstribr[.]", vra2s, vr2}, + {4, 13, VCM, "vstrihl[.]", vra2s, vr2}, + {4, 13, VCM, "vstrihr[.]", vra2s, vr2}, + {4, 397, VXM, "vclrlb", 0, vr3}, + {4, 461, VXM, "vclrrb", 0, vr3}, + {4, 525, VXM, "vextractub", 0, vr3}, + {4, 589, VXM, "vextractuh", 0, vr3}, + {4, 653, VXM, "vextractuw", 0, vr3}, + {4, 717, VXM, "vextractd", 0, vr3}, + {4, 781, VXM, "vinsertb", 0, vr3}, + {4, 845, VXM, "vinserth", 0, vr3}, + {4, 909, VXM, "vinsertw", 0, vr3}, + {4, 973, VXM, "vinsertd", 0, vr3}, + {4, 1357, VXM, "vcfuged", 0, vr3}, + {4, 1421, VXM, "vpextd", 0, vr3}, + {4, 1485, VXM, "vpdepd", 0, vr3}, + {4, 1549, VXM, "vextublx", 0, vr3}, + {4, 1613, VXM, "vextuhlx", 0, vr3}, + {4, 1677, VXM, "vextuwlx", 0, vr3}, + {4, 1805, VXM, "vextubrx", 0, vr3}, + {4, 1869, VXM, "vextuhrx", 0, vr3}, + {4, 1933, VXM, "vextuwrx", 0, vr3}, + {4, 14, VXM, "vpkuhum", 0, vr3}, + {4, 78, VXM, "vpkuwum", 0, vr3}, + {4, 142, VXM, "vpkuhus", 0, vr3}, + {4, 206, VXM, "vpkuwus", 0, vr3}, + {4, 270, VXM, "vpkshus", 0, vr3}, + {4, 334, VXM, "vpkswus", 0, vr3}, + {4, 398, VXM, "vpkshss", 0, vr3}, + {4, 462, VXM, "vpkswss", 0, vr3}, + {4, 526, VXM, "vupkhsb", 0, vr3}, + {4, 590, VXM, "vupkhsh", 0, vr3}, + {4, 654, VXM, "vupklsb", 0, vr3}, + {4, 718, VXM, "vupklsh", 0, vr3}, + {4, 782, VXM, "vpkpx", 0, vr3}, + {4, 846, VXM, "vupkhpx", 0, vr3}, + {4, 974, VXM, "vupklpx", 0, vr3}, + {4, 1102, VXM, "vpkudum", 0, vr3}, + {4, 1230, VXM, "vpkudus", 0, vr3}, + {4, 1358, VXM, "vpksdus", 0, vr3}, + {4, 1486, VXM, "vpksdss", 0, vr3}, + {4, 1614, VXM, "vupkhsw", 0, vr3}, + {4, 1742, VXM, "vupklsw", 0, vr3}, + {4, 15, VXM, "vinsbvlx", 0, vr3}, + {4, 79, VXM, "vinshvlx", 0, vr3}, + {4, 143, VXM, "vinswvlx", 0, vr3}, + {4, 207, VXM, "vinsw", 0, vr3}, + {4, 271, VXM, "vinsbvrx", 0, vr3}, + {4, 335, VXM, "vinshvrx", 0, vr3}, + {4, 399, VXM, "vinswvrx", 0, vr3}, + {4, 463, VXM, "vinsd", 0, vr3}, + {4, 527, VXM, "vinsblx", 0, vr3}, + {4, 591, VXM, "vinshlx", 0, vr3}, + {4, 655, VXM, "vinswlx", 0, vr3}, + {4, 719, VXM, "vinsdlx", 0, vr3}, + {4, 783, VXM, "vinsbrx", 0, vr3}, + {4, 847, VXM, "vinshrx", 0, vr3}, + {4, 911, VXM, "vinswrx", 0, vr3}, + {4, 975, VXM, "vinsdrx", 0, vr3}, + {4, 20, 0b111110, "mtvsrbmi", 0, vr3}, + {4, 22, VAM, "vsldbi", vsldbi, vr3}, + {4, 22, VAM, "vsrdbi", vsldbi, vr3}, + {4, 23, VAM, "vmsumcud", 0, vr3}, + {4, 24, VAM, "vextdubvlx", 0, vr3}, + {4, 25, VAM, "vextdubvrx", 0, vr3}, + {4, 26, VAM, "vextduhvlx", 0, vr3}, + {4, 27, VAM, "vextduhvrx", 0, vr3}, + {4, 28, VAM, "vextduwvlx", 0, vr3}, + {4, 29, VAM, "vextduwvrx", 0, vr3}, + {4, 30, VAM, "vextddvlx", 0, vr3}, + {4, 31, VAM, "vextddvrx", 0, vr3}, + {4, 32, VAM, "vmhaddshs", 0, vr3}, + {4, 33, VAM, "vmhraddshs", 0, vr3}, + {4, 34, VAM, "vmladduhm", 0, vr3}, + {4, 35, VAM, "vmsumudm", 0, vr3}, + {4, 36, VAM, "vmsumubm", 0, vr3}, + {4, 37, VAM, "vmsummbm", 0, vr3}, + {4, 38, VAM, "vmsumuhm", 0, vr3}, + {4, 39, VAM, "vmsumuhs", 0, vr3}, + {4, 40, VAM, "vmsumshm", 0, vr3}, + {4, 41, VAM, "vmsumshs", 0, vr3}, + {4, 42, VAM, "vsel", 0, vr3}, + {4, 43, VAM, "vperm", 0, vr3}, + {4, 44, VAM, "vsldoi", 0, vr3}, + {4, 45, VAM, "vpermxor", 0, vr3}, + {4, 46, VAM, "vmaddfp", 0, vr3}, + {4, 47, VAM, "vnmsubfp", 0, vr3}, + {4, 48, VAM, "maddhd", 0, vr3}, + {4, 49, VAM, "maddhdu", 0, vr3}, + {4, 51, VAM, "maddld", 0, vr3}, + {4, 59, VAM, "vpermr", 0, vr3}, + {4, 60, VAM, "vaddeuqm", 0, vr3}, + {4, 61, VAM, "vaddecuq", 0, vr3}, + {4, 62, VAM, "vsubeuqm", 0, vr3}, + {4, 63, VAM, "vsubecuq", 0, vr3}, + {6, 0, ALL, "lxvp", 0, 0}, + {6, 1, ALL, "stxvp", 0, 0}, + {31, 128, ALL, "setb", 0, 0}, + {31, 192, ALL, "cmprb", 0, 0}, + {31, 224, ALL, "cmpeqb", 0, 0}, + {31, 384, ALL, "setbc", 0, 0}, + {31, 416, ALL, "setbcr", 0, 0}, + {31, 448, ALL, "setnbc", 0, 0}, + {31, 480, ALL, "setnbcr", 0, 0}, + {31, 576, ALL, "mcrxrx", 0, 0}, + {31, 6, ALL, "lvsl", 0, 0}, + {31, 38, ALL, "lvsr", 0, 0}, + {31, 582, ALL, "lwat", 0, 0}, + {31, 614, ALL, "ldat", 0, 0}, + {31, 710, ALL, "stwat", 0, 0}, + {31, 742, ALL, "stdat", 0, 0}, + {31, 774, ALL, "copy", 0, 0}, + {31, 838, ALL, "cpabort", 0, 0}, + {31, 902, ALL, "paste[.]", 0, 0}, + {31, 7, ALL, "lvebx", 0, 0}, + {31, 39, ALL, "lvehx", 0, 0}, + {31, 71, ALL, "lvewx", 0, 0}, + {31, 103, ALL, "lvx", 0, 0}, + {31, 135, ALL, "stvebx", 0, 0}, + {31, 167, ALL, "stvehx", 0, 0}, + {31, 199, ALL, "stvewx", 0, 0}, + {31, 231, ALL, "stvx", 0, 0}, + {31, 359, ALL, "lvxl", 0, 0}, + {31, 487, ALL, "stvxl", 0, 0}, + {31, 265, ALL, "modud", 0, 0}, + {31, 393, ALL, "divdeu[.]", 0, 0}, + {31, 425, ALL, "divde[.]", 0, 0}, + {31, 777, ALL, "modsd", 0, 0}, + {31, 905, ALL, "divdeuo[.]", 0, 0}, + {31, 937, ALL, "divdeo[.]", 0, 0}, + {31, 170, 0b11111111, "addex", 0, 0}, + {31, 74, ALL, "addg", 0, 0}, + {31, 267, ALL, "moduw", 0, 0}, + {31, 395, ALL, "divweu[.]", 0, 0}, + {31, 427, ALL, "divwe[.]", 0, 0}, + {31, 779, ALL, "modsw", 0, 0}, + {31, 907, ALL, "divweuo[.]", 0, 0}, + {31, 939, ALL, "divweo[.]", 0, 0}, + {31, 12, ALL, "lxsiwzx", 0, 0}, + {31, 76, ALL, "lxsiwax", 0, 0}, + {31, 140, ALL, "stxsiwx", 0, 0}, + {31, 268, ALL, "lxvx", 0, 0}, + {31, 332, ALL, "lxvdsx", 0, 0}, + {31, 364, ALL, "lxvwsx", 0, 0}, + {31, 396, ALL, "stxvx", 0, 0}, + {31, 524, ALL, "lxsspx", 0, 0}, + {31, 588, ALL, "lxsdx", 0, 0}, + {31, 652, ALL, "stxsspx", 0, 0}, + {31, 716, ALL, "stxsdx", 0, 0}, + {31, 780, ALL, "lxvw4x", 0, 0}, + {31, 812, ALL, "lxvh8x", 0, 0}, + {31, 844, ALL, "lxvd2x", 0, 0}, + {31, 876, ALL, "lxvb16x", 0, 0}, + {31, 908, ALL, "stxvw4x", 0, 0}, + {31, 940, ALL, "stxvh8x", 0, 0}, + {31, 972, ALL, "stxvd2x", 0, 0}, + {31, 1004, ALL, "stxvb16x", 0, 0}, + {31, 13, ALL, "lxvrbx", 0, 0}, + {31, 45, ALL, "lxvrhx", 0, 0}, + {31, 77, ALL, "lxvrwx", 0, 0}, + {31, 109, ALL, "lxvrdx", 0, 0}, + {31, 141, ALL, "stxvrbx", 0, 0}, + {31, 173, ALL, "stxvrhx", 0, 0}, + {31, 205, ALL, "stxvrwx", 0, 0}, + {31, 237, ALL, "stxvrdx", 0, 0}, + {31, 269, ALL, "lxvl", 0, 0}, + {31, 301, ALL, "lxvll", 0, 0}, + {31, 333, ALL, "lxvpx", 0, 0}, + {31, 397, ALL, "stxvl", 0, 0}, + {31, 429, ALL, "stxvll", 0, 0}, + {31, 461, ALL, "stxvpx", 0, 0}, + {31, 781, ALL, "lxsibzx", 0, 0}, + {31, 813, ALL, "lxsihzx", 0, 0}, + {31, 909, ALL, "stxsibx", 0, 0}, + {31, 941, ALL, "stxsihx", 0, 0}, + {31, 78, ALL, "msgsndu", 0, 0}, + {31, 110, ALL, "msgclru", 0, 0}, + {31, 142, ALL, "msgsndp", 0, 0}, + {31, 174, ALL, "msgclrp", 0, 0}, + {31, 206, ALL, "msgsnd", 0, 0}, + {31, 238, ALL, "msgclr", 0, 0}, + {31, 302, ALL, "mfbhrbe", 0, 0}, + {31, 430, ALL, "clrbhrb", 0, 0}, + {31, 15, 0b11111, "isel", 0, 0}, + {31, 177, ALL, "xxmfacc", vra2s, vr2}, + {31, 177, ALL, "xxmtacc", vra2s, vr2}, + {31, 177, ALL, "xxsetaccz", vra2s, vr2}, + {31, 338, ALL, "slbsync", 0, 0}, + {31, 850, ALL, "slbiag", 0, 0}, + {31, 51, ALL, "mfvsrd", 0, 0}, + {31, 115, ALL, "mfvsrwz", 0, 0}, + {31, 179, ALL, "mtvsrd", 0, 0}, + {31, 211, ALL, "mtvsrwa", 0, 0}, + {31, 243, ALL, "mtvsrwz", 0, 0}, + {31, 307, ALL, "mfvsrld", 0, 0}, + {31, 371, ALL, "mftb", 0, 0}, + {31, 403, ALL, "mtvsrws", 0, 0}, + {31, 435, ALL, "mtvsrdd", 0, 0}, + {31, 755, ALL, "darn", 0, 0}, + {31, 979, ALL, "slbfee.", 0, 0}, + {31, 52, ALL, "lbarx", 0, 0}, + {31, 116, ALL, "lharx", 0, 0}, + {31, 276, ALL, "lqarx", 0, 0}, + {31, 532, ALL, "ldbrx", 0, 0}, + {31, 660, ALL, "stdbrx", 0, 0}, + {31, 789, ALL, "lwzcix", 0, 0}, + {31, 821, ALL, "lhzcix", 0, 0}, + {31, 853, ALL, "lbzcix", 0, 0}, + {31, 885, ALL, "ldcix", 0, 0}, + {31, 917, ALL, "stwcix", 0, 0}, + {31, 949, ALL, "sthcix", 0, 0}, + {31, 981, ALL, "stbcix", 0, 0}, + {31, 1013, ALL, "stdcix", 0, 0}, + {31, 22, ALL, "icbt", 0, 0}, + {31, 886, ALL, "msgsync", 0, 0}, + {31, 182, ALL, "stqcx.", 0, 0}, + {31, 694, ALL, "stbcx.", 0, 0}, + {31, 726, ALL, "sthcx.", 0, 0}, + {31, 503, ALL, "spom", 0, 0}, + {31, 791, ALL, "lfdpx", 0, 0}, + {31, 855, ALL, "lfiwax", 0, 0}, + {31, 887, ALL, "lfiwzx", 0, 0}, + {31, 919, ALL, "stfdpx", 0, 0}, + {31, 983, ALL, "stfiwx", 0, 0}, + {31, 1015, ALL, "lqm", 0, 0}, + {31, 445<<1, 0b1111111110, "extswsli[.]", 0, 0}, + {31, 122, ALL, "popcntb", 0, 0}, + {31, 154, ALL, "prtyw", 0, 0}, + {31, 186, ALL, "prtyd", 0, 0}, + {31, 282, ALL, "cdtbcd", 0, 0}, + {31, 314, ALL, "cbcdtd", 0, 0}, + {31, 378, ALL, "popcntw", 0, 0}, + {31, 506, ALL, "popcntd", 0, 0}, + {31, 538, ALL, "cnttzw[.]", 0, 0}, + {31, 570, ALL, "cnttzd[.]", 0, 0}, + {31, 59, ALL, "cntlzdm", 0, 0}, + {31, 155, ALL, "brw", 0, 0}, + {31, 187, ALL, "brd", 0, 0}, + {31, 219, ALL, "brh", 0, 0}, + {31, 571, ALL, "cnttzdm", 0, 0}, + {31, 156, ALL, "pdepd", 0, 0}, + {31, 188, ALL, "pextd", 0, 0}, + {31, 220, ALL, "cfuged", 0, 0}, + {31, 252, ALL, "bpermd", 0, 0}, + {31, 508, ALL, "cmpb", 0, 0}, + {31, 30, ALL, "wait", 0, 0}, + {56, 0, 0b111, "lq", 0, 0}, + {57, 0, ALL, "lfdp", 0, 0}, + {57, 2, ALL, "lxsd", 0, 0}, + {57, 3, ALL, "lxssp", 0, 0}, + {59, 66, 0b1111111111, "dscli[.]", 0, 0}, + {59, 98, ALL, "dscri[.]", 0, 0}, + {59, 194, ALL, "dtstdc", 0, 0}, + {59, 226, ALL, "dtstdg", 0, 0}, + {59, 2, ALL, "dadd[.]", 0, 0}, + {59, 34, ALL, "dmul[.]", 0, 0}, + {59, 130, ALL, "dcmpo", 0, 0}, + {59, 162, ALL, "dtstex", 0, 0}, + {59, 258, ALL, "dctdp[.]", 0, 0}, + {59, 290, ALL, "dctfix[.]", 0, 0}, + {59, 322, ALL, "ddedpd[.]", 0, 0}, + {59, 354, ALL, "dxex[.]", 0, 0}, + {59, 514, ALL, "dsub[.]", 0, 0}, + {59, 546, ALL, "ddiv[.]", 0, 0}, + {59, 642, ALL, "dcmpu", 0, 0}, + {59, 674, ALL, "dtstsf", 0, 0}, + {59, 770, ALL, "drsp[.]", 0, 0}, + {59, 802, ALL, "dcffix[.]", 0, 0}, + {59, 834, ALL, "denbcd[.]", 0, 0}, + {59, 866, ALL, "diex[.]", 0, 0}, + {59, 3, 0b11111111, "dqua[.]", 0, 0}, + {59, 35, 0b11111111, "drrnd[.]", 0, 0}, + {59, 67, 0b11111111, "dquai[.]", 0, 0}, + {59, 99, 0b11111111, "drintx[.]", 0, 0}, + {59, 227, 0b11111111, "drintn[.]", 0, 0}, + {59, 675, ALL, "dtstsfi", 0, 0}, + {59, 2<<2, 0b1111111100, "xvi8ger4pp", 0, 0}, + {59, 18<<2, 0b1111111100, "xvf16ger2pp", 0, 0}, + {59, 26<<2, 0b1111111100, "xvf32gerpp", 0, 0}, + {59, 34<<2, 0b1111111100, "xvi4ger8pp", 0, 0}, + {59, 210<<2, 0b1111111100, "xvf16ger2nn", 0, 0}, + {59, 218<<2, 0b1111111100, "xvf32gernn", 0, 0}, + {59, 242<<2, 0b1111111100, "xvbf16ger2nn", 0, 0}, + {59, 250<<2, 0b1111111100, "xvf64gernn", 0, 0}, + {59, 3<<2, 0b1111111100, "xvi8ger4", 0, 0}, + {59, 19<<2, 0b1111111100, "xvf16ger2", 0, 0}, + {59, 27<<2, 0b1111111100, "xvf32ger", 0, 0}, + {59, 35<<2, 0b1111111100, "xvi4ger8", 0, 0}, + {59, 43<<2, 0b1111111100, "xvi16ger2s", 0, 0}, + {59, 59<<2, 0b1111111100, "xvf64ger", 0, 0}, + {59, 75<<2, 0b1111111100, "xvi16ger2", 0, 0}, + {59, 99<<2, 0b1111111100, "xvi8ger4spp", 0, 0}, + {59, 107<<2, 0b1111111100, "xvi16ger2pp", 0, 0}, + {59, 51<<2, 0b1111111100, "xvbf16ger2", 0, 0}, + {59, 99<<2, 0b1111111100, "xvi8ger4spp", 0, 0}, + {59, 846, ALL, "fcfids[.]", 0, 0}, + {59, 974, ALL, "fcfidus[.]", 0, 0}, + {59, 26, ALL, "frsqrtes[.]", 0, 0}, + {60, 0, ~3, "xsaddsp", 0, 0}, + {60, 32, ~3, "xssubsp", 0, 0}, + {60, 64, ~3, "xsmulsp", 0, 0}, + {60, 96, ~3, "xsdivsp", 0, 0}, + {60, 128, ~3, "xsadddp", 0, 0}, + {60, 160, ~3, "xssubdp", 0, 0}, + {60, 192, ~3, "xsmuldp", 0, 0}, + {60, 224, ~3, "xsdivdp", 0, 0}, + {60, 256, ~3, "xvaddsp", 0, 0}, + {60, 288, ~3, "xvsubsp", 0, 0}, + {60, 320, ~3, "xvmulsp", 0, 0}, + {60, 352, ~3, "xvdivsp", 0, 0}, + {60, 384, ~3, "xvadddp", 0, 0}, + {60, 416, ~3, "xvsubdp", 0, 0}, + {60, 448, ~3, "xvmuldp", 0, 0}, + {60, 480, ~3, "xvdivdp", 0, 0}, + {60, 512, ~3, "xsmaxcdp", 0, 0}, + {60, 544, ~3, "xsmincdp", 0, 0}, + {60, 576, ~3, "xsmaxjdp", 0, 0}, + {60, 608, ~3, "xsminjdp", 0, 0}, + {60, 640, ~3, "xsmaxdp", 0, 0}, + {60, 672, ~3, "xsmindp", 0, 0}, + {60, 704, ~3, "xscpsgndp", 0, 0}, + {60, 768, ~3, "xvmaxsp", 0, 0}, + {60, 800, ~3, "xvminsp", 0, 0}, + {60, 832, ~3, "xvcpsgnsp", 0, 0}, + {60, 864, ~3, "xviexpsp", 0, 0}, + {60, 896, ~3, "xvmaxdp", 0, 0}, + {60, 928, ~3, "xvmindp", 0, 0}, + {60, 960, ~3, "xvcpsgndp", 0, 0}, + {60, 992, ~3, "xviexpdp", 0, 0}, + {60, 4, ~3, "xsmaddasp", 0, 0}, + {60, 36, ~3, "xsmaddmsp", 0, 0}, + {60, 68, ~3, "xsmsubasp", 0, 0}, + {60, 100, ~3, "xsmsubmsp", 0, 0}, + {60, 132, ~3, "xsmaddadp", 0, 0}, + {60, 164, ~3, "xsmaddmdp", 0, 0}, + {60, 196, ~3, "xsmsubadp", 0, 0}, + {60, 228, ~3, "xsmsubmdp", 0, 0}, + {60, 260, ~3, "xvmaddasp", 0, 0}, + {60, 292, ~3, "xvmaddmsp", 0, 0}, + {60, 324, ~3, "xvmsubasp", 0, 0}, + {60, 356, ~3, "xvmsubmsp", 0, 0}, + {60, 388, ~3, "xvmaddadp", 0, 0}, + {60, 420, ~3, "xvmaddmdp", 0, 0}, + {60, 452, ~3, "xvmsubadp", 0, 0}, + {60, 484, ~3, "xvmsubmdp", 0, 0}, + {60, 516, ~3, "xsnmaddasp", 0, 0}, + {60, 548, ~3, "xsnmaddmsp", 0, 0}, + {60, 580, ~3, "xsnmsubasp", 0, 0}, + {60, 612, ~3, "xsnmsubmsp", 0, 0}, + {60, 644, ~3, "xsnmaddadp", 0, 0}, + {60, 676, ~3, "xsnmaddmdp", 0, 0}, + {60, 708, ~3, "xsnmsubadp", 0, 0}, + {60, 740, ~3, "xsnmsubmdp", 0, 0}, + {60, 772, ~3, "xvnmaddasp", 0, 0}, + {60, 804, ~3, "xvnmaddmsp", 0, 0}, + {60, 836, ~3, "xvnmsubasp", 0, 0}, + {60, 868, ~3, "xvnmsubmsp", 0, 0}, + {60, 900, ~3, "xvnmaddadp", 0, 0}, + {60, 932, ~3, "xvnmaddmdp", 0, 0}, + {60, 964, ~3, "xvnmsubadp", 0, 0}, + {60, 996, ~3, "xvnmsubmdp", 0, 0}, + {60, 2<<2, 0b1001111100, "xxsldwi", 0, 0}, + {60, 10<<2, 0b1001111100, "xxpermdi", 0, 0}, + {60, 72, ~3, "xxmrghw", 0, 0}, + {60, 104, ~3, "xxperm", 0, 0}, + {60, 200, ~3, "xxmrglw", 0, 0}, + {60, 232, ~3, "xxpermr", 0, 0}, + {60, 130<<2, ~3, "xxland", 0, 0}, + {60, 552, ~3, "xxlandc", 0, 0}, + {60, 584, ~3, "xxlor", 0, 0}, + {60, 616, ~3, "xxlxor", 0, 0}, + {60, 648, ~3, "xxlnor", 0, 0}, + {60, 680, ~3, "xxlorc", 0, 0}, + {60, 712, ~3, "xxlnand", 0, 0}, + {60, 744, ~3, "xxleqv", 0, 0}, + {60, 164<<1, ~1, "xxspltw", 0, 0}, + {60, 360, ALL, "xxspltib", vra2s, vr2}, + {60, 360, ALL, "lxvkq", vra2s, vr2}, + {60, 165<<1, ~1, "xxextractuw", 0, 0}, + {60, 181<<1, ~1, "xxinsertw", 0, 0}, + {60, 268, 0b111111100, "xvcmpeqsp[.]", 0, 0}, + {60, 300, 0b111111100, "xvcmpgtsp[.]", 0, 0}, + {60, 332, 0b111111100, "xvcmpgesp[.]", 0, 0}, + {60, 396, 0b111111100, "xvcmpeqdp[.]", 0, 0}, + {60, 428, 0b111111100, "xvcmpgtdp[.]", 0, 0}, + {60, 460, 0b111111100, "xvcmpgedp[.]", 0, 0}, + {60, 12, ~3, "xscmpeqdp", 0, 0}, + {60, 44, ~3, "xscmpgtdp", 0, 0}, + {60, 76, ~3, "xscmpgedp", 0, 0}, + {60, 140, ~3, "xscmpudp", 0, 0}, + {60, 172, ~3, "xscmpodp", 0, 0}, + {60, 236, ~3, "xscmpexpdp", 0, 0}, + {60, 72<<1, ~1, "xscvdpuxws", 0, 0}, + {60, 88<<1, ~1, "xscvdpsxws", 0, 0}, + {60, 136<<1, ~1, "xvcvspuxws", 0, 0}, + {60, 304, ~1, "xvcvspsxws", 0, 0}, + {60, 336, ~1, "xvcvuxwsp", 0, 0}, + {60, 368, ~1, "xvcvsxwsp", 0, 0}, + {60, 400, ~1, "xvcvdpuxws", 0, 0}, + {60, 432, ~1, "xvcvdpsxws", 0, 0}, + {60, 464, ~1, "xvcvuxwdp", 0, 0}, + {60, 496, ~1, "xvcvsxwdp", 0, 0}, + {60, 592, ~1, "xscvuxdsp", 0, 0}, + {60, 624, ~1, "xscvsxdsp", 0, 0}, + {60, 656, ~1, "xscvdpuxds", 0, 0}, + {60, 688, ~1, "xscvdpsxds", 0, 0}, + {60, 720, ~1, "xscvuxddp", 0, 0}, + {60, 752, ~1, "xscvsxddp", 0, 0}, + {60, 784, ~1, "xvcvspuxds", 0, 0}, + {60, 816, ~1, "xvcvspsxds", 0, 0}, + {60, 848, ~1, "xvcvuxdsp", 0, 0}, + {60, 880, ~1, "xvcvsxdsp", 0, 0}, + {60, 912, ~1, "xvcvdpuxds", 0, 0}, + {60, 944, ~1, "xvcvdpsxds", 0, 0}, + {60, 976, ~1, "xvcvuxddp", 0, 0}, + {60, 1008, ~1, "xvcvsxddp", 0, 0}, + {60, 73<<1, ~1, "xsrdpi", 0, 0}, + {60, 89<<1, ~1, "xsrdpiz", 0, 0}, + {60, 210, ~1, "xsrdpip", 0, 0}, + {60, 242, ~1, "xsrdpim", 0, 0}, + {60, 137<<1, ~1, "xvrspi", 0, 0}, + {60, 153<<1, ~1, "xvrspiz", 0, 0}, + {60, 169<<1, ~1, "xvrspip", 0, 0}, + {60, 185<<1, ~1, "xvrspim", 0, 0}, + {60, 201<<1, ~1, "xvrdpi", 0, 0}, + {60, 217<<1, ~1, "xvrdpiz", 0, 0}, + {60, 466, ~1, "xvrdpip", 0, 0}, + {60, 498, ~1, "xvrdpim", 0, 0}, + {60, 530, ~1, "xscvdpsp", 0, 0}, + {60, 562, ~1, "xsrsp", 0, 0}, + {60, 329<<1, ~1, "xscvspdp", 0, 0}, + {60, 690, ~1, "xsabsdp", 0, 0}, + {60, 722, ~1, "xsnabsdp", 0, 0}, + {60, 754, ~1, "xsnegdp", 0, 0}, + {60, 786, ~1, "xvcvdpsp", 0, 0}, + {60, 818, ~1, "xvabssp", 0, 0}, + {60, 850, ~1, "xvnabssp", 0, 0}, + {60, 882, ~1, "xvnegsp", 0, 0}, + {60, 457<<1, ~1, "xvcvspdp", 0, 0}, + {60, 473<<1, ~1, "xvabsdp", 0, 0}, + {60, 489<<1, ~1, "xvnabsdp", 0, 0}, + {60, 505<<1, ~1, "xvnegdp", 0, 0}, + {60, 61<<2, ~3, "xstdivdp", 0, 0}, + {60, 93<<2, ~3, "xvtdivsp", 0, 0}, + {60, 125<<2, ~3, "xvtdivdp", 0, 0}, + {60, (13<<6)|(5<<2), 0b1111011100, "xvtstdcsp", 0, 0}, + {60, (15<<6)|(5<<2), 0b1111011100, "xvtstdcdp", 0, 0}, + {60, 10<<1, ~1, "xsrsqrtesp", 0, 0}, + {60, 26<<1, ~1, "xsresp", 0, 0}, + {60, 74<<1, ~1, "xsrsqrtedp", 0, 0}, + {60, 90<<1, ~1, "xsredp", 0, 0}, + {60, 106<<1, ~1, "xstsqrtdp", 0, 0}, + {60, 138<<1, ~1, "xvrsqrtesp", 0, 0}, + {60, 154<<1, ~1, "xvresp", 0, 0}, + {60, 170<<1, ~1, "xvtsqrtsp", 0, 0}, + {60, 202<<1, ~1, "xvrsqrtedp", 0, 0}, + {60, 218<<1, ~1, "xvredp", 0, 0}, + {60, 234<<1, ~1, "xvtsqrtdp", 0, 0}, + {60, 298<<1, ~1, "xststdcsp", 0, 0}, + {60, 362<<1, ~1, "xststdcdp", 0, 0}, + {60, 916, ALL, "xxgenpcvbm", 0, 0}, + {60, 948, ALL, "xxgenpcvwm", 0, 0}, + {60, 917, ALL, "xxgenpcvhm", 0, 0}, + {60, 949, ALL, "xxgenpcvdm", 0, 0}, + {60, 11<<1, ~1, "xssqrtsp", 0, 0}, + {60, 75<<1, ~1, "xssqrtdp", 0, 0}, + {60, 107<<1, ~1, "xsrdpic", 0, 0}, + {60, 139<<1, ~1, "xvsqrtsp", 0, 0}, + {60, 171<<1, ~1, "xvrspic", 0, 0}, + {60, 203<<1, ~1, "xvsqrtdp", 0, 0}, + {60, 235<<1, ~1, "xvrdpic", 0, 0}, + {60, 267<<1, ~1, "xscvdpspn", 0, 0}, + {60, 331<<1, ~1, "xscvspdpn", 0, 0}, + {60, 347<<1, ~1, "xsxexpdp", vra2s, vr2}, + {60, 347<<1, ~1, "xsxsigdp", vra2s, vr2}, + {60, 347<<1, ~1, "xscvhpdp", vra2s, vr2}, + {60, 347<<1, ~1, "xscvdphp", vra2s, vr2}, + {60, 475<<1, ~1, "xvxexpdp", vra2s, vr2}, + {60, 475<<1, ~1, "xvxsigdp", vra2s, vr2}, + {60, 475<<1, ~1, "xvtlsbb", vra2s, vr2}, + {60, 475<<1, ~1, "xxbrh", vra2s, vr2}, + {60, 475<<1, ~1, "xvxexpsp", vra2s, vr2}, + {60, 475<<1, ~1, "xvxsigsp", vra2s, vr2}, + {60, 475<<1, ~1, "xxbrw", vra2s, vr2}, + {60, 475<<1, ~1, "xvcvbf16sp", vra2s, vr2}, + {60, 475<<1, ~1, "xvcvspbf16", vra2s, vr2}, + {60, 475<<1, ~1, "xxbrd", vra2s, vr2}, + {60, 475<<1, ~1, "xvcvhpsp", vra2s, vr2}, + {60, 475<<1, ~1, "xvcvsphp", vra2s, vr2}, + {60, 475<<1, ~1, "xxbrq", vra2s, vr2}, + {60, 918, ALL, "xsiexpdp", 0, 0}, + {60, 3<<3, 0b11000, "xxsel", 0, 0}, + {61, 0, 0b11, "stfdp", 0, 0}, + {61, 2, 0b11, "stxsd", 0, 0}, + {61, 3, 0b11, "stxssp", 0, 0}, + {61, 1, ALL, "lxv", 0, 0}, + {61, 5, ALL, "stxv", 0, 0}, + {63, 128, ALL, "ftdiv", 0, 0}, + {63, 160, ALL, "ftsqrt", 0, 0}, + {63, 66, ALL, "dscliq[.]", 0, 0}, + {63, 98, ALL, "dscriq[.]", 0, 0}, + {63, 194, ALL, "dtstdcq", 0, 0}, + {63, 226, ALL, "dtstdgq", 0, 0}, + {63, 2, ALL, "daddq[.]", 0, 0}, + {63, 34, ALL, "dmulq[.]", 0, 0}, + {63, 130, ALL, "dcmpoq", 0, 0}, + {63, 162, ALL, "dtstexq", 0, 0}, + {63, 258, ALL, "dctqpq[.]", 0, 0}, + {63, 290, ALL, "dctfixq[.]", 0, 0}, + {63, 322, ALL, "ddedpdq[.]", 0, 0}, + {63, 354, ALL, "dxexq[.]", 0, 0}, + {63, 514, ALL, "dsubq[.]", 0, 0}, + {63, 546, ALL, "ddivq[.]", 0, 0}, + {63, 642, ALL, "dcmpuq", 0, 0}, + {63, 674, ALL, "dtstsfq", 0, 0}, + {63, 770, ALL, "drdpq[.]", 0, 0}, + {63, 802, ALL, "dcffixq[.]", 0, 0}, + {63, 834, ALL, "denbcdq[.]", 0, 0}, + {63, 866, ALL, "diexq[.]", 0, 0}, + {63, 994, ALL, "dcffixqq", vra2s, vr2}, + {63, 994, ALL, "dctfixqq", vra2s, vr2}, + {63, 3, 0b11111111, "dquaq[.]", 0, 0}, + {63, 35, 0b11111111, "drrndq[.]", 0, 0}, + {63, 67, 0b11111111, "dquaiq[.]", 0, 0}, + {63, 99, 0b11111111, "drintxq[.]", 0, 0}, + {63, 227, 0b11111111, "drintnq[.]", 0, 0}, + {63, 675, ALL, "dtstsfiq", 0, 0}, + {63, 4, ALL, "xsaddqp[o]", 0, 0}, + {63, 36, ALL, "xsmulqp[o]", 0, 0}, + {63, 68, ALL, "xscmpeqqp", 0, 0}, + {63, 100, ALL, "xscpsgnqp", 0, 0}, + {63, 132, ALL, "xscmpoqp", 0, 0}, + {63, 164, ALL, "xscmpexpqp", 0, 0}, + {63, 196, ALL, "xscmpgeqp", 0, 0}, + {63, 228, ALL, "xscmpgtqp", 0, 0}, + {63, 388, ALL, "xsmaddqp[o]", 0, 0}, + {63, 420, ALL, "xsmsubqp[o]", 0, 0}, + {63, 452, ALL, "xsnmaddqp[o]", 0, 0}, + {63, 484, ALL, "xsnmsubqp[o]", 0, 0}, + {63, 516, ALL, "xssubqp[o]", 0, 0}, + {63, 548, ALL, "xsdivqp[o]", 0, 0}, + {63, 644, ALL, "xscmpuqp", 0, 0}, + {63, 676, ALL, "xsmaxcqp", 0, 0}, + {63, 708, ALL, "xststdcqp", 0, 0}, + {63, 740, ALL, "xsmincqp", 0, 0}, + {63, 804, ALL, "xsabsqp", vra2s, vr2}, + {63, 804, ALL, "xsxexpqp", vra2s, vr2}, + {63, 804, ALL, "xsnabsqp", vra2s, vr2}, + {63, 804, ALL, "xsnegqp", vra2s, vr2}, + {63, 804, ALL, "xsxsigqp", vra2s, vr2}, + {63, 804, ALL, "xssqrtqp[o]", vra2s, vr2}, + {63, 836, ALL, "xscvqpuqz", vra2s, vr2}, + {63, 836, ALL, "xscvqpuwz", vra2s, vr2}, + {63, 836, ALL, "xscvudqp", vra2s, vr2}, + {63, 836, ALL, "xscvuqqp", vra2s, vr2}, + {63, 836, ALL, "xscvqpsqz", vra2s, vr2}, + {63, 836, ALL, "xscvqpswz", vra2s, vr2}, + {63, 836, ALL, "xscvsdqp", vra2s, vr2}, + {63, 836, ALL, "xscvsqqp", vra2s, vr2}, + {63, 836, ALL, "xscvqpudz", vra2s, vr2}, + {63, 868, ALL, "xsiexpqp", 0, 0}, + {63, 5, 0b11111111, "xsrqpi[x]", 0, 0}, + {63, 37, 0b11111111, "xsrqpxp", 0, 0}, + {63, 838, ALL, "fmrgow", 0, 0}, + {63, 966, ALL, "fmrgew", 0, 0}, + {63, 8, ALL, "fcpsgn[.]", 0, 0}, + {63, 392, ALL, "frin[.]", 0, 0}, + {63, 424, ALL, "friz[.]", 0, 0}, + {63, 456, ALL, "frip[.]", 0, 0}, + {63, 488, ALL, "frim[.]", 0, 0}, + {63, 142, ALL, "fctiwu[.]", 0, 0}, + {63, 942, ALL, "fctidu[.]", 0, 0}, + {63, 974, ALL, "fcfidu[.]", 0, 0}, + {63, 143, ALL, "fctiwuz[.]", 0, 0}, + {63, 943, ALL, "fctiduz[.]", 0, 0}, + {63, 24, ALL, "fre[.]", 0, 0}, + {59, 42<<2, ~3, "xvi16ger2spp", 0, 0}, + {59, 50<<2, ~3, "xvbf16ger2pp", 0, 0}, + {59, 58<<2, ~3, "xvf64gerpp", 0, 0}, + {59, 82<<2, ~3, "xvf16ger2np", 0, 0}, + {59, 90<<2, ~3, "xvf32gernp", 0, 0}, + {59, 114<<2, ~3, "xvbf16ger2np", 0, 0}, + {59, 122<<2, ~3, "xvf64gernp", 0, 0}, + {59, 146<<2, ~3, "xvf16ger2pn", 0, 0}, + {59, 154<<2, ~3, "xvf32gerpn", 0, 0}, + {59, 178<<2, ~3, "xvbf16ger2pn", 0, 0}, + {59, 186<<2, ~3, "xvf64gerpn", 0, 0}, + + {1, 0, 0, "", prefixed, 0}, {0}, }; @@ -1062,6 +2253,7 @@ format(char *mnemonic, Instr *i, char *f) int n, s; ulong mask; uvlong vmask; + Rune r; if (mnemonic) format(0, i, mnemonic); @@ -1069,12 +2261,27 @@ format(char *mnemonic, Instr *i, char *f) return; if (mnemonic) bprint(i, "\t"); - for ( ; *f; f++) { - if (*f != '%') { - bprint(i, "%c", *f); + for (;;){ + f += chartorune(&r, f); + if(r == 0) + break; + if (r != '%') { + bprint(i, "%C", r); continue; } - switch (*++f) { + f += chartorune(&r, f); + switch (r) { + case L'あ': + bprint(i, "%d", i->vra); + break; + + case L'い': + bprint(i, "%d", i->vrb); + break; + + case L'う': + bprint(i, "%d", i->vrd); + break; case 'a': bprint(i, "%d", i->ra); diff --git a/sys/src/libmach/test/mkfile b/sys/src/libmach/test/mkfile new file mode 100644 index 000000000..cef4124e8 --- /dev/null +++ b/sys/src/libmach/test/mkfile @@ -0,0 +1,6 @@ + +#include +#include +#include + +/* + * The following tables are copy-pasted from + * the POWER ISA 3.1 instruction manual + * "Instructions Ordered By Opcode" section + */ + +typedef struct Ins Ins; +typedef struct Word Word; + +struct Ins { + char *op; + char *a1; + char *a2; + char *a3; + char *xop; +}; + +struct Word { + Ins; + char *mneomic; +}; + +Word instab[] = { + {"000010", ".....", ".....", ".....", "...........", "tdi"}, + {"000011", ".....", ".....", ".....", "...........", "twi"}, + {"000100", ".....", ".....", ".....", "00000000000", "vaddubm"}, + {"000100", ".....", ".....", ".....", "00001000000", "vadduhm"}, + {"000100", ".....", ".....", ".....", "00010000000", "vadduwm"}, + {"000100", ".....", ".....", ".....", "00011000000", "vaddudm"}, + {"000100", ".....", ".....", ".....", "00100000000", "vadduqm"}, + {"000100", ".....", ".....", ".....", "00101000000", "vaddcuq"}, + {"000100", ".....", ".....", ".....", "00110000000", "vaddcuw"}, + {"000100", ".....", ".....", ".....", "01000000000", "vaddubs"}, + {"000100", ".....", ".....", ".....", "01001000000", "vadduhs"}, + {"000100", ".....", ".....", ".....", "01010000000", "vadduws"}, + {"000100", ".....", ".....", ".....", "01100000000", "vaddsbs"}, + {"000100", ".....", ".....", ".....", "01101000000", "vaddshs"}, + {"000100", ".....", ".....", ".....", "01110000000", "vaddsws"}, + {"000100", ".....", ".....", ".....", "10000000000", "vsububm"}, + {"000100", ".....", ".....", ".....", "10001000000", "vsubuhm"}, + {"000100", ".....", ".....", ".....", "10010000000", "vsubuwm"}, + {"000100", ".....", ".....", ".....", "10011000000", "vsubudm"}, + {"000100", ".....", ".....", ".....", "10100000000", "vsubuqm"}, + {"000100", ".....", ".....", ".....", "10101000000", "vsubcuq"}, + {"000100", ".....", ".....", ".....", "10110000000", "vsubcuw"}, + {"000100", ".....", ".....", ".....", "11000000000", "vsububs"}, + {"000100", ".....", ".....", ".....", "11001000000", "vsubuhs"}, + {"000100", ".....", ".....", ".....", "11010000000", "vsubuws"}, + {"000100", ".....", ".....", ".....", "11100000000", "vsubsbs"}, + {"000100", ".....", ".....", ".....", "11101000000", "vsubshs"}, + {"000100", ".....", ".....", ".....", "11110000000", "vsubsws"}, + {"000100", ".....", ".....", "/////", "00000000001", "vmul10cuq"}, + {"000100", ".....", ".....", ".....", "00001000001", "vmul10ecuq"}, + {"000100", "...//", ".....", ".....", "00100000001", "vcmpuq"}, + {"000100", "...//", ".....", ".....", "00101000001", "vcmpsq"}, + {"000100", ".....", ".....", "/////", "01000000001", "vmul10uq"}, + {"000100", ".....", ".....", ".....", "01001000001", "vmul10euq"}, + {"000100", ".....", ".....", ".....", "01101000001", "bcdcpsgn."}, + {"000100", ".....", ".....", ".....", "1.000000001", "bcdadd."}, + {"000100", ".....", ".....", ".....", "1.001000001", "bcdsub."}, + {"000100", ".....", ".....", ".....", "1/010000001", "bcdus."}, + {"000100", ".....", ".....", ".....", "1.011000001", "bcds."}, + {"000100", ".....", ".....", ".....", "1.100000001", "bcdtrunc."}, + {"000100", ".....", ".....", ".....", "1/101000001", "bcdutrunc."}, + {"000100", ".....", "00000", ".....", "1/110000001", "bcdctsq."}, + {"000100", ".....", "00010", ".....", "1.110000001", "bcdcfsq."}, + {"000100", ".....", "00100", ".....", "1.110000001", "bcdctz."}, + {"000100", ".....", "00101", ".....", "1/110000001", "bcdctn."}, + {"000100", ".....", "00110", ".....", "1.110000001", "bcdcfz."}, + {"000100", ".....", "00111", ".....", "1.110000001", "bcdcfn."}, + {"000100", ".....", "11111", ".....", "1.110000001", "bcdsetsgn."}, + {"000100", ".....", ".....", ".....", "1.111000001", "bcdsr."}, + {"000100", ".....", ".....", ".....", "00000000010", "vmaxub"}, + {"000100", ".....", ".....", ".....", "00001000010", "vmaxuh"}, + {"000100", ".....", ".....", ".....", "00010000010", "vmaxuw"}, + {"000100", ".....", ".....", ".....", "00011000010", "vmaxud"}, + {"000100", ".....", ".....", ".....", "00100000010", "vmaxsb"}, + {"000100", ".....", ".....", ".....", "00101000010", "vmaxsh"}, + {"000100", ".....", ".....", ".....", "00110000010", "vmaxsw"}, + {"000100", ".....", ".....", ".....", "00111000010", "vmaxsd"}, + {"000100", ".....", ".....", ".....", "01000000010", "vminub"}, + {"000100", ".....", ".....", ".....", "01001000010", "vminuh"}, + {"000100", ".....", ".....", ".....", "01010000010", "vminuw"}, + {"000100", ".....", ".....", ".....", "01011000010", "vminud"}, + {"000100", ".....", ".....", ".....", "01100000010", "vminsb"}, + {"000100", ".....", ".....", ".....", "01101000010", "vminsh"}, + {"000100", ".....", ".....", ".....", "01110000010", "vminsw"}, + {"000100", ".....", ".....", ".....", "01111000010", "vminsd"}, + {"000100", ".....", ".....", ".....", "10000000010", "vavgub"}, + {"000100", ".....", ".....", ".....", "10001000010", "vavguh"}, + {"000100", ".....", ".....", ".....", "10010000010", "vavguw"}, + {"000100", ".....", ".....", ".....", "10100000010", "vavgsb"}, + {"000100", ".....", ".....", ".....", "10101000010", "vavgsh"}, + {"000100", ".....", ".....", ".....", "10110000010", "vavgsw"}, + {"000100", ".....", "00000", ".....", "11000000010", "vclzlsbb"}, + {"000100", ".....", "00001", ".....", "11000000010", "vctzlsbb"}, + {"000100", ".....", "00110", ".....", "11000000010", "vnegw"}, + {"000100", ".....", "00111", ".....", "11000000010", "vnegd"}, + {"000100", ".....", "01000", ".....", "11000000010", "vprtybw"}, + {"000100", ".....", "01001", ".....", "11000000010", "vprtybd"}, + {"000100", ".....", "01010", ".....", "11000000010", "vprtybq"}, + {"000100", ".....", "10000", ".....", "11000000010", "vextsb2w"}, + {"000100", ".....", "10001", ".....", "11000000010", "vextsh2w"}, + {"000100", ".....", "11000", ".....", "11000000010", "vextsb2d"}, + {"000100", ".....", "11001", ".....", "11000000010", "vextsh2d"}, + {"000100", ".....", "11010", ".....", "11000000010", "vextsw2d"}, + {"000100", ".....", "11011", ".....", "11000000010", "vextsd2q"}, + {"000100", ".....", "11100", ".....", "11000000010", "vctzb"}, + {"000100", ".....", "11101", ".....", "11000000010", "vctzh"}, + {"000100", ".....", "11110", ".....", "11000000010", "vctzw"}, + {"000100", ".....", "11111", ".....", "11000000010", "vctzd"}, + {"000100", ".....", "00000", ".....", "11001000010", "vexpandbm"}, + {"000100", ".....", "00001", ".....", "11001000010", "vexpandhm"}, + {"000100", ".....", "00010", ".....", "11001000010", "vexpandwm"}, + {"000100", ".....", "00011", ".....", "11001000010", "vexpanddm"}, + {"000100", ".....", "00100", ".....", "11001000010", "vexpandqm"}, + {"000100", ".....", "01000", ".....", "11001000010", "vextractbm"}, + {"000100", ".....", "01001", ".....", "11001000010", "vextracthm"}, + {"000100", ".....", "01010", ".....", "11001000010", "vextractwm"}, + {"000100", ".....", "01011", ".....", "11001000010", "vextractdm"}, + {"000100", ".....", "01100", ".....", "11001000010", "vextractqm"}, + {"000100", ".....", "10000", ".....", "11001000010", "mtvsrbm"}, + {"000100", ".....", "10001", ".....", "11001000010", "mtvsrhm"}, + {"000100", ".....", "10010", ".....", "11001000010", "mtvsrwm"}, + {"000100", ".....", "10011", ".....", "11001000010", "mtvsrdm"}, + {"000100", ".....", "10100", ".....", "11001000010", "mtvsrqm"}, + {"000100", ".....", "1100.", ".....", "11001000010", "vcntmbb"}, + {"000100", ".....", "1101.", ".....", "11001000010", "vcntmbd"}, + {"000100", ".....", "1110.", ".....", "11001000010", "vcntmbh"}, + {"000100", ".....", "1111.", ".....", "11001000010", "vcntmbw"}, + {"000100", ".....", ".....", ".....", "11010000010", "vshasigmaw"}, + {"000100", ".....", ".....", ".....", "11011000010", "vshasigmad"}, + {"000100", ".....", "/////", ".....", "11100000010", "vclzb"}, + {"000100", ".....", "/////", ".....", "11101000010", "vclzh"}, + {"000100", ".....", "/////", ".....", "11110000010", "vclzw"}, + {"000100", ".....", "/////", ".....", "11111000010", "vclzd"}, + {"000100", ".....", ".....", ".....", "10000000011", "vabsdub"}, + {"000100", ".....", ".....", ".....", "10001000011", "vabsduh"}, + {"000100", ".....", ".....", ".....", "10010000011", "vabsduw"}, + {"000100", ".....", "/////", ".....", "11100000011", "vpopcntb"}, + {"000100", ".....", "/////", ".....", "11101000011", "vpopcnth"}, + {"000100", ".....", "/////", ".....", "11110000011", "vpopcntw"}, + {"000100", ".....", "/////", ".....", "11111000011", "vpopcntd"}, + {"000100", ".....", ".....", ".....", "00000000100", "vrlb"}, + {"000100", ".....", ".....", ".....", "00001000100", "vrlh"}, + {"000100", ".....", ".....", ".....", "00010000100", "vrlw"}, + {"000100", ".....", ".....", ".....", "00011000100", "vrld"}, + {"000100", ".....", ".....", ".....", "00100000100", "vslb"}, + {"000100", ".....", ".....", ".....", "00101000100", "vslh"}, + {"000100", ".....", ".....", ".....", "00110000100", "vslw"}, + {"000100", ".....", ".....", ".....", "00111000100", "vsl"}, + {"000100", ".....", ".....", ".....", "01000000100", "vsrb"}, + {"000100", ".....", ".....", ".....", "01001000100", "vsrh"}, + {"000100", ".....", ".....", ".....", "01010000100", "vsrw"}, + {"000100", ".....", ".....", ".....", "01011000100", "vsr"}, + {"000100", ".....", ".....", ".....", "01100000100", "vsrab"}, + {"000100", ".....", ".....", ".....", "01101000100", "vsrah"}, + {"000100", ".....", ".....", ".....", "01110000100", "vsraw"}, + {"000100", ".....", ".....", ".....", "01111000100", "vsrad"}, + {"000100", ".....", ".....", ".....", "10000000100", "vand"}, + {"000100", ".....", ".....", ".....", "10001000100", "vandc"}, + {"000100", ".....", ".....", ".....", "10010000100", "vor"}, + {"000100", ".....", ".....", ".....", "10011000100", "vxor"}, + {"000100", ".....", ".....", ".....", "10100000100", "vnor"}, + {"000100", ".....", ".....", ".....", "10101000100", "vorc"}, + {"000100", ".....", ".....", ".....", "10110000100", "vnand"}, + {"000100", ".....", ".....", ".....", "10111000100", "vsld"}, + {"000100", ".....", "/////", "/////", "11000000100", "mfvscr"}, + {"000100", "/////", "/////", ".....", "11001000100", "mtvscr"}, + {"000100", ".....", ".....", ".....", "11010000100", "veqv"}, + {"000100", ".....", ".....", ".....", "11011000100", "vsrd"}, + {"000100", ".....", ".....", ".....", "11100000100", "vsrv"}, + {"000100", ".....", ".....", ".....", "11101000100", "vslv"}, + {"000100", ".....", ".....", ".....", "11110000100", "vclzdm"}, + {"000100", ".....", ".....", ".....", "11111000100", "vctzdm"}, + {"000100", ".....", ".....", ".....", "00000000101", "vrlq"}, + {"000100", ".....", ".....", ".....", "00001000101", "vrlqmi"}, + {"000100", ".....", ".....", ".....", "00010000101", "vrlwmi"}, + {"000100", ".....", ".....", ".....", "00011000101", "vrldmi"}, + {"000100", ".....", ".....", ".....", "00100000101", "vslq"}, + {"000100", ".....", ".....", ".....", "00101000101", "vrlqnm"}, + {"000100", ".....", ".....", ".....", "00110000101", "vrlwnm"}, + {"000100", ".....", ".....", ".....", "00111000101", "vrldnm"}, + {"000100", ".....", ".....", ".....", "01000000101", "vsrq"}, + {"000100", ".....", ".....", ".....", "01100000101", "vsraq"}, + {"000100", ".....", ".....", ".....", ".0000000110", "vcmpequb[.]"}, + {"000100", ".....", ".....", ".....", ".0001000110", "vcmpequh[.]"}, + {"000100", ".....", ".....", ".....", ".0010000110", "vcmpequw[.]"}, + {"000100", ".....", ".....", ".....", ".0011000110", "vcmpeqfp[.]"}, + {"000100", ".....", ".....", ".....", ".0111000110", "vcmpgefp[.]"}, + {"000100", ".....", ".....", ".....", ".1000000110", "vcmpgtub[.]"}, + {"000100", ".....", ".....", ".....", ".1001000110", "vcmpgtuh[.]"}, + {"000100", ".....", ".....", ".....", ".1010000110", "vcmpgtuw[.]"}, + {"000100", ".....", ".....", ".....", ".1011000110", "vcmpgtfp[.]"}, + {"000100", ".....", ".....", ".....", ".1100000110", "vcmpgtsb[.]"}, + {"000100", ".....", ".....", ".....", ".1101000110", "vcmpgtsh[.]"}, + {"000100", ".....", ".....", ".....", ".1110000110", "vcmpgtsw[.]"}, + {"000100", ".....", ".....", ".....", ".1111000110", "vcmpbfp[.]"}, + {"000100", ".....", ".....", ".....", ".0000000111", "vcmpneb[.]"}, + {"000100", ".....", ".....", ".....", ".0001000111", "vcmpneh[.]"}, + {"000100", ".....", ".....", ".....", ".0010000111", "vcmpnew[.]"}, + {"000100", ".....", ".....", ".....", ".0011000111", "vcmpequd[.]"}, + {"000100", ".....", ".....", ".....", ".0100000111", "vcmpnezb[.]"}, + {"000100", ".....", ".....", ".....", ".0101000111", "vcmpnezh[.]"}, + {"000100", ".....", ".....", ".....", ".0110000111", "vcmpnezw[.]"}, + {"000100", ".....", ".....", ".....", ".0111000111", "vcmpequq[.]"}, + {"000100", ".....", ".....", ".....", ".1010000111", "vcmpgtuq[.]"}, + {"000100", ".....", ".....", ".....", ".1011000111", "vcmpgtud[.]"}, + {"000100", ".....", ".....", ".....", ".1110000111", "vcmpgtsq[.]"}, + {"000100", ".....", ".....", ".....", ".1111000111", "vcmpgtsd[.]"}, + {"000100", ".....", ".....", ".....", "00000001000", "vmuloub"}, + {"000100", ".....", ".....", ".....", "00001001000", "vmulouh"}, + {"000100", ".....", ".....", ".....", "00010001000", "vmulouw"}, + {"000100", ".....", ".....", ".....", "00011001000", "vmuloud"}, + {"000100", ".....", ".....", ".....", "00100001000", "vmulosb"}, + {"000100", ".....", ".....", ".....", "00101001000", "vmulosh"}, + {"000100", ".....", ".....", ".....", "00110001000", "vmulosw"}, + {"000100", ".....", ".....", ".....", "00111001000", "vmulosd"}, + {"000100", ".....", ".....", ".....", "01000001000", "vmuleub"}, + {"000100", ".....", ".....", ".....", "01001001000", "vmuleuh"}, + {"000100", ".....", ".....", ".....", "01010001000", "vmuleuw"}, + {"000100", ".....", ".....", ".....", "01011001000", "vmuleud"}, + {"000100", ".....", ".....", ".....", "01100001000", "vmulesb"}, + {"000100", ".....", ".....", ".....", "01101001000", "vmulesh"}, + {"000100", ".....", ".....", ".....", "01110001000", "vmulesw"}, + {"000100", ".....", ".....", ".....", "01111001000", "vmulesd"}, + {"000100", ".....", ".....", ".....", "10000001000", "vpmsumb"}, + {"000100", ".....", ".....", ".....", "10001001000", "vpmsumh"}, + {"000100", ".....", ".....", ".....", "10010001000", "vpmsumw"}, + {"000100", ".....", ".....", ".....", "10011001000", "vpmsumd"}, + {"000100", ".....", ".....", ".....", "10100001000", "vcipher"}, + {"000100", ".....", ".....", ".....", "10101001000", "vncipher"}, + {"000100", ".....", ".....", "/////", "10111001000", "vsbox"}, + {"000100", ".....", ".....", ".....", "11000001000", "vsum4ubs"}, + {"000100", ".....", ".....", ".....", "11001001000", "vsum4shs"}, + {"000100", ".....", ".....", ".....", "11010001000", "vsum2sws"}, + {"000100", ".....", ".....", ".....", "11100001000", "vsum4sbs"}, + {"000100", ".....", ".....", ".....", "11110001000", "vsumsws"}, + {"000100", ".....", ".....", ".....", "00010001001", "vmuluwm"}, + {"000100", ".....", ".....", ".....", "00111001001", "vmulld"}, + {"000100", ".....", ".....", ".....", "01010001001", "vmulhuw"}, + {"000100", ".....", ".....", ".....", "01011001001", "vmulhud"}, + {"000100", ".....", ".....", ".....", "01110001001", "vmulhsw"}, + {"000100", ".....", ".....", ".....", "01111001001", "vmulhsd"}, + {"000100", ".....", ".....", ".....", "10100001001", "vcipherlast"}, + {"000100", ".....", ".....", ".....", "10101001001", "vncipherlast"}, + {"000100", ".....", ".....", ".....", "00000001010", "vaddfp"}, + {"000100", ".....", ".....", ".....", "00001001010", "vsubfp"}, + {"000100", ".....", "/////", ".....", "00100001010", "vrefp"}, + {"000100", ".....", "/////", ".....", "00101001010", "vrsqrtefp"}, + {"000100", ".....", "/////", ".....", "00110001010", "vexptefp"}, + {"000100", ".....", "/////", ".....", "00111001010", "vlogefp"}, + {"000100", ".....", "/////", ".....", "01000001010", "vrfin"}, + {"000100", ".....", "/////", ".....", "01001001010", "vrfiz"}, + {"000100", ".....", "/////", ".....", "01010001010", "vrfip"}, + {"000100", ".....", "/////", ".....", "01011001010", "vrfim"}, + {"000100", ".....", ".....", ".....", "01100001010", "vcfux"}, + {"000100", ".....", ".....", ".....", "01101001010", "vcfsx"}, + {"000100", ".....", ".....", ".....", "01110001010", "vctuxs"}, + {"000100", ".....", ".....", ".....", "01111001010", "vctsxs"}, + {"000100", ".....", ".....", ".....", "10000001010", "vmaxfp"}, + {"000100", ".....", ".....", ".....", "10001001010", "vminfp"}, + {"000100", ".....", ".....", ".....", "00000001011", "vdivuq"}, + {"000100", ".....", ".....", ".....", "00010001011", "vdivuw"}, + {"000100", ".....", ".....", ".....", "00011001011", "vdivud"}, + {"000100", ".....", ".....", ".....", "00100001011", "vdivsq"}, + {"000100", ".....", ".....", ".....", "00110001011", "vdivsw"}, + {"000100", ".....", ".....", ".....", "00111001011", "vdivsd"}, + {"000100", ".....", ".....", ".....", "01000001011", "vdiveuq"}, + {"000100", ".....", ".....", ".....", "01010001011", "vdiveuw"}, + {"000100", ".....", ".....", ".....", "01011001011", "vdiveud"}, + {"000100", ".....", ".....", ".....", "01100001011", "vdivesq"}, + {"000100", ".....", ".....", ".....", "01110001011", "vdivesw"}, + {"000100", ".....", ".....", ".....", "01111001011", "vdivesd"}, + {"000100", ".....", ".....", ".....", "11000001011", "vmoduq"}, + {"000100", ".....", ".....", ".....", "11010001011", "vmoduw"}, + {"000100", ".....", ".....", ".....", "11011001011", "vmodud"}, + {"000100", ".....", ".....", ".....", "11100001011", "vmodsq"}, + {"000100", ".....", ".....", ".....", "11110001011", "vmodsw"}, + {"000100", ".....", ".....", ".....", "11111001011", "vmodsd"}, + {"000100", ".....", ".....", ".....", "00000001100", "vmrghb"}, + {"000100", ".....", ".....", ".....", "00001001100", "vmrghh"}, + {"000100", ".....", ".....", ".....", "00010001100", "vmrghw"}, + {"000100", ".....", ".....", ".....", "00100001100", "vmrglb"}, + {"000100", ".....", ".....", ".....", "00101001100", "vmrglh"}, + {"000100", ".....", ".....", ".....", "00110001100", "vmrglw"}, + {"000100", ".....", "/....", ".....", "01000001100", "vspltb"}, + {"000100", ".....", "//...", ".....", "01001001100", "vsplth"}, + {"000100", ".....", "///..", ".....", "01010001100", "vspltw"}, + {"000100", ".....", ".....", "/////", "01100001100", "vspltisb"}, + {"000100", ".....", ".....", "/////", "01101001100", "vspltish"}, + {"000100", ".....", ".....", "/////", "01110001100", "vspltisw"}, + {"000100", ".....", ".....", ".....", "10000001100", "vslo"}, + {"000100", ".....", ".....", ".....", "10001001100", "vsro"}, + {"000100", ".....", "//...", ".....", "10011001100", "vgnb"}, + {"000100", ".....", "/////", ".....", "10100001100", "vgbbd"}, + {"000100", ".....", ".....", ".....", "10101001100", "vbpermq"}, + {"000100", ".....", ".....", ".....", "10111001100", "vbpermd"}, + {"000100", ".....", ".....", ".....", "11010001100", "vmrgow"}, + {"000100", ".....", ".....", ".....", "11110001100", "vmrgew"}, + {"000100", ".....", "00000", ".....", ".0000001101", "vstribl[.]"}, + {"000100", ".....", "00001", ".....", ".0000001101", "vstribr[.]"}, + {"000100", ".....", "00010", ".....", ".0000001101", "vstrihl[.]"}, + {"000100", ".....", "00011", ".....", ".0000001101", "vstrihr[.]"}, + {"000100", ".....", ".....", ".....", "00110001101", "vclrlb"}, + {"000100", ".....", ".....", ".....", "00111001101", "vclrrb"}, + {"000100", ".....", "/....", ".....", "01000001101", "vextractub"}, + {"000100", ".....", "/....", ".....", "01001001101", "vextractuh"}, + {"000100", ".....", "/....", ".....", "01010001101", "vextractuw"}, + {"000100", ".....", "/....", ".....", "01011001101", "vextractd"}, + {"000100", ".....", "/....", ".....", "01100001101", "vinsertb"}, + {"000100", ".....", "/....", ".....", "01101001101", "vinserth"}, + {"000100", ".....", "/....", ".....", "01110001101", "vinsertw"}, + {"000100", ".....", "/....", ".....", "01111001101", "vinsertd"}, + {"000100", ".....", ".....", ".....", "10101001101", "vcfuged"}, + {"000100", ".....", ".....", ".....", "10110001101", "vpextd"}, + {"000100", ".....", ".....", ".....", "10111001101", "vpdepd"}, + {"000100", ".....", ".....", ".....", "11000001101", "vextublx"}, + {"000100", ".....", ".....", ".....", "11001001101", "vextuhlx"}, + {"000100", ".....", ".....", ".....", "11010001101", "vextuwlx"}, + {"000100", ".....", ".....", ".....", "11100001101", "vextubrx"}, + {"000100", ".....", ".....", ".....", "11101001101", "vextuhrx"}, + {"000100", ".....", ".....", ".....", "11110001101", "vextuwrx"}, + {"000100", ".....", ".....", ".....", "00000001110", "vpkuhum"}, + {"000100", ".....", ".....", ".....", "00001001110", "vpkuwum"}, + {"000100", ".....", ".....", ".....", "00010001110", "vpkuhus"}, + {"000100", ".....", ".....", ".....", "00011001110", "vpkuwus"}, + {"000100", ".....", ".....", ".....", "00100001110", "vpkshus"}, + {"000100", ".....", ".....", ".....", "00101001110", "vpkswus"}, + {"000100", ".....", ".....", ".....", "00110001110", "vpkshss"}, + {"000100", ".....", ".....", ".....", "00111001110", "vpkswss"}, + {"000100", ".....", "/////", ".....", "01000001110", "vupkhsb"}, + {"000100", ".....", "/////", ".....", "01001001110", "vupkhsh"}, + {"000100", ".....", "/////", ".....", "01010001110", "vupklsb"}, + {"000100", ".....", "/////", ".....", "01011001110", "vupklsh"}, + {"000100", ".....", ".....", ".....", "01100001110", "vpkpx"}, + {"000100", ".....", "/////", ".....", "01101001110", "vupkhpx"}, + {"000100", ".....", "/////", ".....", "01111001110", "vupklpx"}, + {"000100", ".....", ".....", ".....", "10001001110", "vpkudum"}, + {"000100", ".....", ".....", ".....", "10011001110", "vpkudus"}, + {"000100", ".....", ".....", ".....", "10101001110", "vpksdus"}, + {"000100", ".....", ".....", ".....", "10111001110", "vpksdss"}, + {"000100", ".....", "/////", ".....", "11001001110", "vupkhsw"}, + {"000100", ".....", "/////", ".....", "11011001110", "vupklsw"}, + {"000100", ".....", ".....", ".....", "00000001111", "vinsbvlx"}, + {"000100", ".....", ".....", ".....", "00001001111", "vinshvlx"}, + {"000100", ".....", ".....", ".....", "00010001111", "vinswvlx"}, + {"000100", ".....", "/....", ".....", "00011001111", "vinsw"}, + {"000100", ".....", ".....", ".....", "00100001111", "vinsbvrx"}, + {"000100", ".....", ".....", ".....", "00101001111", "vinshvrx"}, + {"000100", ".....", ".....", ".....", "00110001111", "vinswvrx"}, + {"000100", ".....", "/....", ".....", "00111001111", "vinsd"}, + {"000100", ".....", ".....", ".....", "01000001111", "vinsblx"}, + {"000100", ".....", ".....", ".....", "01001001111", "vinshlx"}, + {"000100", ".....", ".....", ".....", "01010001111", "vinswlx"}, + {"000100", ".....", ".....", ".....", "01011001111", "vinsdlx"}, + {"000100", ".....", ".....", ".....", "01100001111", "vinsbrx"}, + {"000100", ".....", ".....", ".....", "01101001111", "vinshrx"}, + {"000100", ".....", ".....", ".....", "01110001111", "vinswrx"}, + {"000100", ".....", ".....", ".....", "01111001111", "vinsdrx"}, + {"000100", ".....", ".....", ".....", ".....01010.", "mtvsrbmi"}, + {"000100", ".....", ".....", ".....", "00...010110", "vsldbi"}, + {"000100", ".....", ".....", ".....", "01...010110", "vsrdbi"}, + {"000100", ".....", ".....", ".....", ".....010111", "vmsumcud"}, + {"000100", ".....", ".....", ".....", ".....011000", "vextdubvlx"}, + {"000100", ".....", ".....", ".....", ".....011001", "vextdubvrx"}, + {"000100", ".....", ".....", ".....", ".....011010", "vextduhvlx"}, + {"000100", ".....", ".....", ".....", ".....011011", "vextduhvrx"}, + {"000100", ".....", ".....", ".....", ".....011100", "vextduwvlx"}, + {"000100", ".....", ".....", ".....", ".....011101", "vextduwvrx"}, + {"000100", ".....", ".....", ".....", ".....011110", "vextddvlx"}, + {"000100", ".....", ".....", ".....", ".....011111", "vextddvrx"}, + {"000100", ".....", ".....", ".....", ".....100000", "vmhaddshs"}, + {"000100", ".....", ".....", ".....", ".....100001", "vmhraddshs"}, + {"000100", ".....", ".....", ".....", ".....100010", "vmladduhm"}, + {"000100", ".....", ".....", ".....", ".....100011", "vmsumudm"}, + {"000100", ".....", ".....", ".....", ".....100100", "vmsumubm"}, + {"000100", ".....", ".....", ".....", ".....100101", "vmsummbm"}, + {"000100", ".....", ".....", ".....", ".....100110", "vmsumuhm"}, + {"000100", ".....", ".....", ".....", ".....100111", "vmsumuhs"}, + {"000100", ".....", ".....", ".....", ".....101000", "vmsumshm"}, + {"000100", ".....", ".....", ".....", ".....101001", "vmsumshs"}, + {"000100", ".....", ".....", ".....", ".....101010", "vsel"}, + {"000100", ".....", ".....", ".....", ".....101011", "vperm"}, + {"000100", ".....", ".....", ".....", "/....101100", "vsldoi"}, + {"000100", ".....", ".....", ".....", ".....101101", "vpermxor"}, + {"000100", ".....", ".....", ".....", ".....101110", "vmaddfp"}, + {"000100", ".....", ".....", ".....", ".....101111", "vnmsubfp"}, + {"000100", ".....", ".....", ".....", ".....110000", "maddhd"}, + {"000100", ".....", ".....", ".....", ".....110001", "maddhdu"}, + {"000100", ".....", ".....", ".....", ".....110011", "maddld"}, + {"000100", ".....", ".....", ".....", ".....111011", "vpermr"}, + {"000100", ".....", ".....", ".....", ".....111100", "vaddeuqm"}, + {"000100", ".....", ".....", ".....", ".....111101", "vaddecuq"}, + {"000100", ".....", ".....", ".....", ".....111110", "vsubeuqm"}, + {"000100", ".....", ".....", ".....", ".....111111", "vsubecuq"}, + {"000110", ".....", ".....", ".....", ".......0000", "lxvp"}, + {"000110", ".....", ".....", ".....", ".......0001", "stxvp"}, + {"000111", ".....", ".....", ".....", "...........", "mulli"}, + {"001000", ".....", ".....", ".....", "...........", "subfic"}, + {"001010", ".../.", ".....", ".....", "...........", "cmpli"}, + {"001011", ".../.", ".....", ".....", "...........", "cmpi"}, + {"001100", ".....", ".....", ".....", "...........", "addic"}, + {"001101", ".....", ".....", ".....", "...........", "addic."}, + {"001110", ".....", ".....", ".....", "...........", "addi"}, + {"001111", ".....", ".....", ".....", "...........", "addis"}, + {"010000", ".....", ".....", ".....", "...........", "bc[l][a]"}, + {"010001", "/////", "/////", "////.", "......///01", "scv"}, + {"010001", "/////", "/////", "////.", "......///1/", "sc"}, + {"010010", ".....", ".....", ".....", "...........", "b[l][a]"}, + {"010011", "...//", "...//", "/////", "0000000000/", "mcrf"}, + {"010011", ".....", ".....", ".....", "0000100001/", "crnor"}, + {"010011", ".....", ".....", ".....", "0010000001/", "crandc"}, + {"010011", ".....", ".....", ".....", "0011000001/", "crxor"}, + {"010011", ".....", ".....", ".....", "0011100001/", "crnand"}, + {"010011", ".....", ".....", ".....", "0100000001/", "crand"}, + {"010011", ".....", ".....", ".....", "0100100001/", "creqv"}, + {"010011", ".....", ".....", ".....", "0110100001/", "crorc"}, + {"010011", ".....", ".....", ".....", "0111000001/", "cror"}, + {"010011", ".....", ".....", ".....", ".....00010.", "addpcis"}, + {"010011", ".....", ".....", "///..", "0000010000.", "bclr[l]"}, + {"010011", ".....", ".....", "///..", "1000010000.", "bcctr[l]"}, + {"010011", ".....", ".....", "///..", "1000110000.", "bctar[l]"}, + {"010011", "/////", "/////", "/////", "0000010010/", "rfid"}, + {"010011", "/////", "/////", "/////", "0001010010/", "rfscv"}, + {"010011", "/////", "/////", "////.", "0010010010/", "rfebb"}, + {"010011", "/////", "/////", "/////", "0100010010/", "hrfid"}, + {"010011", "/////", "/////", "/////", "0100110010/", "urfid"}, + {"010011", "/////", "/////", "/////", "0101110010/", "stop"}, + {"010011", "/////", "/////", "/////", "0010010110/", "isync"}, + {"010100", ".....", ".....", ".....", "...........", "rlwimi[.]"}, + {"010101", ".....", ".....", ".....", "...........", "rlwinm[.]"}, + {"010111", ".....", ".....", ".....", "...........", "rlwnm[.]"}, + {"011000", ".....", ".....", ".....", "...........", "ori"}, + {"011001", ".....", ".....", ".....", "...........", "oris"}, + {"011010", ".....", ".....", ".....", "...........", "xori"}, + {"011011", ".....", ".....", ".....", "...........", "xoris"}, + {"011100", ".....", ".....", ".....", "...........", "andi."}, + {"011101", ".....", ".....", ".....", "...........", "andis."}, + {"011110", ".....", ".....", ".....", "......000..", "rldicl[.]"}, + {"011110", ".....", ".....", ".....", "......001..", "rldicr[.]"}, + {"011110", ".....", ".....", ".....", "......010..", "rldic[.]"}, + {"011110", ".....", ".....", ".....", "......011..", "rldimi[.]"}, + {"011110", ".....", ".....", ".....", "......1000.", "rldcl[.]"}, + {"011110", ".....", ".....", ".....", "......1001.", "rldcr[.]"}, + {"011111", ".../.", ".....", ".....", "0000000000/", "cmp"}, + {"011111", ".../.", ".....", ".....", "0000100000/", "cmpl"}, + {"011111", ".....", "...//", "/////", "0010000000/", "setb"}, + {"011111", ".../.", ".....", ".....", "0011000000/", "cmprb"}, + {"011111", "...//", ".....", ".....", "0011100000/", "cmpeqb"}, + {"011111", ".....", ".....", "/////", "0110000000/", "setbc"}, + {"011111", ".....", ".....", "/////", "0110100000/", "setbcr"}, + {"011111", ".....", ".....", "/////", "0111000000/", "setnbc"}, + {"011111", ".....", ".....", "/////", "0111100000/", "setnbcr"}, + {"011111", "...//", "/////", "/////", "1001000000/", "mcrxrx"}, + {"011111", ".....", ".....", ".....", "0000000100/", "tw"}, + {"011111", ".....", ".....", ".....", "0001000100/", "td"}, + {"011111", ".....", ".....", ".....", "0000000110/", "lvsl"}, + {"011111", ".....", ".....", ".....", "0000100110/", "lvsr"}, + {"011111", ".....", ".....", ".....", "1001000110/", "lwat"}, + {"011111", ".....", ".....", ".....", "1001100110/", "ldat"}, + {"011111", ".....", ".....", ".....", "1011000110/", "stwat"}, + {"011111", ".....", ".....", ".....", "1011100110/", "stdat"}, + {"011111", "////.", ".....", ".....", "1100000110/", "copy"}, + {"011111", "/////", "/////", "/////", "1101000110/", "cpabort"}, + {"011111", "////.", ".....", ".....", "1110000110.", "paste[.]"}, + {"011111", ".....", ".....", ".....", "0000000111/", "lvebx"}, + {"011111", ".....", ".....", ".....", "0000100111/", "lvehx"}, + {"011111", ".....", ".....", ".....", "0001000111/", "lvewx"}, + {"011111", ".....", ".....", ".....", "0001100111/", "lvx"}, + {"011111", ".....", ".....", ".....", "0010000111/", "stvebx"}, + {"011111", ".....", ".....", ".....", "0010100111/", "stvehx"}, + {"011111", ".....", ".....", ".....", "0011000111/", "stvewx"}, + {"011111", ".....", ".....", ".....", "0011100111/", "stvx"}, + {"011111", ".....", ".....", ".....", "0101100111/", "lvxl"}, + {"011111", ".....", ".....", ".....", "0111100111/", "stvxl"}, + {"011111", ".....", ".....", ".....", "0000001000.", "subfc[.]"}, + {"011111", ".....", ".....", ".....", "0000101000.", "subf[.]"}, + {"011111", ".....", ".....", "/////", "0001101000.", "neg[.]"}, + {"011111", ".....", ".....", ".....", "0010001000.", "subfe[.]"}, + {"011111", ".....", ".....", "/////", "0011001000.", "subfze[.]"}, + {"011111", ".....", ".....", "/////", "0011101000.", "subfme[.]"}, + {"011111", ".....", ".....", ".....", "1000001000.", "subfco[.]"}, + {"011111", ".....", ".....", ".....", "1000101000.", "subfo[.]"}, + {"011111", ".....", ".....", "/////", "1001101000.", "nego[.]"}, + {"011111", ".....", ".....", ".....", "1010001000.", "subfeo[.]"}, + {"011111", ".....", ".....", "/////", "1011001000.", "subfzeo[.]"}, + {"011111", ".....", ".....", "/////", "1011101000.", "subfmeo[.]"}, + {"011111", ".....", ".....", ".....", "/000001001.", "mulhdu[.]"}, + {"011111", ".....", ".....", ".....", "/001001001.", "mulhd[.]"}, + {"011111", ".....", ".....", ".....", "0011101001.", "mulld[.]"}, + {"011111", ".....", ".....", ".....", "0100001001/", "modud"}, + {"011111", ".....", ".....", ".....", "0110001001.", "divdeu[.]"}, + {"011111", ".....", ".....", ".....", "0110101001.", "divde[.]"}, + {"011111", ".....", ".....", ".....", "0111001001.", "divdu[.]"}, + {"011111", ".....", ".....", ".....", "0111101001.", "divd[.]"}, + {"011111", ".....", ".....", ".....", "1011101001.", "mulldo[.]"}, + {"011111", ".....", ".....", ".....", "1100001001/", "modsd"}, + {"011111", ".....", ".....", ".....", "1110001001.", "divdeuo[.]"}, + {"011111", ".....", ".....", ".....", "1110101001.", "divdeo[.]"}, + {"011111", ".....", ".....", ".....", "1111001001.", "divduo[.]"}, + {"011111", ".....", ".....", ".....", "1111101001.", "divdo[.]"}, + {"011111", ".....", ".....", ".....", "..10101010/", "addex"}, + {"011111", ".....", ".....", ".....", "/001001010/", "addg"}, + {"011111", ".....", ".....", ".....", "0000001010.", "addc[.]"}, + {"011111", ".....", ".....", ".....", "0010001010.", "adde[.]"}, + {"011111", ".....", ".....", "/////", "0011001010.", "addze[.]"}, + {"011111", ".....", ".....", "/////", "0011101010.", "addme[.]"}, + {"011111", ".....", ".....", ".....", "0100001010.", "add[.]"}, + {"011111", ".....", ".....", ".....", "1000001010.", "addco[.]"}, + {"011111", ".....", ".....", ".....", "1010001010.", "addeo[.]"}, + {"011111", ".....", ".....", "/////", "1011001010.", "addzeo[.]"}, + {"011111", ".....", ".....", "/////", "1011101010.", "addmeo[.]"}, + {"011111", ".....", ".....", ".....", "1100001010.", "addo[.]"}, + {"011111", ".....", ".....", ".....", "/000001011.", "mulhwu[.]"}, + {"011111", ".....", ".....", ".....", "/001001011.", "mulhw[.]"}, + {"011111", ".....", ".....", ".....", "0011101011.", "mullw[.]"}, + {"011111", ".....", ".....", ".....", "0100001011/", "moduw"}, + {"011111", ".....", ".....", ".....", "0110001011.", "divweu[.]"}, + {"011111", ".....", ".....", ".....", "0110101011.", "divwe[.]"}, + {"011111", ".....", ".....", ".....", "0111001011.", "divwu[.]"}, + {"011111", ".....", ".....", ".....", "0111101011.", "divw[.]"}, + {"011111", ".....", ".....", ".....", "1011101011.", "mullwo[.]"}, + {"011111", ".....", ".....", ".....", "1100001011/", "modsw"}, + {"011111", ".....", ".....", ".....", "1110001011.", "divweuo[.]"}, + {"011111", ".....", ".....", ".....", "1110101011.", "divweo[.]"}, + {"011111", ".....", ".....", ".....", "1111001011.", "divwuo[.]"}, + {"011111", ".....", ".....", ".....", "1111101011.", "divwo[.]"}, + {"011111", ".....", ".....", ".....", "0000001100.", "lxsiwzx"}, + {"011111", ".....", ".....", ".....", "0001001100.", "lxsiwax"}, + {"011111", ".....", ".....", ".....", "0010001100.", "stxsiwx"}, + {"011111", ".....", ".....", ".....", "0100/01100.", "lxvx"}, + {"011111", ".....", ".....", ".....", "0101001100.", "lxvdsx"}, + {"011111", ".....", ".....", ".....", "0101101100.", "lxvwsx"}, + {"011111", ".....", ".....", ".....", "0110001100.", "stxvx"}, + {"011111", ".....", ".....", ".....", "1000001100.", "lxsspx"}, + {"011111", ".....", ".....", ".....", "1001001100.", "lxsdx"}, + {"011111", ".....", ".....", ".....", "1010001100.", "stxsspx"}, + {"011111", ".....", ".....", ".....", "1011001100.", "stxsdx"}, + {"011111", ".....", ".....", ".....", "1100001100.", "lxvw4x"}, + {"011111", ".....", ".....", ".....", "1100101100.", "lxvh8x"}, + {"011111", ".....", ".....", ".....", "1101001100.", "lxvd2x"}, + {"011111", ".....", ".....", ".....", "1101101100.", "lxvb16x"}, + {"011111", ".....", ".....", ".....", "1110001100.", "stxvw4x"}, + {"011111", ".....", ".....", ".....", "1110101100.", "stxvh8x"}, + {"011111", ".....", ".....", ".....", "1111001100.", "stxvd2x"}, + {"011111", ".....", ".....", ".....", "1111101100.", "stxvb16x"}, + {"011111", ".....", ".....", ".....", "0000001101.", "lxvrbx"}, + {"011111", ".....", ".....", ".....", "0000101101.", "lxvrhx"}, + {"011111", ".....", ".....", ".....", "0001001101.", "lxvrwx"}, + {"011111", ".....", ".....", ".....", "0001101101.", "lxvrdx"}, + {"011111", ".....", ".....", ".....", "0010001101.", "stxvrbx"}, + {"011111", ".....", ".....", ".....", "0010101101.", "stxvrhx"}, + {"011111", ".....", ".....", ".....", "0011001101.", "stxvrwx"}, + {"011111", ".....", ".....", ".....", "0011101101.", "stxvrdx"}, + {"011111", ".....", ".....", ".....", "0100001101.", "lxvl"}, + {"011111", ".....", ".....", ".....", "0100101101.", "lxvll"}, + {"011111", ".....", ".....", ".....", "0101001101/", "lxvpx"}, + {"011111", ".....", ".....", ".....", "0110001101.", "stxvl"}, + {"011111", ".....", ".....", ".....", "0110101101.", "stxvll"}, + {"011111", ".....", ".....", ".....", "0111001101/", "stxvpx"}, + {"011111", ".....", ".....", ".....", "1100001101.", "lxsibzx"}, + {"011111", ".....", ".....", ".....", "1100101101.", "lxsihzx"}, + {"011111", ".....", ".....", ".....", "1110001101.", "stxsibx"}, + {"011111", ".....", ".....", ".....", "1110101101.", "stxsihx"}, + {"011111", "/////", "/////", ".....", "0001001110/", "msgsndu"}, + {"011111", "/////", "/////", ".....", "0001101110/", "msgclru"}, + {"011111", "/////", "/////", ".....", "0010001110/", "msgsndp"}, + {"011111", "/////", "/////", ".....", "0010101110/", "msgclrp"}, + {"011111", "/////", "/////", ".....", "0011001110/", "msgsnd"}, + {"011111", "/////", "/////", ".....", "0011101110/", "msgclr"}, + {"011111", ".....", ".....", ".....", "0100101110/", "mfbhrbe"}, + {"011111", "/////", "/////", "/////", "0110101110/", "clrbhrb"}, + {"011111", ".....", ".....", ".....", ".....01111/", "isel"}, + {"011111", ".....", "0....", "..../", "0010010000/", "mtcrf"}, + {"011111", ".....", "1....", "..../", "0010010000/", "mtocrf"}, + {"011111", "...//", "00000", "/////", "0010110001/", "xxmfacc"}, + {"011111", "...//", "00001", "/////", "0010110001/", "xxmtacc"}, + {"011111", "...//", "00011", "/////", "0010110001/", "xxsetaccz"}, + {"011111", ".....", "////.", "/////", "0010010010/", "mtmsr"}, + {"011111", ".....", "////.", "/////", "0010110010/", "mtmsrd"}, + {"011111", ".....", "/....", ".....", "0100010010/", "tlbiel"}, + {"011111", ".....", "/....", ".....", "0100110010/", "tlbie"}, + {"011111", "/////", "/////", "/////", "0101010010/", "slbsync"}, + {"011111", ".....", "/////", ".....", "0110010010/", "slbmte"}, + {"011111", "/////", "/////", ".....", "0110110010/", "slbie"}, + {"011111", ".....", "/////", ".....", "0111010010/", "slbieg"}, + {"011111", "//...", "/////", "/////", "0111110010/", "slbia"}, + {"011111", ".....", "/////", ".....", "1101010010/", "slbiag"}, + {"011111", ".....", "0////", "/////", "0000010011/", "mfcr"}, + {"011111", ".....", "1....", "..../", "0000010011/", "mfocrf"}, + {"011111", ".....", ".....", "/////", "0000110011.", "mfvsrd"}, + {"011111", ".....", "/////", "/////", "0001010011/", "mfmsr"}, + {"011111", ".....", ".....", "/////", "0001110011.", "mfvsrwz"}, + {"011111", ".....", ".....", "/////", "0010110011.", "mtvsrd"}, + {"011111", ".....", ".....", "/////", "0011010011.", "mtvsrwa"}, + {"011111", ".....", ".....", "/////", "0011110011.", "mtvsrwz"}, + {"011111", ".....", ".....", "/////", "0100110011.", "mfvsrld"}, + {"011111", ".....", ".....", ".....", "0101010011/", "mfspr"}, + {"011111", ".....", ".....", ".....", "0101110011/", "mftb"}, + {"011111", ".....", ".....", "/////", "0110010011.", "mtvsrws"}, + {"011111", ".....", ".....", ".....", "0110110011.", "mtvsrdd"}, + {"011111", ".....", ".....", ".....", "0111010011/", "mtspr"}, + {"011111", ".....", "///..", "/////", "1011110011/", "darn"}, + {"011111", ".....", "/////", ".....", "1101010011/", "slbmfev"}, + {"011111", ".....", "/////", ".....", "1110010011/", "slbmfee"}, + {"011111", ".....", "/////", ".....", "11110100111", "slbfee."}, + {"011111", ".....", ".....", ".....", "0000010100/", "lwarx"}, + {"011111", ".....", ".....", ".....", "0000110100.", "lbarx"}, + {"011111", ".....", ".....", ".....", "0001010100/", "ldarx"}, + {"011111", ".....", ".....", ".....", "0001110100.", "lharx"}, + {"011111", ".....", ".....", ".....", "0100010100.", "lqarx"}, + {"011111", ".....", ".....", ".....", "1000010100/", "ldbrx"}, + {"011111", ".....", ".....", ".....", "1010010100/", "stdbrx"}, + {"011111", ".....", ".....", ".....", "0000010101/", "ldx"}, + {"011111", ".....", ".....", ".....", "0000110101/", "ldux"}, + {"011111", ".....", ".....", ".....", "0010010101/", "stdx"}, + {"011111", ".....", ".....", ".....", "0010110101/", "stdux"}, + {"011111", ".....", ".....", ".....", "0101010101/", "lwax"}, + {"011111", ".....", ".....", ".....", "0101110101/", "lwaux"}, + {"011111", ".....", ".....", ".....", "1000010101/", "lswx"}, + {"011111", ".....", ".....", ".....", "1001010101/", "lswi"}, + {"011111", ".....", ".....", ".....", "1010010101/", "stswx"}, + {"011111", ".....", ".....", ".....", "1011010101/", "stswi"}, + {"011111", ".....", ".....", ".....", "1100010101/", "lwzcix"}, + {"011111", ".....", ".....", ".....", "1100110101/", "lhzcix"}, + {"011111", ".....", ".....", ".....", "1101010101/", "lbzcix"}, + {"011111", ".....", ".....", ".....", "1101110101/", "ldcix"}, + {"011111", ".....", ".....", ".....", "1110010101/", "stwcix"}, + {"011111", ".....", ".....", ".....", "1110110101/", "sthcix"}, + {"011111", ".....", ".....", ".....", "1111010101/", "stbcix"}, + {"011111", ".....", ".....", ".....", "1111110101/", "stdcix"}, + {"011111", "/....", ".....", ".....", "0000010110/", "icbt"}, + {"011111", "/////", ".....", ".....", "0000110110/", "dcbst"}, + {"011111", "///..", ".....", ".....", "0001010110/", "dcbf"}, + {"011111", ".....", ".....", ".....", "0011110110/", "dcbtst"}, + {"011111", ".....", ".....", ".....", "0100010110/", "dcbt"}, + {"011111", ".....", ".....", ".....", "1000010110/", "lwbrx"}, + {"011111", "/////", "/////", "/////", "1000110110/", "tlbsync"}, + {"011111", "///..", "/////", "/////", "1001010110/", "sync"}, + {"011111", ".....", ".....", ".....", "1010010110/", "stwbrx"}, + {"011111", ".....", ".....", ".....", "1100010110/", "lhbrx"}, + {"011111", "/////", "/////", "/////", "1101010110/", "eieio"}, + {"011111", "/////", "/////", "/////", "1101110110/", "msgsync"}, + {"011111", ".....", ".....", ".....", "1110010110/", "sthbrx"}, + {"011111", "/////", ".....", ".....", "1111010110/", "icbi"}, + {"011111", "/////", ".....", ".....", "1111110110/", "dcbz"}, + {"011111", ".....", ".....", ".....", "00100101101", "stwcx."}, + {"011111", ".....", ".....", ".....", "00101101101", "stqcx."}, + {"011111", ".....", ".....", ".....", "00110101101", "stdcx."}, + {"011111", ".....", ".....", ".....", "10101101101", "stbcx."}, + {"011111", ".....", ".....", ".....", "10110101101", "sthcx."}, + {"011111", ".....", ".....", ".....", "0000010111/", "lwzx"}, + {"011111", ".....", ".....", ".....", "0000110111/", "lwzux"}, + {"011111", ".....", ".....", ".....", "0001010111/", "lbzx"}, + {"011111", ".....", ".....", ".....", "0001110111/", "lbzux"}, + {"011111", ".....", ".....", ".....", "0010010111/", "stwx"}, + {"011111", ".....", ".....", ".....", "0010110111/", "stwux"}, + {"011111", ".....", ".....", ".....", "0011010111/", "stbx"}, + {"011111", ".....", ".....", ".....", "0011110111/", "stbux"}, + {"011111", ".....", ".....", ".....", "0100010111/", "lhzx"}, + {"011111", ".....", ".....", ".....", "0100110111/", "lhzux"}, + {"011111", ".....", ".....", ".....", "0101010111/", "lhax"}, + {"011111", ".....", ".....", ".....", "0101110111/", "lhaux"}, + {"011111", ".....", ".....", ".....", "0110010111/", "sthx"}, + {"011111", ".....", ".....", ".....", "0110110111/", "sthux"}, + {"011111", "///..", ".....", ".....", "0111110111/", "spom"}, + {"011111", ".....", ".....", ".....", "1000010111/", "lfsx"}, + {"011111", ".....", ".....", ".....", "1000110111/", "lfsux"}, + {"011111", ".....", ".....", ".....", "1001010111/", "lfdx"}, + {"011111", ".....", ".....", ".....", "1001110111/", "lfdux"}, + {"011111", ".....", ".....", ".....", "1010010111/", "stfsx"}, + {"011111", ".....", ".....", ".....", "1010110111/", "stfsux"}, + {"011111", ".....", ".....", ".....", "1011010111/", "stfdx"}, + {"011111", ".....", ".....", ".....", "1011110111/", "stfdux"}, + {"011111", ".....", ".....", ".....", "1100010111/", "lfdpx"}, + {"011111", ".....", ".....", ".....", "1101010111/", "lfiwax"}, + {"011111", ".....", ".....", ".....", "1101110111/", "lfiwzx"}, + {"011111", ".....", ".....", ".....", "1110010111/", "stfdpx"}, + {"011111", ".....", ".....", ".....", "1111010111/", "stfiwx"}, + {"011111", "/////", ".....", ".....", "1111110111/", "lqm"}, + {"011111", ".....", ".....", ".....", "0000011000.", "slw[.]"}, + {"011111", ".....", ".....", ".....", "1000011000.", "srw[.]"}, + {"011111", ".....", ".....", ".....", "1100011000.", "sraw[.]"}, + {"011111", ".....", ".....", ".....", "1100111000.", "srawi[.]"}, + {"011111", ".....", ".....", ".....", "110011101..", "sradi[.]"}, + {"011111", ".....", ".....", ".....", "110111101..", "extswsli[.]"}, + {"011111", ".....", ".....", "/////", "0000011010.", "cntlzw[.]"}, + {"011111", ".....", ".....", "/////", "0000111010.", "cntlzd[.]"}, + {"011111", ".....", ".....", "/////", "0001111010/", "popcntb"}, + {"011111", ".....", ".....", "/////", "0010011010/", "prtyw"}, + {"011111", ".....", ".....", "/////", "0010111010/", "prtyd"}, + {"011111", ".....", ".....", "/////", "0100011010/", "cdtbcd"}, + {"011111", ".....", ".....", "/////", "0100111010/", "cbcdtd"}, + {"011111", ".....", ".....", "/////", "0101111010/", "popcntw"}, + {"011111", ".....", ".....", "/////", "0111111010/", "popcntd"}, + {"011111", ".....", ".....", "/////", "1000011010.", "cnttzw[.]"}, + {"011111", ".....", ".....", "/////", "1000111010.", "cnttzd[.]"}, + {"011111", ".....", ".....", ".....", "1100011010.", "srad[.]"}, + {"011111", ".....", ".....", "/////", "1110011010.", "extsh[.]"}, + {"011111", ".....", ".....", "/////", "1110111010.", "extsb[.]"}, + {"011111", ".....", ".....", "/////", "1111011010.", "extsw[.]"}, + {"011111", ".....", ".....", ".....", "0000011011.", "sld[.]"}, + {"011111", ".....", ".....", ".....", "0000111011/", "cntlzdm"}, + {"011111", ".....", ".....", "/////", "0010011011/", "brw"}, + {"011111", ".....", ".....", "/////", "0010111011/", "brd"}, + {"011111", ".....", ".....", "/////", "0011011011/", "brh"}, + {"011111", ".....", ".....", ".....", "1000011011.", "srd[.]"}, + {"011111", ".....", ".....", ".....", "1000111011/", "cnttzdm"}, + {"011111", ".....", ".....", ".....", "0000011100.", "and[.]"}, + {"011111", ".....", ".....", ".....", "0000111100.", "andc[.]"}, + {"011111", ".....", ".....", ".....", "0001111100.", "nor[.]"}, + {"011111", ".....", ".....", ".....", "0010011100/", "pdepd"}, + {"011111", ".....", ".....", ".....", "0010111100/", "pextd"}, + {"011111", ".....", ".....", ".....", "0011011100/", "cfuged"}, + {"011111", ".....", ".....", ".....", "0011111100/", "bpermd"}, + {"011111", ".....", ".....", ".....", "0100011100.", "eqv[.]"}, + {"011111", ".....", ".....", ".....", "0100111100.", "xor[.]"}, + {"011111", ".....", ".....", ".....", "0110011100.", "orc[.]"}, + {"011111", ".....", ".....", ".....", "0110111100.", "or[.]"}, + {"011111", ".....", ".....", ".....", "0111011100.", "nand[.]"}, + {"011111", ".....", ".....", ".....", "0111111100/", "cmpb"}, + {"011111", "///..", "/////", "/////", "0000011110/", "wait"}, + {"100000", ".....", ".....", ".....", "...........", "lwz"}, + {"100001", ".....", ".....", ".....", "...........", "lwzu"}, + {"100010", ".....", ".....", ".....", "...........", "lbz"}, + {"100011", ".....", ".....", ".....", "...........", "lbzu"}, + {"100100", ".....", ".....", ".....", "...........", "stw"}, + {"100101", ".....", ".....", ".....", "...........", "stwu"}, + {"100110", ".....", ".....", ".....", "...........", "stb"}, + {"100111", ".....", ".....", ".....", "...........", "stbu"}, + {"101000", ".....", ".....", ".....", "...........", "lhz"}, + {"101001", ".....", ".....", ".....", "...........", "lhzu"}, + {"101010", ".....", ".....", ".....", "...........", "lha"}, + {"101011", ".....", ".....", ".....", "...........", "lhau"}, + {"101100", ".....", ".....", ".....", "...........", "sth"}, + {"101101", ".....", ".....", ".....", "...........", "sthu"}, + {"101110", ".....", ".....", ".....", "...........", "lmw"}, + {"101111", ".....", ".....", ".....", "...........", "stmw"}, + {"110000", ".....", ".....", ".....", "...........", "lfs"}, + {"110001", ".....", ".....", ".....", "...........", "lfsu"}, + {"110010", ".....", ".....", ".....", "...........", "lfd"}, + {"110011", ".....", ".....", ".....", "...........", "lfdu"}, + {"110100", ".....", ".....", ".....", "...........", "stfs"}, + {"110101", ".....", ".....", ".....", "...........", "stfsu"}, + {"110110", ".....", ".....", ".....", "...........", "stfd"}, + {"110111", ".....", ".....", ".....", "...........", "stfdu"}, + {"111000", ".....", ".....", ".....", ".......////", "lq"}, + {"111001", ".....", ".....", ".....", ".........00", "lfdp"}, + {"111001", ".....", ".....", ".....", ".........10", "lxsd"}, + {"111001", ".....", ".....", ".....", ".........11", "lxssp"}, + {"111010", ".....", ".....", ".....", ".........00", "ld"}, + {"111010", ".....", ".....", ".....", ".........01", "ldu"}, + {"111010", ".....", ".....", ".....", ".........10", "lwa"}, + {"111011", ".....", ".....", ".....", "0001000010.", "dscli[.]"}, + {"111011", ".....", ".....", ".....", "0001100010.", "dscri[.]"}, + {"111011", "...//", ".....", ".....", "0011000010/", "dtstdc"}, + {"111011", "...//", ".....", ".....", "0011100010/", "dtstdg"}, + {"111011", ".....", ".....", ".....", "0000000010.", "dadd[.]"}, + {"111011", ".....", ".....", ".....", "0000100010.", "dmul[.]"}, + {"111011", "...//", ".....", ".....", "0010000010/", "dcmpo"}, + {"111011", "...//", ".....", ".....", "0010100010/", "dtstex"}, + {"111011", ".....", "/////", ".....", "0100000010.", "dctdp[.]"}, + {"111011", ".....", "/////", ".....", "0100100010.", "dctfix[.]"}, + {"111011", ".....", "..///", ".....", "0101000010.", "ddedpd[.]"}, + {"111011", ".....", "/////", ".....", "0101100010.", "dxex[.]"}, + {"111011", ".....", ".....", ".....", "1000000010.", "dsub[.]"}, + {"111011", ".....", ".....", ".....", "1000100010.", "ddiv[.]"}, + {"111011", "...//", ".....", ".....", "1010000010/", "dcmpu"}, + {"111011", "...//", ".....", ".....", "1010100010/", "dtstsf"}, + {"111011", ".....", "/////", ".....", "1100000010.", "drsp[.]"}, + {"111011", ".....", "/////", ".....", "1100100010.", "dcffix[.]"}, + {"111011", ".....", ".////", ".....", "1101000010.", "denbcd[.]"}, + {"111011", ".....", ".....", ".....", "1101100010.", "diex[.]"}, + {"111011", ".....", ".....", ".....", "..00000011.", "dqua[.]"}, + {"111011", ".....", ".....", ".....", "..00100011.", "drrnd[.]"}, + {"111011", ".....", ".....", ".....", "..01000011.", "dquai[.]"}, + {"111011", ".....", "////.", ".....", "..01100011.", "drintx[.]"}, + {"111011", ".....", "////.", ".....", "..11100011.", "drintn[.]"}, + {"111011", "...//", ".....", ".....", "1010100011/", "dtstsfi"}, + {"111011", "...//", ".....", ".....", "00000010../", "xvi8ger4pp"}, + {"111011", "...//", ".....", ".....", "00010010../", "xvf16ger2pp"}, + {"111011", "...//", ".....", ".....", "00011010../", "xvf32gerpp"}, + {"111011", "...//", ".....", ".....", "00100010../", "xvi4ger8pp"}, + {"111011", "...//", ".....", ".....", "11010010../", "xvf16ger2nn"}, + {"111011", "...//", ".....", ".....", "11011010../", "xvf32gernn"}, + {"111011", "...//", ".....", ".....", "11110010../", "xvbf16ger2nn"}, + {"111011", "...//", ".....", ".....", "11111010../", "xvf64gernn"}, + {"111011", "...//", ".....", ".....", "00000011../", "xvi8ger4"}, + {"111011", "...//", ".....", ".....", "00010011../", "xvf16ger2"}, + {"111011", "...//", ".....", ".....", "00011011../", "xvf32ger"}, + {"111011", "...//", ".....", ".....", "00100011../", "xvi4ger8"}, + {"111011", "...//", ".....", ".....", "00101011../", "xvi16ger2s"}, + {"111011", "...//", ".....", ".....", "00110011../", "xvbf16ger2"}, + {"111011", "...//", ".....", ".....", "00111011../", "xvf64ger"}, + {"111011", "...//", ".....", ".....", "01001011../", "xvi16ger2"}, + {"111011", "...//", ".....", ".....", "01101011../", "xvi16ger2pp"}, + {"111011", "...//", ".....", ".....", "01100011../", "xvi8ger4spp"}, + {"111011", ".....", "/////", ".....", "1101001110.", "fcfids[.]"}, + {"111011", ".....", "/////", ".....", "1111001110.", "fcfidus[.]"}, + {"111011", ".....", ".....", ".....", "/////10010.", "fdivs[.]"}, + {"111011", ".....", ".....", ".....", "/////10100.", "fsubs[.]"}, + {"111011", ".....", ".....", ".....", "/////10101.", "fadds[.]"}, + {"111011", ".....", "/////", ".....", "/////10110.", "fsqrts[.]"}, + {"111011", ".....", "/////", ".....", "/////11000.", "fres[.]"}, + {"111011", ".....", ".....", "/////", ".....11001.", "fmuls[.]"}, + {"111011", ".....", "/////", ".....", "/////11010.", "frsqrtes[.]"}, + {"111011", ".....", ".....", ".....", ".....11100.", "fmsubs[.]"}, + {"111011", ".....", ".....", ".....", ".....11101.", "fmadds[.]"}, + {"111011", ".....", ".....", ".....", ".....11110.", "fnmsubs[.]"}, + {"111011", ".....", ".....", ".....", ".....11111.", "fnmadds[.]"}, + {"111100", ".....", ".....", ".....", "00000000...", "xsaddsp"}, + {"111100", ".....", ".....", ".....", "00001000...", "xssubsp"}, + {"111100", ".....", ".....", ".....", "00010000...", "xsmulsp"}, + {"111100", ".....", ".....", ".....", "00011000...", "xsdivsp"}, + {"111100", ".....", ".....", ".....", "00100000...", "xsadddp"}, + {"111100", ".....", ".....", ".....", "00101000...", "xssubdp"}, + {"111100", ".....", ".....", ".....", "00110000...", "xsmuldp"}, + {"111100", ".....", ".....", ".....", "00111000...", "xsdivdp"}, + {"111100", ".....", ".....", ".....", "01000000...", "xvaddsp"}, + {"111100", ".....", ".....", ".....", "01001000...", "xvsubsp"}, + {"111100", ".....", ".....", ".....", "01010000...", "xvmulsp"}, + {"111100", ".....", ".....", ".....", "01011000...", "xvdivsp"}, + {"111100", ".....", ".....", ".....", "01100000...", "xvadddp"}, + {"111100", ".....", ".....", ".....", "01101000...", "xvsubdp"}, + {"111100", ".....", ".....", ".....", "01110000...", "xvmuldp"}, + {"111100", ".....", ".....", ".....", "01111000...", "xvdivdp"}, + {"111100", ".....", ".....", ".....", "10000000...", "xsmaxcdp"}, + {"111100", ".....", ".....", ".....", "10001000...", "xsmincdp"}, + {"111100", ".....", ".....", ".....", "10010000...", "xsmaxjdp"}, + {"111100", ".....", ".....", ".....", "10011000...", "xsminjdp"}, + {"111100", ".....", ".....", ".....", "10100000...", "xsmaxdp"}, + {"111100", ".....", ".....", ".....", "10101000...", "xsmindp"}, + {"111100", ".....", ".....", ".....", "10110000...", "xscpsgndp"}, + {"111100", ".....", ".....", ".....", "11000000...", "xvmaxsp"}, + {"111100", ".....", ".....", ".....", "11001000...", "xvminsp"}, + {"111100", ".....", ".....", ".....", "11010000...", "xvcpsgnsp"}, + {"111100", ".....", ".....", ".....", "11011000...", "xviexpsp"}, + {"111100", ".....", ".....", ".....", "11100000...", "xvmaxdp"}, + {"111100", ".....", ".....", ".....", "11101000...", "xvmindp"}, + {"111100", ".....", ".....", ".....", "11110000...", "xvcpsgndp"}, + {"111100", ".....", ".....", ".....", "11111000...", "xviexpdp"}, + {"111100", ".....", ".....", ".....", "00000001...", "xsmaddasp"}, + {"111100", ".....", ".....", ".....", "00001001...", "xsmaddmsp"}, + {"111100", ".....", ".....", ".....", "00010001...", "xsmsubasp"}, + {"111100", ".....", ".....", ".....", "00011001...", "xsmsubmsp"}, + {"111100", ".....", ".....", ".....", "00100001...", "xsmaddadp"}, + {"111100", ".....", ".....", ".....", "00101001...", "xsmaddmdp"}, + {"111100", ".....", ".....", ".....", "00110001...", "xsmsubadp"}, + {"111100", ".....", ".....", ".....", "00111001...", "xsmsubmdp"}, + {"111100", ".....", ".....", ".....", "01000001...", "xvmaddasp"}, + {"111100", ".....", ".....", ".....", "01001001...", "xvmaddmsp"}, + {"111100", ".....", ".....", ".....", "01010001...", "xvmsubasp"}, + {"111100", ".....", ".....", ".....", "01011001...", "xvmsubmsp"}, + {"111100", ".....", ".....", ".....", "01100001...", "xvmaddadp"}, + {"111100", ".....", ".....", ".....", "01101001...", "xvmaddmdp"}, + {"111100", ".....", ".....", ".....", "01110001...", "xvmsubadp"}, + {"111100", ".....", ".....", ".....", "01111001...", "xvmsubmdp"}, + {"111100", ".....", ".....", ".....", "10000001...", "xsnmaddasp"}, + {"111100", ".....", ".....", ".....", "10001001...", "xsnmaddmsp"}, + {"111100", ".....", ".....", ".....", "10010001...", "xsnmsubasp"}, + {"111100", ".....", ".....", ".....", "10011001...", "xsnmsubmsp"}, + {"111100", ".....", ".....", ".....", "10100001...", "xsnmaddadp"}, + {"111100", ".....", ".....", ".....", "10101001...", "xsnmaddmdp"}, + {"111100", ".....", ".....", ".....", "10110001...", "xsnmsubadp"}, + {"111100", ".....", ".....", ".....", "10111001...", "xsnmsubmdp"}, + {"111100", ".....", ".....", ".....", "11000001...", "xvnmaddasp"}, + {"111100", ".....", ".....", ".....", "11001001...", "xvnmaddmsp"}, + {"111100", ".....", ".....", ".....", "11010001...", "xvnmsubasp"}, + {"111100", ".....", ".....", ".....", "11011001...", "xvnmsubmsp"}, + {"111100", ".....", ".....", ".....", "11100001...", "xvnmaddadp"}, + {"111100", ".....", ".....", ".....", "11101001...", "xvnmaddmdp"}, + {"111100", ".....", ".....", ".....", "11110001...", "xvnmsubadp"}, + {"111100", ".....", ".....", ".....", "11111001...", "xvnmsubmdp"}, + {"111100", ".....", ".....", ".....", "0..00010...", "xxsldwi"}, + {"111100", ".....", ".....", ".....", "0..01010...", "xxpermdi"}, + {"111100", ".....", ".....", ".....", "00010010...", "xxmrghw"}, + {"111100", ".....", ".....", ".....", "00011010...", "xxperm"}, + {"111100", ".....", ".....", ".....", "00110010...", "xxmrglw"}, + {"111100", ".....", ".....", ".....", "00111010...", "xxpermr"}, + {"111100", ".....", ".....", ".....", "10000010...", "xxland"}, + {"111100", ".....", ".....", ".....", "10001010...", "xxlandc"}, + {"111100", ".....", ".....", ".....", "10010010...", "xxlor"}, + {"111100", ".....", ".....", ".....", "10011010...", "xxlxor"}, + {"111100", ".....", ".....", ".....", "10100010...", "xxlnor"}, + {"111100", ".....", ".....", ".....", "10101010...", "xxlorc"}, + {"111100", ".....", ".....", ".....", "10110010...", "xxlnand"}, + {"111100", ".....", ".....", ".....", "10111010...", "xxleqv"}, + {"111100", ".....", "///..", ".....", "010100100..", "xxspltw"}, + {"111100", ".....", "00...", ".....", "0101101000.", "xxspltib"}, + {"111100", ".....", "11111", ".....", "0101101000.", "lxvkq"}, + {"111100", ".....", "/....", ".....", "010100101..", "xxextractuw"}, + {"111100", ".....", "/....", ".....", "010110101..", "xxinsertw"}, + {"111100", ".....", ".....", ".....", ".1000011...", "xvcmpeqsp[.]"}, + {"111100", ".....", ".....", ".....", ".1001011...", "xvcmpgtsp[.]"}, + {"111100", ".....", ".....", ".....", ".1010011...", "xvcmpgesp[.]"}, + {"111100", ".....", ".....", ".....", ".1100011...", "xvcmpeqdp[.]"}, + {"111100", ".....", ".....", ".....", ".1101011...", "xvcmpgtdp[.]"}, + {"111100", ".....", ".....", ".....", ".1110011...", "xvcmpgedp[.]"}, + {"111100", ".....", ".....", ".....", "00000011...", "xscmpeqdp"}, + {"111100", ".....", ".....", ".....", "00001011...", "xscmpgtdp"}, + {"111100", ".....", ".....", ".....", "00010011...", "xscmpgedp"}, + {"111100", "...//", ".....", ".....", "00100011../", "xscmpudp"}, + {"111100", "...//", ".....", ".....", "00101011../", "xscmpodp"}, + {"111100", "...//", ".....", ".....", "00111011../", "xscmpexpdp"}, + {"111100", ".....", "/////", ".....", "001001000..", "xscvdpuxws"}, + {"111100", ".....", "/////", ".....", "001011000..", "xscvdpsxws"}, + {"111100", ".....", "/////", ".....", "010001000..", "xvcvspuxws"}, + {"111100", ".....", "/////", ".....", "010011000..", "xvcvspsxws"}, + {"111100", ".....", "/////", ".....", "010101000..", "xvcvuxwsp"}, + {"111100", ".....", "/////", ".....", "010111000..", "xvcvsxwsp"}, + {"111100", ".....", "/////", ".....", "011001000..", "xvcvdpuxws"}, + {"111100", ".....", "/////", ".....", "011011000..", "xvcvdpsxws"}, + {"111100", ".....", "/////", ".....", "011101000..", "xvcvuxwdp"}, + {"111100", ".....", "/////", ".....", "011111000..", "xvcvsxwdp"}, + {"111100", ".....", "/////", ".....", "100101000..", "xscvuxdsp"}, + {"111100", ".....", "/////", ".....", "100111000..", "xscvsxdsp"}, + {"111100", ".....", "/////", ".....", "101001000..", "xscvdpuxds"}, + {"111100", ".....", "/////", ".....", "101011000..", "xscvdpsxds"}, + {"111100", ".....", "/////", ".....", "101101000..", "xscvuxddp"}, + {"111100", ".....", "/////", ".....", "101111000..", "xscvsxddp"}, + {"111100", ".....", "/////", ".....", "110001000..", "xvcvspuxds"}, + {"111100", ".....", "/////", ".....", "110011000..", "xvcvspsxds"}, + {"111100", ".....", "/////", ".....", "110101000..", "xvcvuxdsp"}, + {"111100", ".....", "/////", ".....", "110111000..", "xvcvsxdsp"}, + {"111100", ".....", "/////", ".....", "111001000..", "xvcvdpuxds"}, + {"111100", ".....", "/////", ".....", "111011000..", "xvcvdpsxds"}, + {"111100", ".....", "/////", ".....", "111101000..", "xvcvuxddp"}, + {"111100", ".....", "/////", ".....", "111111000..", "xvcvsxddp"}, + {"111100", ".....", "/////", ".....", "001001001..", "xsrdpi"}, + {"111100", ".....", "/////", ".....", "001011001..", "xsrdpiz"}, + {"111100", ".....", "/////", ".....", "001101001..", "xsrdpip"}, + {"111100", ".....", "/////", ".....", "001111001..", "xsrdpim"}, + {"111100", ".....", "/////", ".....", "010001001..", "xvrspi"}, + {"111100", ".....", "/////", ".....", "010011001..", "xvrspiz"}, + {"111100", ".....", "/////", ".....", "010101001..", "xvrspip"}, + {"111100", ".....", "/////", ".....", "010111001..", "xvrspim"}, + {"111100", ".....", "/////", ".....", "011001001..", "xvrdpi"}, + {"111100", ".....", "/////", ".....", "011011001..", "xvrdpiz"}, + {"111100", ".....", "/////", ".....", "011101001..", "xvrdpip"}, + {"111100", ".....", "/////", ".....", "011111001..", "xvrdpim"}, + {"111100", ".....", "/////", ".....", "100001001..", "xscvdpsp"}, + {"111100", ".....", "/////", ".....", "100011001..", "xsrsp"}, + {"111100", ".....", "/////", ".....", "101001001..", "xscvspdp"}, + {"111100", ".....", "/////", ".....", "101011001..", "xsabsdp"}, + {"111100", ".....", "/////", ".....", "101101001..", "xsnabsdp"}, + {"111100", ".....", "/////", ".....", "101111001..", "xsnegdp"}, + {"111100", ".....", "/////", ".....", "110001001..", "xvcvdpsp"}, + {"111100", ".....", "/////", ".....", "110011001..", "xvabssp"}, + {"111100", ".....", "/////", ".....", "110101001..", "xvnabssp"}, + {"111100", ".....", "/////", ".....", "110111001..", "xvnegsp"}, + {"111100", ".....", "/////", ".....", "111001001..", "xvcvspdp"}, + {"111100", ".....", "/////", ".....", "111011001..", "xvabsdp"}, + {"111100", ".....", "/////", ".....", "111101001..", "xvnabsdp"}, + {"111100", ".....", "/////", ".....", "111111001..", "xvnegdp"}, + {"111100", "...//", ".....", ".....", "00111101../", "xstdivdp"}, + {"111100", "...//", ".....", ".....", "01011101../", "xvtdivsp"}, + {"111100", "...//", ".....", ".....", "01111101../", "xvtdivdp"}, + {"111100", ".....", ".....", ".....", "1101.101...", "xvtstdcsp"}, + {"111100", ".....", ".....", ".....", "1111.101...", "xvtstdcdp"}, + {"111100", ".....", "/////", ".....", "000001010..", "xsrsqrtesp"}, + {"111100", ".....", "/////", ".....", "000011010..", "xsresp"}, + {"111100", ".....", "/////", ".....", "001001010..", "xsrsqrtedp"}, + {"111100", ".....", "/////", ".....", "001011010..", "xsredp"}, + {"111100", "...//", "/////", ".....", "001101010./", "xstsqrtdp"}, + {"111100", ".....", "/////", ".....", "010001010..", "xvrsqrtesp"}, + {"111100", ".....", "/////", ".....", "010011010..", "xvresp"}, + {"111100", "...//", "/////", ".....", "010101010./", "xvtsqrtsp"}, + {"111100", ".....", "/////", ".....", "011001010..", "xvrsqrtedp"}, + {"111100", ".....", "/////", ".....", "011011010..", "xvredp"}, + {"111100", "...//", "/////", ".....", "011101010./", "xvtsqrtdp"}, + {"111100", ".....", ".....", ".....", "100101010./", "xststdcsp"}, + {"111100", ".....", ".....", ".....", "101101010./", "xststdcdp"}, + {"111100", ".....", ".....", ".....", "1110010100.", "xxgenpcvbm"}, + {"111100", ".....", ".....", ".....", "1110110100.", "xxgenpcvwm"}, + {"111100", ".....", ".....", ".....", "1110010101.", "xxgenpcvhm"}, + {"111100", ".....", ".....", ".....", "1110110101.", "xxgenpcvdm"}, + {"111100", ".....", "/////", ".....", "000001011..", "xssqrtsp"}, + {"111100", ".....", "/////", ".....", "001001011..", "xssqrtdp"}, + {"111100", ".....", "/////", ".....", "001101011..", "xsrdpic"}, + {"111100", ".....", "/////", ".....", "010001011..", "xvsqrtsp"}, + {"111100", ".....", "/////", ".....", "010101011..", "xvrspic"}, + {"111100", ".....", "/////", ".....", "011001011..", "xvsqrtdp"}, + {"111100", ".....", "/////", ".....", "011101011..", "xvrdpic"}, + {"111100", ".....", "/////", ".....", "100001011..", "xscvdpspn"}, + {"111100", ".....", "/////", ".....", "101001011..", "xscvspdpn"}, + {"111100", ".....", "00000", ".....", "101011011./", "xsxexpdp"}, + {"111100", ".....", "00001", ".....", "101011011./", "xsxsigdp"}, + {"111100", ".....", "10000", ".....", "101011011..", "xscvhpdp"}, + {"111100", ".....", "10001", ".....", "101011011..", "xscvdphp"}, + {"111100", ".....", "00000", ".....", "111011011..", "xvxexpdp"}, + {"111100", ".....", "00001", ".....", "111011011..", "xvxsigdp"}, + {"111100", "...//", "00010", ".....", "111011011./", "xvtlsbb"}, + {"111100", ".....", "00111", ".....", "111011011..", "xxbrh"}, + {"111100", ".....", "01000", ".....", "111011011..", "xvxexpsp"}, + {"111100", ".....", "01001", ".....", "111011011..", "xvxsigsp"}, + {"111100", ".....", "01111", ".....", "111011011..", "xxbrw"}, + {"111100", ".....", "10000", ".....", "111011011..", "xvcvbf16sp"}, + {"111100", ".....", "10001", ".....", "111011011..", "xvcvspbf16"}, + {"111100", ".....", "10111", ".....", "111011011..", "xxbrd"}, + {"111100", ".....", "11000", ".....", "111011011..", "xvcvhpsp"}, + {"111100", ".....", "11001", ".....", "111011011..", "xvcvsphp"}, + {"111100", ".....", "11111", ".....", "111011011..", "xxbrq"}, + {"111100", ".....", ".....", ".....", "1110010110.", "xsiexpdp"}, + {"111100", ".....", ".....", ".....", ".....11....", "xxsel"}, + {"111101", ".....", ".....", ".....", ".........00", "stfdp"}, + {"111101", ".....", ".....", ".....", ".........10", "stxsd"}, + {"111101", ".....", ".....", ".....", ".........11", "stxssp"}, + {"111101", ".....", ".....", ".....", "........001", "lxv"}, + {"111101", ".....", ".....", ".....", "........101", "stxv"}, + {"111110", ".....", ".....", ".....", ".........00", "std"}, + {"111110", ".....", ".....", ".....", ".........01", "stdu"}, + {"111110", ".....", ".....", ".....", ".........10", "stq"}, + {"111111", "...//", ".....", ".....", "0000000000/", "fcmpu"}, + {"111111", "...//", ".....", ".....", "0000100000/", "fcmpo"}, + {"111111", "...//", "...//", "/////", "0001000000/", "mcrfs"}, + {"111111", "...//", ".....", ".....", "0010000000/", "ftdiv"}, + {"111111", "...//", "/////", ".....", "0010100000/", "ftsqrt"}, + {"111111", ".....", ".....", ".....", "0001000010.", "dscliq[.]"}, + {"111111", ".....", ".....", ".....", "0001100010.", "dscriq[.]"}, + {"111111", "...//", ".....", ".....", "0011000010/", "dtstdcq"}, + {"111111", "...//", ".....", ".....", "0011100010/", "dtstdgq"}, + {"111111", ".....", ".....", ".....", "0000000010.", "daddq[.]"}, + {"111111", ".....", ".....", ".....", "0000100010.", "dmulq[.]"}, + {"111111", "...//", ".....", ".....", "0010000010/", "dcmpoq"}, + {"111111", "...//", ".....", ".....", "0010100010/", "dtstexq"}, + {"111111", ".....", "/////", ".....", "0100000010.", "dctqpq[.]"}, + {"111111", ".....", "/////", ".....", "0100100010.", "dctfixq[.]"}, + {"111111", ".....", "..///", ".....", "0101000010.", "ddedpdq[.]"}, + {"111111", ".....", "/////", ".....", "0101100010.", "dxexq[.]"}, + {"111111", ".....", ".....", ".....", "1000000010.", "dsubq[.]"}, + {"111111", ".....", ".....", ".....", "1000100010.", "ddivq[.]"}, + {"111111", "...//", ".....", ".....", "1010000010/", "dcmpuq"}, + {"111111", "...//", ".....", ".....", "1010100010/", "dtstsfq"}, + {"111111", ".....", "/////", ".....", "1100000010.", "drdpq[.]"}, + {"111111", ".....", "/////", ".....", "1100100010.", "dcffixq[.]"}, + {"111111", ".....", ".////", ".....", "1101000010.", "denbcdq[.]"}, + {"111111", ".....", ".....", ".....", "1101100010.", "diexq[.]"}, + {"111111", ".....", "00000", ".....", "1111100010/", "dcffixqq"}, + {"111111", ".....", "00001", ".....", "1111100010/", "dctfixqq"}, + {"111111", ".....", ".....", ".....", "..00000011.", "dquaq[.]"}, + {"111111", ".....", ".....", ".....", "..00100011.", "drrndq[.]"}, + {"111111", ".....", ".....", ".....", "..01000011.", "dquaiq[.]"}, + {"111111", ".....", "////.", ".....", "..01100011.", "drintxq[.]"}, + {"111111", ".....", "////.", ".....", "..11100011.", "drintnq[.]"}, + {"111111", "...//", ".....", ".....", "1010100011/", "dtstsfiq"}, + {"111111", ".....", ".....", ".....", "0000000100.", "xsaddqp[o]"}, + {"111111", ".....", ".....", ".....", "0000100100.", "xsmulqp[o]"}, + {"111111", ".....", ".....", ".....", "0001000100/", "xscmpeqqp"}, + {"111111", ".....", ".....", ".....", "0001100100/", "xscpsgnqp"}, + {"111111", "...//", ".....", ".....", "0010000100/", "xscmpoqp"}, + {"111111", "...//", ".....", ".....", "0010100100/", "xscmpexpqp"}, + {"111111", ".....", ".....", ".....", "0011000100/", "xscmpgeqp"}, + {"111111", ".....", ".....", ".....", "0011100100/", "xscmpgtqp"}, + {"111111", ".....", ".....", ".....", "0110000100.", "xsmaddqp[o]"}, + {"111111", ".....", ".....", ".....", "0110100100.", "xsmsubqp[o]"}, + {"111111", ".....", ".....", ".....", "0111000100.", "xsnmaddqp[o]"}, + {"111111", ".....", ".....", ".....", "0111100100.", "xsnmsubqp[o]"}, + {"111111", ".....", ".....", ".....", "1000000100.", "xssubqp[o]"}, + {"111111", ".....", ".....", ".....", "1000100100.", "xsdivqp[o]"}, + {"111111", "...//", ".....", ".....", "1010000100/", "xscmpuqp"}, + {"111111", ".....", ".....", ".....", "1010100100/", "xsmaxcqp"}, + {"111111", ".....", ".....", ".....", "1011000100/", "xststdcqp"}, + {"111111", ".....", ".....", ".....", "1011100100/", "xsmincqp"}, + {"111111", ".....", "00000", ".....", "1100100100/", "xsabsqp"}, + {"111111", ".....", "00010", ".....", "1100100100/", "xsxexpqp"}, + {"111111", ".....", "01000", ".....", "1100100100/", "xsnabsqp"}, + {"111111", ".....", "10000", ".....", "1100100100/", "xsnegqp"}, + {"111111", ".....", "10010", ".....", "1100100100/", "xsxsigqp"}, + {"111111", ".....", "11011", ".....", "1100100100.", "xssqrtqp[o]"}, + {"111111", ".....", "00000", ".....", "1101000100/", "xscvqpuqz"}, + {"111111", ".....", "00001", ".....", "1101000100/", "xscvqpuwz"}, + {"111111", ".....", "00010", ".....", "1101000100/", "xscvudqp"}, + {"111111", ".....", "00011", ".....", "1101000100/", "xscvuqqp"}, + {"111111", ".....", "01000", ".....", "1101000100/", "xscvqpsqz"}, + {"111111", ".....", "01001", ".....", "1101000100/", "xscvqpswz"}, + {"111111", ".....", "01010", ".....", "1101000100/", "xscvsdqp"}, + {"111111", ".....", "01011", ".....", "1101000100/", "xscvsqqp"}, + {"111111", ".....", "10001", ".....", "1101000100/", "xscvqpudz"}, + {"111111", ".....", "10100", ".....", "1101000100.", "xscvqpdp[o]"}, + {"111111", ".....", "10110", ".....", "1101000100/", "xscvdpqp"}, + {"111111", ".....", "11001", ".....", "1101000100/", "xscvqpsdz"}, + {"111111", ".....", ".....", ".....", "1101100100/", "xsiexpqp"}, + {"111111", ".....", "////.", ".....", "..00000101.", "xsrqpi[x]"}, + {"111111", ".....", "////.", ".....", "..00100101/", "xsrqpxp"}, + {"111111", ".....", "/////", "/////", "0000100110.", "mtfsb"}, + {"111111", ".....", "/////", "/////", "0001000110.", "mtfsb"}, + {"111111", "...//", "////.", "..../", "0010000110.", "mtfsfi[.]"}, + {"111111", ".....", ".....", ".....", "1101000110/", "fmrgow"}, + {"111111", ".....", ".....", ".....", "1111000110/", "fmrgew"}, + {"111111", ".....", "00000", "/////", "1001000111.", "mffs[.]"}, + {"111111", ".....", "00001", "/////", "1001000111/", "mffsce"}, + {"111111", ".....", "10100", ".....", "1001000111/", "mffscdrn"}, + {"111111", ".....", "10101", "//...", "1001000111/", "mffscdrni"}, + {"111111", ".....", "10110", ".....", "1001000111/", "mffscrn"}, + {"111111", ".....", "10111", "///..", "1001000111/", "mffscrni"}, + {"111111", ".....", "11000", "/////", "1001000111/", "mffsl"}, + {"111111", ".....", ".....", ".....", "1011000111.", "mtfsf[.]"}, + {"111111", ".....", ".....", ".....", "0000001000.", "fcpsgn[.]"}, + {"111111", ".....", "/////", ".....", "0000101000.", "fneg[.]"}, + {"111111", ".....", "/////", ".....", "0001001000.", "fmr[.]"}, + {"111111", ".....", "/////", ".....", "0010001000.", "fnabs[.]"}, + {"111111", ".....", "/////", ".....", "0100001000.", "fabs[.]"}, + {"111111", ".....", "/////", ".....", "0110001000.", "frin[.]"}, + {"111111", ".....", "/////", ".....", "0110101000.", "friz[.]"}, + {"111111", ".....", "/////", ".....", "0111001000.", "frip[.]"}, + {"111111", ".....", "/////", ".....", "0111101000.", "frim[.]"}, + {"111111", ".....", "/////", ".....", "0000001100.", "frsp[.]"}, + {"111111", ".....", "/////", ".....", "0000001110.", "fctiw[.]"}, + {"111111", ".....", "/////", ".....", "0010001110.", "fctiwu[.]"}, + {"111111", ".....", "/////", ".....", "1100101110.", "fctid[.]"}, + {"111111", ".....", "/////", ".....", "1101001110.", "fcfid[.]"}, + {"111111", ".....", "/////", ".....", "1110101110.", "fctidu[.]"}, + {"111111", ".....", "/////", ".....", "1111001110.", "fcfidu[.]"}, + {"111111", ".....", "/////", ".....", "0000001111.", "fctiwz[.]"}, + {"111111", ".....", "/////", ".....", "0010001111.", "fctiwuz[.]"}, + {"111111", ".....", "/////", ".....", "1100101111.", "fctidz[.]"}, + {"111111", ".....", "/////", ".....", "1110101111.", "fctiduz[.]"}, + {"111111", ".....", ".....", ".....", "/////10010.", "fdiv[.]"}, + {"111111", ".....", ".....", ".....", "/////10100.", "fsub[.]"}, + {"111111", ".....", ".....", ".....", "/////10101.", "fadd[.]"}, + {"111111", ".....", "/////", ".....", "/////10110.", "fsqrt[.]"}, + {"111111", ".....", ".....", ".....", ".....10111.", "fsel[.]"}, + {"111111", ".....", "/////", ".....", "/////11000.", "fre[.]"}, + {"111111", ".....", ".....", "/////", ".....11001.", "fmul[.]"}, + {"111111", ".....", "/////", ".....", "/////11010.", "frsqrte[.]"}, + {"111111", ".....", ".....", ".....", ".....11100.", "fmsub[.]"}, + {"111111", ".....", ".....", ".....", ".....11101.", "fmadd[.]"}, + {"111111", ".....", ".....", ".....", ".....11110.", "fnmsub[.]"}, + {"111111", ".....", ".....", ".....", ".....11111.", "fnmadd[.]"}, + {"111011", "...//", ".....", ".....", "00101010../", "xvi16ger2spp"}, + {"111011", "...//", ".....", ".....", "00110010../", "xvbf16ger2pp"}, + {"111011", "...//", ".....", ".....", "00111010../", "xvf64gerpp"}, + {"111011", "...//", ".....", ".....", "01010010../", "xvf16ger2np"}, + {"111011", "...//", ".....", ".....", "01011010../", "xvf32gernp"}, + {"111011", "...//", ".....", ".....", "01110010../", "xvbf16ger2np"}, + {"111011", "...//", ".....", ".....", "01111010../", "xvf64gernp"}, + {"111011", "...//", ".....", ".....", "10010010../", "xvf16ger2pn"}, + {"111011", "...//", ".....", ".....", "10011010../", "xvf32gerpn"}, + {"111011", "...//", ".....", ".....", "10110010../", "xvbf16ger2pn"}, + {"111011", "...//", ".....", ".....", "10111010../", "xvf64gerpn"}, +}; + +struct { + Ins pfx; + Ins ins; + char *mneomic; +} instab2[] = { + {{"000001", "000//", ".//..", ".....", "..........."}, {"111101", ".....", ".....", ".....", "..........."}, "pstd"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"111110", ".....", ".....", ".....", "..........."}, "pstxvp"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"100000", ".....", ".....", ".....", "..........."}, "plwz"}, + {{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "000..", ".....", "..........."}, "xxsplti32dx"}, + {{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "0010.", ".....", "..........."}, "xxspltidp"}, + {{"000001", "01000", "0////", ".....", "..........."}, {"100000", ".....", "0011.", ".....", "..........."}, "xxspltiw"}, + {{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....00...."}, "xxblendvb"}, + {{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....01...."}, "xxblendvh"}, + {{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....10...."}, "xxblendvw"}, + {{"000001", "01000", "0////", "/////", "///////////"}, {"100001", ".....", ".....", ".....", ".....11...."}, "xxblendvd"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"100010", ".....", ".....", ".....", "..........."}, "plbz"}, + {{"000001", "01000", "0////", "/////", "////////..."}, {"100010", ".....", ".....", ".....", ".....00...."}, "xxpermx"}, + {{"000001", "01000", "0////", "/////", "///........"}, {"100010", ".....", ".....", ".....", ".....01...."}, "xxeval"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"100100", ".....", ".....", ".....", "..........."}, "pstw"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"100110", ".....", ".....", ".....", "..........."}, "pstb"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"101000", ".....", ".....", ".....", "..........."}, "plhz"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"101001", ".....", ".....", ".....", "..........."}, "plwa"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"101010", ".....", ".....", ".....", "..........."}, "plxsd"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"101010", ".....", ".....", ".....", "..........."}, "plha"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"101011", ".....", ".....", ".....", "..........."}, "plxssp"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"101100", ".....", ".....", ".....", "..........."}, "psth"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"101110", ".....", ".....", ".....", "..........."}, "pstxsd"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"101111", ".....", ".....", ".....", "..........."}, "pstxssp"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"110000", ".....", ".....", ".....", "..........."}, "plfs"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"11001.", ".....", ".....", ".....", "..........."}, "plxv"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"110010", ".....", ".....", ".....", "..........."}, "plfd"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"110100", ".....", ".....", ".....", "..........."}, "pstfs"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"11011.", ".....", ".....", ".....", "..........."}, "pstxv"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"110110", ".....", ".....", ".....", "..........."}, "pstfd"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"111000", ".....", ".....", ".....", "..........."}, "plq"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"111001", ".....", ".....", ".....", "..........."}, "pld"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"111010", ".....", ".....", ".....", "..........."}, "plxvp"}, + {{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "00000010../"}, "pmxvi8ger4pp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00010010../"}, "pmxvf16ger2pp"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00011010../"}, "pmxvf32gerpp"}, + {{"000001", "11100", "1////", ".....", "..........."}, {"111011", "...//", ".....", ".....", "00100010../"}, "pmxvi4ger8pp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00101010../"}, "pmxvi16ger2spp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00110010../"}, "pmxvbf16ger2pp"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00111010../"}, "pmxvf64gerpp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01010010../"}, "pmxvf16ger2np"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "01011010../"}, "pmxvf32gernp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01110010../"}, "pmxvbf16ger2n"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "01111010../"}, "pmxvf64gernp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "10010010../"}, "pmxvf16ger2pn"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "10011010../"}, "pmxvf32gerpn"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "10110010../"}, "pmxvbf16ger2pn"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "10111010../"}, "pmxvf64gerpn"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "11010010../"}, "pmxvf16ger2nn"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "11011010../"}, "pmxvf32gernn"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "11110010../"}, "pmxvbf16ger2nn"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "11111010../"}, "pmxvf64gernn"}, + {{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "00000011../"}, "pmxvi8ger4"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00010011../"}, "pmxvf16ger2"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00011011../"}, "pmxvf32ger"}, + {{"000001", "11100", "1////", ".....", "..........."}, {"111011", "...//", ".....", ".....", "00100011../"}, "pmxvi4ger8"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00101011../"}, "pmxvi16ger2s"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "00110011../"}, "pmxvbf16ger2"}, + {{"000001", "11100", "1////", "/////", "///........"}, {"111011", "...//", ".....", ".....", "00111011../"}, "pmxvf64ger"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01001011../"}, "pmxvi16ger2"}, + {{"000001", "11100", "1////", "..../", "///........"}, {"111011", "...//", ".....", ".....", "01100011../"}, "pmxvi8ger4spp"}, + {{"000001", "11100", "1////", "..///", "///........"}, {"111011", "...//", ".....", ".....", "01101011../"}, "pmxvi16ger2pp"}, + {{"000001", "000//", ".//..", ".....", "..........."}, {"111100", ".....", ".....", ".....", "..........."}, "pstq"}, + {{"000001", "100//", ".//..", ".....", "..........."}, {"001110", ".....", ".....", ".....", "..........."}, "paddi"}, + {{"000001", "11000", "000//", "/////", "///////////"}, {"......", ".....", ".....", ".....", "..........."}, "pnop"}, +}; + +static int which = 0; + +static ulong +str2i(char *s) +{ + ulong o; + + for(o = 0; *s != '\0'; s++){ + o <<= 1; + switch(*s){ + case '.': + o |= which&1; + break; + case '0': case '/': + break; + case '1': + o |= 1; + break; + } + } + return o; +} + +static ulong +parsefmt(Ins *w) +{ + return (str2i(w->op)<<26) | (str2i(w->a1)<<21) | (str2i(w->a2)<<16) | (str2i(w->a3)<<11) | (str2i(w->xop)<<0); +} + +#define GET4(p) (u32int)(p)[3] | (u32int)(p)[2]<<8 | (u32int)(p)[1]<<16 | (u32int)(p)[0]<<24 +#define PUT4(p, u) (p)[0] = (u)>>24, (p)[1] = (u)>>16, (p)[2] = (u)>>8, (p)[3] = (u) + +long +fakeread(int, void *buf, long n, vlong off) +{ + uvlong o; + + if(n < 0 || n%4 != 0 || off%4 != 0) + return -1; + if(off < nelem(instab)*4){ + o = parsefmt(instab+off/4); + PUT4(((uchar*)buf), o); + return 4; + } + off -= nelem(instab)*4; + switch(off%8){ + case 0: + o = parsefmt(&instab2[off/8].pfx); + PUT4(((uchar*)buf), o); + return 4; + case 4: + o = parsefmt(&instab2[off/8].ins); + PUT4(((uchar*)buf), o); + return 4; + default: + return -1; + } +} + +Map fakemap = { + 1, + "", -1, fakeread, 1, 0, 0, nelem(instab)*4 + nelem(instab2)*8, 0, +}; + +void +main(int, char**) +{ + uchar buf[64]; + int i, w; + int fail; + + fail = 0; + machbytype(FPOWER64); + + for(w = 0; w < 2; w++){ + which = w; + for(i = 0; i < nelem(instab); i++){ + buf[0] = 0; + machdata->das(&fakemap, i*4, 0, (char*)buf, sizeof buf); + if(strstr((char*)buf, "unknown") != nil) + fail++; + else if(strstr((char*)buf, instab[i].mneomic) == nil) + print("%s\t%s\n", instab[i].mneomic, (char*)buf); + if(fail > 20) + sysfatal("fail %d", i-20); + } + } + for(w = 0; w < 2; w++){ + which = w; + for(i = 0; i < nelem(instab2); i++){ + buf[0] = 0; + machdata->das(&fakemap, nelem(instab)*4+i*8, 0, (char*)buf, sizeof buf); + if(strstr((char*)buf, "unknown") != nil){ + print("(%d) %s\t%s\n", which, instab2[i].mneomic, (char*)buf); + fail++; + } else if(strstr((char*)buf, instab2[i].mneomic) == nil){ + print("%s\t%s\n", instab2[i].mneomic, (char*)buf); + } + if(fail > 20) + sysfatal("fail %d", i-20); + } + } + exits(nil); +}