164562Sgshapiro/* Print GOULD NPL instructions for GDB, the GNU debugger.
277349Sgshapiro   Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc.
364562Sgshapiro
464562SgshapiroThis file is part of GDB.
564562Sgshapiro
664562SgshapiroGDB is free software; you can redistribute it and/or modify
764562Sgshapiroit under the terms of the GNU General Public License as published by
864562Sgshapirothe Free Software Foundation; either version 1, or (at your option)
964562Sgshapiroany later version.
1064562Sgshapiro
1164562SgshapiroGDB is distributed in the hope that it will be useful,
1264562Sgshapirobut WITHOUT ANY WARRANTY; without even the implied warranty of
1364562SgshapiroMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1464562SgshapiroGNU General Public License for more details.
1564562Sgshapiro
1677349SgshapiroYou should have received a copy of the GNU General Public License
1764562Sgshapiroalong with GDB; see the file COPYING.  If not, write to
1864562Sgshapirothe Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
1964562Sgshapiro
2064562Sgshapirostruct gld_opcode
2164562Sgshapiro{
2264562Sgshapiro  char *name;
2364562Sgshapiro  unsigned long opcode;
2477349Sgshapiro  unsigned long mask;
2564562Sgshapiro  char *args;
2664562Sgshapiro  int length;
2777349Sgshapiro};
2864562Sgshapiro
2964562Sgshapiro/* We store four bytes of opcode for all opcodes because that
3064562Sgshapiro   is the most any of them need.  The actual length of an instruction
3164562Sgshapiro   is always at least 2 bytes, and at most four.  The length of the
3264562Sgshapiro   instruction is based on the opcode.
3364562Sgshapiro
3464562Sgshapiro   The mask component is a mask saying which bits must match
3564562Sgshapiro   particular opcode in order for an instruction to be an instance
3664562Sgshapiro   of that opcode.
3764562Sgshapiro
3864562Sgshapiro   The args component is a string containing characters
3964562Sgshapiro   that are used to format the arguments to the instruction. */
4064562Sgshapiro
4164562Sgshapiro/* Kinds of operands:
4264562Sgshapiro   r  Register in first field
4364562Sgshapiro   R  Register in second field
4464562Sgshapiro   b  Base register in first field
4564562Sgshapiro   B  Base register in second field
4664562Sgshapiro   v  Vector register in first field
4764562Sgshapiro   V  Vector register in first field
4864562Sgshapiro   A  Optional address register (base register)
4964562Sgshapiro   X  Optional index register
5064562Sgshapiro   I  Immediate data (16bits signed)
5164562Sgshapiro   O  Offset field (16bits signed)
5271345Sgshapiro   h  Offset field (15bits signed)
5371345Sgshapiro   d  Offset field (14bits signed)
5471345Sgshapiro   S  Shift count field
5571345Sgshapiro
5671345Sgshapiro   any other characters are printed as is...
5764562Sgshapiro*/
5864562Sgshapiro
5964562Sgshapiro/* The assembler requires that this array be sorted as follows:
6064562Sgshapiro   all instances of the same mnemonic must be consecutive.
6164562Sgshapiro   All instances of the same mnemonic with the same number of operands
6264562Sgshapiro   must be consecutive.
6364562Sgshapiro */
6464562Sgshapirostruct gld_opcode gld_opcodes[] =
6564562Sgshapiro{
6664562Sgshapiro{ "lb",		0xb4080000,	0xfc080000,	"r,xOA,X",	4 },
6764562Sgshapiro{ "lnb",	0xb8080000,	0xfc080000,	"r,xOA,X",	4 },
6864562Sgshapiro{ "lbs",	0xec080000,	0xfc080000,	"r,xOA,X",	4 },
6964562Sgshapiro{ "lh",		0xb4000001,	0xfc080001,	"r,xOA,X",	4 },
7064562Sgshapiro{ "lnh",	0xb8000001,	0xfc080001,	"r,xOA,X",	4 },
7164562Sgshapiro{ "lw",		0xb4000000,	0xfc080000,	"r,xOA,X",	4 },
7264562Sgshapiro{ "lnw",	0xb8000000,	0xfc080000,	"r,xOA,X",	4 },
7364562Sgshapiro{ "ld",		0xb4000002,	0xfc080002,	"r,xOA,X",	4 },
7464562Sgshapiro{ "lnd",	0xb8000002,	0xfc080002,	"r,xOA,X",	4 },
7564562Sgshapiro{ "li",		0xf8000000,	0xfc7f0000,	"r,I",		4 },
7664562Sgshapiro{ "lpa",	0x50080000,	0xfc080000,	"r,xOA,X",	4 },
7764562Sgshapiro{ "la",		0x50000000,	0xfc080000,	"r,xOA,X",	4 },
7864562Sgshapiro{ "labr",	0x58080000,	0xfc080000,	"b,xOA,X",	4 },
7964562Sgshapiro{ "lbp",	0x90080000,	0xfc080000,	"r,xOA,X",	4 },
8064562Sgshapiro{ "lhp",	0x90000001,	0xfc080001,	"r,xOA,X",	4 },
8164562Sgshapiro{ "lwp",	0x90000000,	0xfc080000,	"r,xOA,X",	4 },
8264562Sgshapiro{ "ldp",	0x90000002,	0xfc080002,	"r,xOA,X",	4 },
8364562Sgshapiro{ "suabr",	0x58000000,	0xfc080000,	"b,xOA,X",	4 },
8464562Sgshapiro{ "lf",		0xbc000000,	0xfc080000,	"r,xOA,X",	4 },
8564562Sgshapiro{ "lfbr",	0xbc080000,	0xfc080000,	"b,xOA,X",	4 },
8664562Sgshapiro{ "lwbr",	0x5c000000,	0xfc080000,	"b,xOA,X",	4 },
8764562Sgshapiro{ "stb",	0xd4080000,	0xfc080000,	"r,xOA,X",	4 },
8864562Sgshapiro{ "sth",	0xd4000001,	0xfc080001,	"r,xOA,X",	4 },
8964562Sgshapiro{ "stw",	0xd4000000,	0xfc080000,	"r,xOA,X",	4 },
9064562Sgshapiro{ "std",	0xd4000002,	0xfc080002,	"r,xOA,X",	4 },
9164562Sgshapiro{ "stf",	0xdc000000,	0xfc080000,	"r,xOA,X",	4 },
9264562Sgshapiro{ "stfbr",	0xdc080000,	0xfc080000,	"b,xOA,X",	4 },
9364562Sgshapiro{ "stwbr",	0x54000000,	0xfc080000,	"b,xOA,X",	4 },
9464562Sgshapiro{ "zmb",	0xd8080000,	0xfc080000,	"r,xOA,X",	4 },
9564562Sgshapiro{ "zmh",	0xd8000001,	0xfc080001,	"r,xOA,X",	4 },
9664562Sgshapiro{ "zmw",	0xd8000000,	0xfc080000,	"r,xOA,X",	4 },
9764562Sgshapiro{ "zmd",	0xd8000002,	0xfc080002,	"r,xOA,X",	4 },
9864562Sgshapiro{ "stbp",	0x94080000,	0xfc080000,	"r,xOA,X",	4 },
9964562Sgshapiro{ "sthp",	0x94000001,	0xfc080001,	"r,xOA,X",	4 },
10064562Sgshapiro{ "stwp",	0x94000000,	0xfc080000,	"r,xOA,X",	4 },
10164562Sgshapiro{ "stdp",	0x94000002,	0xfc080002,	"r,xOA,X",	4 },
10264562Sgshapiro{ "lil",	0xf80b0000,	0xfc7f0000,	"r,D",		4 },
10364562Sgshapiro{ "lwsl1",	0xec000000,	0xfc080000,	"r,xOA,X",	4 },
10464562Sgshapiro{ "lwsl2",	0xfc000000,	0xfc080000,	"r,xOA,X",	4 },
10564562Sgshapiro{ "lwsl3",	0xfc080000,	0xfc080000,	"r,xOA,X",	4 },
10664562Sgshapiro
10764562Sgshapiro{ "lvb",	0xb0080000,	0xfc080000,	"v,xOA,X",	4 },
10864562Sgshapiro{ "lvh",	0xb0000001,	0xfc080001,	"v,xOA,X",	4 },
10964562Sgshapiro{ "lvw",	0xb0000000,	0xfc080000,	"v,xOA,X",	4 },
11066494Sgshapiro{ "lvd",	0xb0000002,	0xfc080002,	"v,xOA,X",	4 },
11166494Sgshapiro{ "liv",	0x3c040000,	0xfc0f0000,	"v,R",		2 },
11266494Sgshapiro{ "livf",	0x3c080000,	0xfc0f0000,	"v,R",		2 },
11366494Sgshapiro{ "stvb",	0xd0080000,	0xfc080000,	"v,xOA,X",	4 },
11466494Sgshapiro{ "stvh",	0xd0000001,	0xfc080001,	"v,xOA,X",	4 },
11571345Sgshapiro{ "stvw",	0xd0000000,	0xfc080000,	"v,xOA,X",	4 },
11666494Sgshapiro{ "stvd",	0xd0000002,	0xfc080002,	"v,xOA,X",	4 },
11777349Sgshapiro
11864562Sgshapiro{ "trr",	0x2c000000,	0xfc0f0000,	"r,R",		2 },
11964562Sgshapiro{ "trn",	0x2c040000,	0xfc0f0000,	"r,R",		2 },
12064562Sgshapiro{ "trnd",	0x2c0c0000,	0xfc0f0000,	"r,R",		2 },
12164562Sgshapiro{ "trabs",	0x2c010000,	0xfc0f0000,	"r,R",		2 },
12264562Sgshapiro{ "trabsd",	0x2c090000,	0xfc0f0000,	"r,R",		2 },
12364562Sgshapiro{ "trc",	0x2c030000,	0xfc0f0000,	"r,R",		2 },
12477349Sgshapiro{ "xcr",	0x28040000,	0xfc0f0000,	"r,R",		2 },
12577349Sgshapiro{ "cxcr",	0x2c060000,	0xfc0f0000,	"r,R",		2 },
12677349Sgshapiro{ "cxcrd",	0x2c0e0000,	0xfc0f0000,	"r,R",		2 },
12764562Sgshapiro{ "tbrr",	0x2c020000,	0xfc0f0000,	"r,B",		2 },
12864562Sgshapiro{ "trbr",	0x28030000,	0xfc0f0000,	"b,R",		2 },
12964562Sgshapiro{ "xcbr",	0x28020000,	0xfc0f0000,	"b,B",		2 },
13064562Sgshapiro{ "tbrbr",	0x28010000,	0xfc0f0000,	"b,B",		2 },
13164562Sgshapiro
13264562Sgshapiro{ "trvv",	0x28050000,	0xfc0f0000,	"v,V",		2 },
13366494Sgshapiro{ "trvvn",	0x2c050000,	0xfc0f0000,	"v,V",		2 },
13464562Sgshapiro{ "trvvnd",	0x2c0d0000,	0xfc0f0000,	"v,V",		2 },
13564562Sgshapiro{ "trvab",	0x2c070000,	0xfc0f0000,	"v,V",		2 },
13664562Sgshapiro{ "trvabd",	0x2c0f0000,	0xfc0f0000,	"v,V",		2 },
13777349Sgshapiro{ "cmpv",	0x14060000,	0xfc0f0000,	"v,V",		2 },
13877349Sgshapiro{ "expv",	0x14070000,	0xfc0f0000,	"v,V",		2 },
13964562Sgshapiro{ "mrvvlt",	0x10030000,	0xfc0f0000,	"v,V",		2 },
14064562Sgshapiro{ "mrvvle",	0x10040000,	0xfc0f0000,	"v,V",		2 },
14164562Sgshapiro{ "mrvvgt",	0x14030000,	0xfc0f0000,	"v,V",		2 },
14264562Sgshapiro{ "mrvvge",	0x14040000,	0xfc0f0000,	"v,V",		2 },
14364562Sgshapiro{ "mrvveq",	0x10050000,	0xfc0f0000,	"v,V",		2 },
14464562Sgshapiro{ "mrvvne",	0x10050000,	0xfc0f0000,	"v,V",		2 },
14564562Sgshapiro{ "mrvrlt",	0x100d0000,	0xfc0f0000,	"v,R",		2 },
14671345Sgshapiro{ "mrvrle",	0x100e0000,	0xfc0f0000,	"v,R",		2 },
14764562Sgshapiro{ "mrvrgt",	0x140d0000,	0xfc0f0000,	"v,R",		2 },
14864562Sgshapiro{ "mrvrge",	0x140e0000,	0xfc0f0000,	"v,R",		2 },
14964562Sgshapiro{ "mrvreq",	0x100f0000,	0xfc0f0000,	"v,R",		2 },
15064562Sgshapiro{ "mrvrne",	0x140f0000,	0xfc0f0000,	"v,R",		2 },
15166494Sgshapiro{ "trvr",	0x140b0000,	0xfc0f0000,	"r,V",		2 },
15266494Sgshapiro{ "trrv",	0x140c0000,	0xfc0f0000,	"v,R",		2 },
15366494Sgshapiro
15466494Sgshapiro{ "bu",		0x40000000,	0xff880000,	"xOA,X",	4 },
15566494Sgshapiro{ "bns",	0x70080000,	0xff880000,	"xOA,X",	4 },
15666494Sgshapiro{ "bnco",	0x70880000,	0xff880000,	"xOA,X",	4 },
15766494Sgshapiro{ "bge",	0x71080000,	0xff880000,	"xOA,X",	4 },
15866494Sgshapiro{ "bne",	0x71880000,	0xff880000,	"xOA,X",	4 },
15966494Sgshapiro{ "bunge",	0x72080000,	0xff880000,	"xOA,X",	4 },
16066494Sgshapiro{ "bunle",	0x72880000,	0xff880000,	"xOA,X",	4 },
16166494Sgshapiro{ "bgt",	0x73080000,	0xff880000,	"xOA,X",	4 },
16266494Sgshapiro{ "bnany",	0x73880000,	0xff880000,	"xOA,X",	4 },
16366494Sgshapiro{ "bs"	,	0x70000000,	0xff880000,	"xOA,X",	4 },
16464562Sgshapiro{ "bco",	0x70800000,	0xff880000,	"xOA,X",	4 },
16564562Sgshapiro{ "blt",	0x71000000,	0xff880000,	"xOA,X",	4 },
16664562Sgshapiro{ "beq",	0x71800000,	0xff880000,	"xOA,X",	4 },
16764562Sgshapiro{ "buge",	0x72000000,	0xff880000,	"xOA,X",	4 },
16864562Sgshapiro{ "bult",	0x72800000,	0xff880000,	"xOA,X",	4 },
16964562Sgshapiro{ "ble",	0x73000000,	0xff880000,	"xOA,X",	4 },
17064562Sgshapiro{ "bany",	0x73800000,	0xff880000,	"xOA,X",	4 },
17164562Sgshapiro{ "brlnk",	0x44000000,	0xfc080000,	"r,xOA,X",	4 },
17264562Sgshapiro{ "bib",	0x48000000,	0xfc080000,	"r,xOA,X",	4 },
17364562Sgshapiro{ "bih",	0x48080000,	0xfc080000,	"r,xOA,X",	4 },
17464562Sgshapiro{ "biw",	0x4c000000,	0xfc080000,	"r,xOA,X",	4 },
17564562Sgshapiro{ "bid",	0x4c080000,	0xfc080000,	"r,xOA,X",	4 },
17664562Sgshapiro{ "bivb",	0x60000000,	0xfc080000,	"r,xOA,X",	4 },
17764562Sgshapiro{ "bivh",	0x60080000,	0xfc080000,	"r,xOA,X",	4 },
17864562Sgshapiro{ "bivw",	0x64000000,	0xfc080000,	"r,xOA,X",	4 },
17964562Sgshapiro{ "bivd",	0x64080000,	0xfc080000,	"r,xOA,X",	4 },
18064562Sgshapiro{ "bvsb",	0x68000000,	0xfc080000,	"r,xOA,X",	4 },
18177349Sgshapiro{ "bvsh",	0x68080000,	0xfc080000,	"r,xOA,X",	4 },
18264562Sgshapiro{ "bvsw",	0x6c000000,	0xfc080000,	"r,xOA,X",	4 },
18377349Sgshapiro{ "bvsd",	0x6c080000,	0xfc080000,	"r,xOA,X",	4 },
18464562Sgshapiro
18577349Sgshapiro{ "camb",	0x80080000,	0xfc080000,	"r,xOA,X",	4 },
18664562Sgshapiro{ "camh",	0x80000001,	0xfc080001,	"r,xOA,X",	4 },
18764562Sgshapiro{ "camw",	0x80000000,	0xfc080000,	"r,xOA,X",	4 },
18864562Sgshapiro{ "camd",	0x80000002,	0xfc080002,	"r,xOA,X",	4 },
18964562Sgshapiro{ "car",	0x10000000,	0xfc0f0000,	"r,R",		2 },
19064562Sgshapiro{ "card",	0x14000000,	0xfc0f0000,	"r,R",		2 },
19164562Sgshapiro{ "ci",		0xf8050000,	0xfc7f0000,	"r,I",		4 },
19264562Sgshapiro{ "chkbnd",	0x5c080000,	0xfc080000,	"r,xOA,X",	4 },
19364562Sgshapiro
19477349Sgshapiro{ "cavv",	0x10010000,	0xfc0f0000,	"v,V",		2 },
19564562Sgshapiro{ "cavr",	0x10020000,	0xfc0f0000,	"v,R",		2 },
19664562Sgshapiro{ "cavvd",	0x10090000,	0xfc0f0000,	"v,V",		2 },
19764562Sgshapiro{ "cavrd",	0x100b0000,	0xfc0f0000,	"v,R",		2 },
19864562Sgshapiro
19964562Sgshapiro{ "anmb",	0x84080000,	0xfc080000,	"r,xOA,X",	4 },
20064562Sgshapiro{ "anmh",	0x84000001,	0xfc080001,	"r,xOA,X",	4 },
20164562Sgshapiro{ "anmw",	0x84000000,	0xfc080000,	"r,xOA,X",	4 },
20264562Sgshapiro{ "anmd",	0x84000002,	0xfc080002,	"r,xOA,X",	4 },
20364562Sgshapiro{ "anr",	0x04000000,	0xfc0f0000,	"r,R",		2 },
20464562Sgshapiro{ "ani",	0xf8080000,	0xfc7f0000,	"r,I",		4 },
20564562Sgshapiro{ "ormb",	0xb8080000,	0xfc080000,	"r,xOA,X",	4 },
20664562Sgshapiro{ "ormh",	0xb8000001,	0xfc080001,	"r,xOA,X",	4 },
20764562Sgshapiro{ "ormw",	0xb8000000,	0xfc080000,	"r,xOA,X",	4 },
20864562Sgshapiro{ "ormd",	0xb8000002,	0xfc080002,	"r,xOA,X",	4 },
20964562Sgshapiro{ "orr",	0x08000000,	0xfc0f0000,	"r,R",		2 },
21064562Sgshapiro{ "oi",		0xf8090000,	0xfc7f0000,	"r,I",		4 },
21164562Sgshapiro{ "eomb",	0x8c080000,	0xfc080000,	"r,xOA,X",	4 },
21264562Sgshapiro{ "eomh",	0x8c000001,	0xfc080001,	"r,xOA,X",	4 },
21364562Sgshapiro{ "eomw",	0x8c000000,	0xfc080000,	"r,xOA,X",	4 },
21477349Sgshapiro{ "eomd",	0x8c000002,	0xfc080002,	"r,xOA,X",	4 },
21564562Sgshapiro{ "eor",	0x0c000000,	0xfc0f0000,	"r,R",		2 },
21664562Sgshapiro{ "eoi",	0xf80a0000,	0xfc7f0000,	"r,I",		4 },
21764562Sgshapiro
21864562Sgshapiro{ "anvv",	0x04010000,	0xfc0f0000,	"v,V",		2 },
21964562Sgshapiro{ "anvr",	0x04020000,	0xfc0f0000,	"v,R",		2 },
22064562Sgshapiro{ "orvv",	0x08010000,	0xfc0f0000,	"v,V",		2 },
22164562Sgshapiro{ "orvr",	0x08020000,	0xfc0f0000,	"v,R",		2 },
22264562Sgshapiro{ "eovv",	0x0c010000,	0xfc0f0000,	"v,V",		2 },
22364562Sgshapiro{ "eovr",	0x0c020000,	0xfc0f0000,	"v,R",		2 },
22464562Sgshapiro
22564562Sgshapiro{ "sacz",	0x100c0000,	0xfc0f0000,	"r,R",		2 },
22664562Sgshapiro{ "sla",	0x1c400000,	0xfc600000,	"r,S",		2 },
22764562Sgshapiro{ "sll",	0x1c600000,	0xfc600000,	"r,S",		2 },
22864562Sgshapiro{ "slc",	0x24400000,	0xfc600000,	"r,S",		2 },
22964562Sgshapiro{ "slad",	0x20400000,	0xfc600000,	"r,S",		2 },
23064562Sgshapiro{ "slld",	0x20600000,	0xfc600000,	"r,S",		2 },
23164562Sgshapiro{ "sra",	0x1c000000,	0xfc600000,	"r,S",		2 },
23264562Sgshapiro{ "srl",	0x1c200000,	0xfc600000,	"r,S",		2 },
23364562Sgshapiro{ "src",	0x24000000,	0xfc600000,	"r,S",		2 },
23464562Sgshapiro{ "srad",	0x20000000,	0xfc600000,	"r,S",		2 },
23564562Sgshapiro{ "srld",	0x20200000,	0xfc600000,	"r,S",		2 },
23664562Sgshapiro{ "sda",	0x3c030000,	0xfc0f0000,	"r,R",		2 },
23764562Sgshapiro{ "sdl",	0x3c020000,	0xfc0f0000,	"r,R",		2 },
23864562Sgshapiro{ "sdc",	0x3c010000,	0xfc0f0000,	"r,R",		2 },
23964562Sgshapiro{ "sdad",	0x3c0b0000,	0xfc0f0000,	"r,R",		2 },
24064562Sgshapiro{ "sdld",	0x3c0a0000,	0xfc0f0000,	"r,R",		2 },
24164562Sgshapiro
24264562Sgshapiro{ "svda",	0x3c070000,	0xfc0f0000,	"v,R",		2 },
24364562Sgshapiro{ "svdl",	0x3c060000,	0xfc0f0000,	"v,R",		2 },
24464562Sgshapiro{ "svdc",	0x3c050000,	0xfc0f0000,	"v,R",		2 },
24564562Sgshapiro{ "svdad",	0x3c0e0000,	0xfc0f0000,	"v,R",		2 },
24664562Sgshapiro{ "svdld",	0x3c0d0000,	0xfc0f0000,	"v,R",		2 },
24764562Sgshapiro
24864562Sgshapiro{ "sbm",	0xac080000,	0xfc080000,	"f,xOA,X",	4 },
24964562Sgshapiro{ "zbm",	0xac000000,	0xfc080000,	"f,xOA,X",	4 },
25064562Sgshapiro{ "tbm",	0xa8080000,	0xfc080000,	"f,xOA,X",	4 },
25164562Sgshapiro{ "incmb",	0xa0000000,	0xfc080000,	"xOA,X",	4 },
25264562Sgshapiro{ "incmh",	0xa0080000,	0xfc080000,	"xOA,X",	4 },
25364562Sgshapiro{ "incmw",	0xa4000000,	0xfc080000,	"xOA,X",	4 },
25464562Sgshapiro{ "incmd",	0xa4080000,	0xfc080000,	"xOA,X",	4 },
25564562Sgshapiro{ "sbmd",	0x7c080000,	0xfc080000,	"r,xOA,X",	4 },
25677349Sgshapiro{ "zbmd",	0x7c000000,	0xfc080000,	"r,xOA,X",	4 },
25777349Sgshapiro{ "tbmd",	0x78080000,	0xfc080000,	"r,xOA,X",	4 },
25877349Sgshapiro
25977349Sgshapiro{ "ssm",	0x9c080000,	0xfc080000,	"f,xOA,X",	4 },
26077349Sgshapiro{ "zsm",	0x9c000000,	0xfc080000,	"f,xOA,X",	4 },
26177349Sgshapiro{ "tsm",	0x98080000,	0xfc080000,	"f,xOA,X",	4 },
26264562Sgshapiro
26364562Sgshapiro{ "admb",	0xc8080000,	0xfc080000,	"r,xOA,X",	4 },
26464562Sgshapiro{ "admh",	0xc8000001,	0xfc080001,	"r,xOA,X",	4 },
26564562Sgshapiro{ "admw",	0xc8000000,	0xfc080000,	"r,xOA,X",	4 },
26664562Sgshapiro{ "admd",	0xc8000002,	0xfc080002,	"r,xOA,X",	4 },
26764562Sgshapiro{ "adr",	0x38000000,	0xfc0f0000,	"r,R",		2 },
26864562Sgshapiro{ "armb",	0xe8080000,	0xfc080000,	"r,xOA,X",	4 },
26964562Sgshapiro{ "armh",	0xe8000001,	0xfc080001,	"r,xOA,X",	4 },
27064562Sgshapiro{ "armw",	0xe8000000,	0xfc080000,	"r,xOA,X",	4 },
27164562Sgshapiro{ "armd",	0xe8000002,	0xfc080002,	"r,xOA,X",	4 },
27264562Sgshapiro{ "adi",	0xf8010000,	0xfc0f0000,	"r,I",		4 },
27364562Sgshapiro{ "sumb",	0xcc080000,	0xfc080000,	"r,xOA,X",	4 },
27464562Sgshapiro{ "sumh",	0xcc000001,	0xfc080001,	"r,xOA,X",	4 },
27564562Sgshapiro{ "sumw",	0xcc000000,	0xfc080000,	"r,xOA,X",	4 },
27664562Sgshapiro{ "sumd",	0xcc000002,	0xfc080002,	"r,xOA,X",	4 },
27764562Sgshapiro{ "sur",	0x3c000000,	0xfc0f0000,	"r,R",		2 },
27864562Sgshapiro{ "sui",	0xf8020000,	0xfc0f0000,	"r,I",		4 },
27964562Sgshapiro{ "mpmb",	0xc0080000,	0xfc080000,	"r,xOA,X",	4 },
28064562Sgshapiro{ "mpmh",	0xc0000001,	0xfc080001,	"r,xOA,X",	4 },
28164562Sgshapiro{ "mpmw",	0xc0000000,	0xfc080000,	"r,xOA,X",	4 },
28264562Sgshapiro{ "mpr",	0x38020000,	0xfc0f0000,	"r,R",		2 },
28366494Sgshapiro{ "mprd",	0x3c0f0000,	0xfc0f0000,	"r,R",		2 },
28464562Sgshapiro{ "mpi",	0xf8030000,	0xfc0f0000,	"r,I",		4 },
28564562Sgshapiro{ "dvmb",	0xc4080000,	0xfc080000,	"r,xOA,X",	4 },
28664562Sgshapiro{ "dvmh",	0xc4000001,	0xfc080001,	"r,xOA,X",	4 },
28764562Sgshapiro{ "dvmw",	0xc4000000,	0xfc080000,	"r,xOA,X",	4 },
28864562Sgshapiro{ "dvr",	0x380a0000,	0xfc0f0000,	"r,R",		2 },
28964562Sgshapiro{ "dvi",	0xf8040000,	0xfc0f0000,	"r,I",		4 },
29064562Sgshapiro{ "exs",	0x38080000,	0xfc0f0000,	"r,R",		2 },
29164562Sgshapiro
29264562Sgshapiro{ "advv",	0x30000000,	0xfc0f0000,	"v,V",		2 },
29364562Sgshapiro{ "advvd",	0x30080000,	0xfc0f0000,	"v,V",		2 },
29464562Sgshapiro{ "adrv",	0x34000000,	0xfc0f0000,	"v,R",		2 },
29564562Sgshapiro{ "adrvd",	0x34080000,	0xfc0f0000,	"v,R",		2 },
29664562Sgshapiro{ "suvv",	0x30010000,	0xfc0f0000,	"v,V",		2 },
29764562Sgshapiro{ "suvvd",	0x30090000,	0xfc0f0000,	"v,V",		2 },
29864562Sgshapiro{ "surv",	0x34010000,	0xfc0f0000,	"v,R",		2 },
29964562Sgshapiro{ "survd",	0x34090000,	0xfc0f0000,	"v,R",		2 },
30066494Sgshapiro{ "mpvv",	0x30020000,	0xfc0f0000,	"v,V",		2 },
30164562Sgshapiro{ "mprv",	0x34020000,	0xfc0f0000,	"v,R",		2 },
30277349Sgshapiro
30377349Sgshapiro{ "adfw",	0xe0080000,	0xfc080000,	"r,xOA,X",	4 },
30477349Sgshapiro{ "adfd",	0xe0080002,	0xfc080002,	"r,xOA,X",	4 },
30577349Sgshapiro{ "adrfw",	0x38010000,	0xfc0f0000,	"r,R",		2 },
30677349Sgshapiro{ "adrfd",	0x38090000,	0xfc0f0000,	"r,R",		2 },
30777349Sgshapiro{ "surfw",	0xe0000000,	0xfc080000,	"r,xOA,X",	4 },
30877349Sgshapiro{ "surfd",	0xe0000002,	0xfc080002,	"r,xOA,X",	4 },
30977349Sgshapiro{ "surfw",	0x38030000,	0xfc0f0000,	"r,R",		2 },
31077349Sgshapiro{ "surfd",	0x380b0000,	0xfc0f0000,	"r,R",		2 },
31177349Sgshapiro{ "mpfw",	0xe4080000,	0xfc080000,	"r,xOA,X",	4 },
31277349Sgshapiro{ "mpfd",	0xe4080002,	0xfc080002,	"r,xOA,X",	4 },
31364562Sgshapiro{ "mprfw",	0x38060000,	0xfc0f0000,	"r,R",		2 },
31464562Sgshapiro{ "mprfd",	0x380e0000,	0xfc0f0000,	"r,R",		2 },
31577349Sgshapiro{ "rfw",	0xe4000000,	0xfc080000,	"r,xOA,X",	4 },
31677349Sgshapiro{ "rfd",	0xe4000002,	0xfc080002,	"r,xOA,X",	4 },
31777349Sgshapiro{ "rrfw",	0x0c0e0000,	0xfc0f0000,	"r",		2 },
31877349Sgshapiro{ "rrfd",	0x0c0f0000,	0xfc0f0000,	"r",		2 },
31977349Sgshapiro
32077349Sgshapiro{ "advvfw",	0x30040000,	0xfc0f0000,	"v,V",		2 },
32177349Sgshapiro{ "advvfd",	0x300c0000,	0xfc0f0000,	"v,V",		2 },
32277349Sgshapiro{ "adrvfw",	0x34040000,	0xfc0f0000,	"v,R",		2 },
32377349Sgshapiro{ "adrvfd",	0x340c0000,	0xfc0f0000,	"v,R",		2 },
32477349Sgshapiro{ "suvvfw",	0x30050000,	0xfc0f0000,	"v,V",		2 },
32577349Sgshapiro{ "suvvfd",	0x300d0000,	0xfc0f0000,	"v,V",		2 },
32677349Sgshapiro{ "survfw",	0x34050000,	0xfc0f0000,	"v,R",		2 },
32777349Sgshapiro{ "survfd",	0x340d0000,	0xfc0f0000,	"v,R",		2 },
32877349Sgshapiro{ "mpvvfw",	0x30060000,	0xfc0f0000,	"v,V",		2 },
32977349Sgshapiro{ "mpvvfd",	0x300e0000,	0xfc0f0000,	"v,V",		2 },
33064562Sgshapiro{ "mprvfw",	0x34060000,	0xfc0f0000,	"v,R",		2 },
33164562Sgshapiro{ "mprvfd",	0x340e0000,	0xfc0f0000,	"v,R",		2 },
33264562Sgshapiro{ "rvfw",	0x30070000,	0xfc0f0000,	"v",		2 },
33366494Sgshapiro{ "rvfd",	0x300f0000,	0xfc0f0000,	"v",		2 },
33464562Sgshapiro
33577349Sgshapiro{ "fltw",	0x38070000,	0xfc0f0000,	"r,R",		2 },
33664562Sgshapiro{ "fltd",	0x380f0000,	0xfc0f0000,	"r,R",		2 },
33777349Sgshapiro{ "fixw",	0x38050000,	0xfc0f0000,	"r,R",		2 },
33877349Sgshapiro{ "fixd",	0x380d0000,	0xfc0f0000,	"r,R",		2 },
33977349Sgshapiro{ "cfpds",	0x3c090000,	0xfc0f0000,	"r,R",		2 },
34077349Sgshapiro
34177349Sgshapiro{ "fltvw",	0x080d0000,	0xfc0f0000,	"v,V",		2 },
34277349Sgshapiro{ "fltvd",	0x080f0000,	0xfc0f0000,	"v,V",		2 },
34377349Sgshapiro{ "fixvw",	0x080c0000,	0xfc0f0000,	"v,V",		2 },
34477349Sgshapiro{ "fixvd",	0x080e0000,	0xfc0f0000,	"v,V",		2 },
34577349Sgshapiro{ "cfpvds",	0x0c0d0000,	0xfc0f0000,	"v,V",		2 },
34677349Sgshapiro
34777349Sgshapiro{ "orvrn",	0x000a0000,	0xfc0f0000,	"r,V",		2 },
34864562Sgshapiro{ "andvrn",	0x00080000,	0xfc0f0000,	"r,V",		2 },
34964562Sgshapiro{ "frsteq",	0x04090000,	0xfc0f0000,	"r,V",		2 },
35077349Sgshapiro{ "sigma",	0x0c080000,	0xfc0f0000,	"r,V",		2 },
35177349Sgshapiro{ "sigmad",	0x0c0a0000,	0xfc0f0000,	"r,V",		2 },
35277349Sgshapiro{ "sigmf",	0x08080000,	0xfc0f0000,	"r,V",		2 },
35377349Sgshapiro{ "sigmfd",	0x080a0000,	0xfc0f0000,	"r,V",		2 },
35477349Sgshapiro{ "prodf",	0x04080000,	0xfc0f0000,	"r,V",		2 },
35566494Sgshapiro{ "prodfd",	0x040a0000,	0xfc0f0000,	"r,V",		2 },
35666494Sgshapiro{ "maxv",	0x10080000,	0xfc0f0000,	"r,V",		2 },
35766494Sgshapiro{ "maxvd",	0x100a0000,	0xfc0f0000,	"r,V",		2 },
35877349Sgshapiro{ "minv",	0x14080000,	0xfc0f0000,	"r,V",		2 },
35977349Sgshapiro{ "minvd",	0x140a0000,	0xfc0f0000,	"r,V",		2 },
36066494Sgshapiro
36177349Sgshapiro{ "lpsd",	0xf0000000,	0xfc080000,	"xOA,X",	4 },
36277349Sgshapiro{ "ldc",	0xf0080000,	0xfc080000,	"xOA,X",	4 },
36366494Sgshapiro{ "spm",	0x040c0000,	0xfc0f0000,	"r",		2 },
36466494Sgshapiro{ "rpm",	0x040d0000,	0xfc0f0000,	"r",		2 },
36564562Sgshapiro{ "tritr",	0x00070000,	0xfc0f0000,	"r",		2 },
36664562Sgshapiro{ "trrit",	0x00060000,	0xfc0f0000,	"r",		2 },
36766494Sgshapiro{ "rpswt",	0x04080000,	0xfc0f0000,	"r",		2 },
36864562Sgshapiro{ "exr",	0xf8070000,	0xfc0f0000,	"",		4 },
36964562Sgshapiro{ "halt",	0x00000000,	0xfc0f0000,	"",		2 },
37064562Sgshapiro{ "wait",	0x00010000,	0xfc0f0000,	"",		2 },
37164562Sgshapiro{ "nop",	0x00020000,	0xfc0f0000,	"",		2 },
37264562Sgshapiro{ "eiae",	0x00030000,	0xfc0f0000,	"",		2 },
37366494Sgshapiro{ "efae",	0x000d0000,	0xfc0f0000,	"",		2 },
37464562Sgshapiro{ "diae",	0x000e0000,	0xfc0f0000,	"",		2 },
37564562Sgshapiro{ "dfae",	0x000f0000,	0xfc0f0000,	"",		2 },
37664562Sgshapiro{ "spvc",	0xf8060000,	0xfc0f0000,	"r,T,N",	4 },
37764562Sgshapiro{ "rdsts",	0x00090000,	0xfc0f0000,	"r",		2 },
37864562Sgshapiro{ "setcpu",	0x000c0000,	0xfc0f0000,	"r",		2 },
37964562Sgshapiro{ "cmc",	0x000b0000,	0xfc0f0000,	"r",		2 },
38064562Sgshapiro{ "trrcu",	0x00040000,	0xfc0f0000,	"r",		2 },
38164562Sgshapiro{ "attnio",	0x00050000,	0xfc0f0000,	"",		2 },
38271345Sgshapiro{ "fudit",	0x28080000,	0xfc0f0000,	"",		2 },
38364562Sgshapiro{ "break",	0x28090000,	0xfc0f0000,	"",		2 },
38464562Sgshapiro{ "frzss",	0x280a0000,	0xfc0f0000,	"",		2 },
38564562Sgshapiro{ "ripi",	0x04040000,	0xfc0f0000,	"r,R",		2 },
38664562Sgshapiro{ "xcp",	0x04050000,	0xfc0f0000,	"r",		2 },
38764562Sgshapiro{ "block",	0x04060000,	0xfc0f0000,	"",		2 },
38864562Sgshapiro{ "unblock",	0x04070000,	0xfc0f0000,	"",		2 },
38964562Sgshapiro{ "trsc",	0x08060000,	0xfc0f0000,	"r,R",		2 },
39071345Sgshapiro{ "tscr",	0x08070000,	0xfc0f0000,	"r,R",		2 },
39164562Sgshapiro{ "fq",		0x04080000,	0xfc0f0000,	"r",		2 },
39271345Sgshapiro{ "flupte",	0x2c080000,	0xfc0f0000,	"r",		2 },
39371345Sgshapiro{ "rviu",	0x040f0000,	0xfc0f0000,	"",		2 },
39464562Sgshapiro{ "ldel",	0x280c0000,	0xfc0f0000,	"r,R",		2 },
39564562Sgshapiro{ "ldu",	0x280d0000,	0xfc0f0000,	"r,R",		2 },
39664562Sgshapiro{ "stdecc",	0x280b0000,	0xfc0f0000,	"r,R",		2 },
39764562Sgshapiro{ "trpc",	0x08040000,	0xfc0f0000,	"r",		2 },
39864562Sgshapiro{ "tpcr",	0x08050000,	0xfc0f0000,	"r",		2 },
39971345Sgshapiro{ "ghalt",	0x0c050000,	0xfc0f0000,	"r",		2 },
40066494Sgshapiro{ "grun",	0x0c040000,	0xfc0f0000,	"",		2 },
40164562Sgshapiro{ "tmpr",	0x2c0a0000,	0xfc0f0000,	"r,R",		2 },
40264562Sgshapiro{ "trmp",	0x2c0b0000,	0xfc0f0000,	"r,R",		2 },
40364562Sgshapiro
40464562Sgshapiro{ "trrve",	0x28060000,	0xfc0f0000,	"r",		2 },
40564562Sgshapiro{ "trver",	0x28070000,	0xfc0f0000,	"r",		2 },
40664562Sgshapiro{ "trvlr",	0x280f0000,	0xfc0f0000,	"r",		2 },
40771345Sgshapiro
40866494Sgshapiro{ "linkfl",	0x18000000,	0xfc0f0000,	"r,R",		2 },
40964562Sgshapiro{ "linkbl",	0x18020000,	0xfc0f0000,	"r,R",		2 },
41064562Sgshapiro{ "linkfp",	0x18010000,	0xfc0f0000,	"r,R",		2 },
41164562Sgshapiro{ "linkbp",	0x18030000,	0xfc0f0000,	"r,R",		2 },
41264562Sgshapiro{ "linkpl",	0x18040000,	0xfc0f0000,	"r,R",		2 },
41364562Sgshapiro{ "ulinkl",	0x18080000,	0xfc0f0000,	"r,R",		2 },
41471345Sgshapiro{ "ulinkp",	0x18090000,	0xfc0f0000,	"r,R",		2 },
41571345Sgshapiro{ "ulinktl",	0x180a0000,	0xfc0f0000,	"r,R",		2 },
41664562Sgshapiro{ "ulinktp",	0x180b0000,	0xfc0f0000,	"r,R",		2 },
41764562Sgshapiro};
41864562Sgshapiro
41964562Sgshapiroint numopcodes = sizeof(gld_opcodes) / sizeof(gld_opcodes[0]);
42064562Sgshapiro
42171345Sgshapirostruct gld_opcode *endop = gld_opcodes + sizeof(gld_opcodes) /
42264562Sgshapiro		 		sizeof(gld_opcodes[0]);
42364562Sgshapiro