ref: 6b8eb26a267808c5ebcb6ec38f0b4806c54c5d6f
dir: /sys/src/libmach/test/q.c/
#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 argc, char **argv)
{
uchar buf[64];
int i, w;
int debug;
machbytype(FPOWER64);
debug = 0;
ARGBEGIN{
case 'd':
debug++;
break;
}ARGEND
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)
sysfatal("%s not implemented", instab[i].mneomic);
else if(debug && strstr((char*)buf, instab[i].mneomic) == nil)
print("%s\t%s\n", instab[i].mneomic, (char*)buf);
}
}
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)
sysfatal("%s not implemented", instab2[i].mneomic);
else if(debug && strstr((char*)buf, instab2[i].mneomic) == nil)
print("%s\t%s\n", instab2[i].mneomic, (char*)buf);
}
}
exits(nil);
}