ref: fe53c0930e8595a2e8b5aa71e907a1f2bec6059b
parent: 7b63c05b211e61f9dc6b604f04d7777136cf6e66
author: Jacob Moody <[email protected]>
date: Fri Nov 3 11:34:48 EDT 2023
libmach: power64 catch up
--- a/sys/src/libmach/9.c
+++ b/sys/src/libmach/9.c
@@ -109,7 +109,7 @@
"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) */
--- a/sys/src/libmach/qdb.c
+++ b/sys/src/libmach/qdb.c
@@ -137,6 +137,9 @@
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 @@
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 @@
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 @@
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 @@
mkinstr(uvlong pc, Instr *i)
{
Instr x;
+ ulong w;
if(decode(pc, i) < 0)
return -1;
@@ -249,10 +266,10 @@
* 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 @@
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 @@
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 @@
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 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 @@
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 @@
{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 @@
{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 @@
int n, s;
ulong mask;
uvlong vmask;
+ Rune r;
if (mnemonic)
format(0, i, mnemonic);
@@ -1069,12 +2261,27 @@
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);
--- /dev/null
+++ b/sys/src/libmach/test/mkfile
@@ -1,0 +1,6 @@
+</$objtype/mkfile
+
+TEST=\
+ q\
+
+</sys/src/cmd/mktest
--- /dev/null
+++ b/sys/src/libmach/test/q.c
@@ -1,0 +1,1323 @@
+#include <u.h>
+#include <libc.h>
+#include <bio.h>
+#include <mach.h>
+
+/*
+ * 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);
+}