1409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print mips instructions for GDB, the GNU debugger, or for objdump.
2409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
3409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   2000, 2001, 2002, 2003
4409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Free Software Foundation, Inc.
5409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Contributed by Nobuyuki Hikichi(hikichi@sra.co.jp).
6409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
7409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis file is part of GDB, GAS, and the GNU binutils.
8409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
9409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis program is free software; you can redistribute it and/or modify
10409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliit under the terms of the GNU General Public License as published by
11409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithe Free Software Foundation; either version 2 of the License, or
12409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli(at your option) any later version.
13409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
14409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis program is distributed in the hope that it will be useful,
15409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallibut WITHOUT ANY WARRANTY; without even the implied warranty of
16409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGNU General Public License for more details.
18409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
19409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliYou should have received a copy of the GNU General Public License
20409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallialong with this program; if not, see <http://www.gnu.org/licenses/>.  */
21409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
22cc33b2d8035092608c7cba4154e9c44452727e1bDavid 'Digit' Turner#include "disas/bfd.h"
23409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
24409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mips.h.  Mips opcode list for GDB, the GNU debugger.
25409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
26409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Free Software Foundation, Inc.
27409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Contributed by Ralph Campbell and OSF
28409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Commented and modified by Ian Lance Taylor, Cygnus Support
29409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
30409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThis file is part of GDB, GAS, and the GNU binutils.
31409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
32409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGDB, GAS, and the GNU binutils are free software; you can redistribute
33409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithem and/or modify them under the terms of the GNU General Public
34409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliLicense as published by the Free Software Foundation; either version
35409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli1, or (at your option) any later version.
36409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
37409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliGDB, GAS, and the GNU binutils are distributed in the hope that they
38409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwill be useful, but WITHOUT ANY WARRANTY; without even the implied
39409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
40409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallithe GNU General Public License for more details.
41409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
42409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliYou should have received a copy of the GNU General Public License
43409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallialong with this file; see the file COPYING.  If not,
44409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallisee <http://www.gnu.org/licenses/>.  */
45409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
46409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are bit masks and shift counts to use to access the various
47409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   fields of an instruction.  To retrieve the X field of an
48409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction, use the expression
49409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	(i >> OP_SH_X) & OP_MASK_X
50409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   To set the same field (to j), use
51409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	i = (i &~ (OP_MASK_X << OP_SH_X)) | (j << OP_SH_X)
52409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
53409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Make sure you use fields that are appropriate for the instruction,
54409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   of course.
55409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
56409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The 'i' format uses OP, RS, RT and IMMEDIATE.
57409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
58409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The 'j' format uses OP and TARGET.
59409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
60409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The 'r' format uses OP, RS, RT, RD, SHAMT and FUNCT.
61409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
62409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The 'b' format uses OP, RS, RT and DELTA.
63409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
64409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The floating point 'i' format uses OP, RS, RT and IMMEDIATE.
65409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
66409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The floating point 'r' format uses OP, FMT, FT, FS, FD and FUNCT.
67409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
68409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   A breakpoint instruction uses OP, CODE and SPEC (10 bits of the
69409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   breakpoint instruction are not defined; Kane says the breakpoint
70409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   code field in BREAK is 20 bits; yet MIPS assemblers and debuggers
71409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   only use ten bits).  An optional two-operand form of break/sdbbp
72409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   allows the lower ten bits to be set too, and MIPS32 and later
73409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   architectures allow 20 bits to be set with a signal operand
74409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   (using CODE20).
75409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
76409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The syscall instruction uses CODE20.
77409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
78409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The general coprocessor instructions use COPZ.  */
79409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
80409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_OP		0x3f
81409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_OP		26
82409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RS		0x1f
83409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RS		21
84409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FR		0x1f
85409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FR		21
86409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FMT		0x1f
87409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FMT		21
88409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_BCC		0x7
89409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_BCC		18
90409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE		0x3ff
91409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE		16
92409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE2		0x3ff
93409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE2		6
94409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RT		0x1f
95409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RT		16
96409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FT		0x1f
97409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FT		16
98409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CACHE		0x1f
99409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CACHE		16
100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RD		0x1f
101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RD		11
102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FS		0x1f
103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FS		11
104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_PREFX		0x1f
105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_PREFX		11
106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CCC		0x7
107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CCC		8
108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE20		0xfffff /* 20 bit syscall/breakpoint code.  */
109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE20		6
110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SHAMT		0x1f
111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SHAMT		6
112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FD		0x1f
113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FD		6
114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_TARGET		0x3ffffff
115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_TARGET		0
116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COPZ		0x1ffffff
117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COPZ		0
118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMMEDIATE	0xffff
119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMMEDIATE		0
120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DELTA		0xffff
121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DELTA		0
122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FUNCT		0x3f
123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FUNCT		0
124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SPEC		0x3f
125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SPEC		0
126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_LOCC              8       /* FP condition code.  */
127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_HICC              18      /* FP condition code.  */
128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CC              0x7
129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1NORM          25      /* Normal COP1 encoding.  */
130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1NORM        0x1     /* a single bit.  */
131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1SPEC          21      /* COP1 encodings.  */
132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1SPEC        0xf
133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1SCLR        0x4
134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_COP1CMP         0x3
135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_COP1CMP           4
136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_FORMAT            21      /* FP short format field.  */
137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_FORMAT          0x7
138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_TRUE              16
139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_TRUE            0x1
140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_GE                17
141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_GE              0x01
142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UNSIGNED          16
143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UNSIGNED        0x1
144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_HINT              16
145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_HINT            0x1f
146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MMI               0       /* Multimedia (parallel) op.  */
147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MMI             0x3f
148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MMISUB            6
149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MMISUB          0x1f
150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_PERFREG		0x1f	/* Performance monitoring.  */
151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_PERFREG		1
152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SEL		0	/* Coprocessor select field.  */
153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SEL		0x7	/* The sel field of mfcZ and mtcZ.  */
154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_CODE19		6       /* 19 bit wait code.  */
155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_CODE19		0x7ffff
156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_ALN		21
157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_ALN		0x7
158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VSEL		21
159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VSEL		0x1f
160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VECBYTE		0x7	/* Selector field is really 4 bits,
161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					   but 0x8-0xf don't select bytes.  */
162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VECBYTE		22
163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_VECALIGN	0x7	/* Vector byte-align (alni.ob) op.  */
164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_VECALIGN		21
165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_INSMSB		0x1f	/* "ins" MSB.  */
166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_INSMSB		11
167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_EXTMSBD		0x1f	/* "ext" MSBD.  */
168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_EXTMSBD		11
169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP0		0x10
171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP1		0x11
172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP2		0x12
173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP3		0x13
174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC1		0x31
175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC2		0x32
176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC3		0x33	/* a.k.a. pref */
177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC1		0x35
178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC2		0x36
179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC3		0x37	/* a.k.a. ld */
180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC1		0x39
181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC2		0x3a
182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC3		0x3b
183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC1		0x3d
184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC2		0x3e
185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC3		0x3f	/* a.k.a. sd */
186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE */
188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPACC		11
189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPACC  	0x3
190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPACC_S  	21
191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPACC_S	0x3
192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPSFT		20
193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPSFT  	0x3f
194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_DSPSFT_7  	19
195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_DSPSFT_7	0x7f
196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SA3		21
197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SA3		0x7
198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_SA4		21
199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_SA4		0xf
200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMM8		16
201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMM8		0xff
202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_IMM10		16
203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_IMM10		0x3ff
204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_WRDSP		11
205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_WRDSP		0x3f
206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_RDDSP		16
207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_RDDSP		0x3f
208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_BP		11
209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_BP		0x3
210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS MT ASE */
212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MT_U		5
213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MT_U		0x1
214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MT_H		4
215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MT_H		0x1
216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MTACC_T		18
217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MTACC_T		0x3
218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_MTACC_D		13
219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_MTACC_D		0x3
220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP0		0x10
222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP1		0x11
223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP2		0x12
224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_COP3		0x13
225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC1		0x31
226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC2		0x32
227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LWC3		0x33	/* a.k.a. pref */
228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC1		0x35
229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC2		0x36
230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_LDC3		0x37	/* a.k.a. ld */
231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC1		0x39
232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC2		0x3a
233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SWC3		0x3b
234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC1		0x3d
235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC2		0x3e
236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	OP_OP_SDC3		0x3f	/* a.k.a. sd */
237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Values in the 'VSEL' field.  */
239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_IMM_QH	0x1d
240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_IMM_OB	0x1e
241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_VEC_QH	0x15
242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MDMX_FMTSEL_VEC_OB	0x16
243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* UDI */
245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI1		6
246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI1		0x1f
247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI2		6
248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI2		0x3ff
249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI3		6
250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI3		0x7fff
251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_SH_UDI4		6
252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OP_MASK_UDI4		0xfffff
253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This structure holds information for a particular instruction.  */
254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_opcode
256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* The name of the instruction.  */
258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *name;
259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* A string describing the arguments for this instruction.  */
260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *args;
261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* The basic opcode for the instruction.  When assembling, this
262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     opcode is modified by the arguments to produce the actual opcode
263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     that is used.  If pinfo is INSN_MACRO, then this is 0.  */
264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long match;
265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* If pinfo is not INSN_MACRO, then this is a bit mask for the
266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     relevant portions of the opcode when disassembling.  If the
267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     actual opcode anded with the match field equals the opcode field,
268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     then we have found the correct instruction.  If pinfo is
269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     INSN_MACRO, then this field is the macro identifier.  */
270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long mask;
271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* For a macro, this is INSN_MACRO.  Otherwise, it is a collection
272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     of bits describing the instruction, notably any relevant hazard
273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     information.  */
274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long pinfo;
275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* A collection of additional bits describing the instruction. */
276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long pinfo2;
277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* A collection of bits describing the instruction sets of which this
278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     instruction or macro is a member. */
279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long membership;
280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the characters which may appear in the args field of an
283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction.  They appear in the order in which the fields appear
284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   when the instruction is used.  Commas and parentheses in the args
285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   string are ignored when assembling, and written into the output
286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   when disassembling.
287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Each of these characters corresponds to a mask field defined above.
289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "<" 5 bit shift amount (OP_*_SHAMT)
291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ">" shift amount between 32 and 63, stored after subtracting 32 (OP_*_SHAMT)
292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "a" 26 bit target address (OP_*_TARGET)
293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "b" 5 bit base register (OP_*_RS)
294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "c" 10 bit breakpoint code (OP_*_CODE)
295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "d" 5 bit destination register specifier (OP_*_RD)
296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "h" 5 bit prefx hint (OP_*_PREFX)
297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "i" 16 bit unsigned immediate (OP_*_IMMEDIATE)
298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "j" 16 bit signed immediate (OP_*_DELTA)
299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "k" 5 bit cache opcode in target register position (OP_*_CACHE)
300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli       Also used for immediate operands in vr5400 vector insns.
301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "o" 16 bit signed offset (OP_*_DELTA)
302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "p" 16 bit PC relative branch target address (OP_*_DELTA)
303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "q" 10 bit extra breakpoint code (OP_*_CODE2)
304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "r" 5 bit same register used as both source and target (OP_*_RS)
305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "s" 5 bit source register specifier (OP_*_RS)
306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "t" 5 bit target register (OP_*_RT)
307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "u" 16 bit upper 16 bits of address (OP_*_IMMEDIATE)
308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "v" 5 bit same register used as both source and destination (OP_*_RS)
309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "w" 5 bit same register used as both target and destination (OP_*_RT)
310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "U" 5 bit same destination register in both OP_*_RD and OP_*_RT
311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli       (used by clo and clz)
312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "C" 25 bit coprocessor function code (OP_*_COPZ)
313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "B" 20 bit syscall/breakpoint function code (OP_*_CODE20)
314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "J" 19 bit wait function code (OP_*_CODE19)
315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "x" accept and ignore register name
316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "z" must be zero register
317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "K" 5 bit Hardware Register (rdhwr instruction) (OP_*_RD)
318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+A" 5 bit ins/ext/dins/dext/dinsm/dextm position, which becomes
319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        LSB (OP_*_SHAMT).
320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 0 <= pos < 32.
321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+B" 5 bit ins/dins size, which becomes MSB (OP_*_INSMSB).
322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Requires that "+A" or "+E" occur first to set position.
323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 0 < (pos+size) <= 32.
324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+C" 5 bit ext/dext size, which becomes MSBD (OP_*_EXTMSBD).
325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Requires that "+A" or "+E" occur first to set position.
326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 0 < (pos+size) <= 32.
327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	(Also used by "dext" w/ different limits, but limits for
328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	that are checked by the M_DEXT macro.)
329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+E" 5 bit dinsu/dextu position, which becomes LSB-32 (OP_*_SHAMT).
330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 32 <= pos < 64.
331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+F" 5 bit "dinsm/dinsu" size, which becomes MSB-32 (OP_*_INSMSB).
332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Requires that "+A" or "+E" occur first to set position.
333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 32 < (pos+size) <= 64.
334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+G" 5 bit "dextm" size, which becomes MSBD-32 (OP_*_EXTMSBD).
335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Requires that "+A" or "+E" occur first to set position.
336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 32 < (pos+size) <= 64.
337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+H" 5 bit "dextu" size, which becomes MSBD (OP_*_EXTMSBD).
338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Requires that "+A" or "+E" occur first to set position.
339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	Enforces: 32 < (pos+size) <= 64.
340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Floating point instructions:
342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "D" 5 bit destination register (OP_*_FD)
343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "M" 3 bit compare condition code (OP_*_CCC) (only used for mips4 and up)
344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "N" 3 bit branch condition code (OP_*_BCC) (only used for mips4 and up)
345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "S" 5 bit fs source 1 register (OP_*_FS)
346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "T" 5 bit ft source 2 register (OP_*_FT)
347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "R" 5 bit fr source 3 register (OP_*_FR)
348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "V" 5 bit same register used as floating source and destination (OP_*_FS)
349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "W" 5 bit same register used as floating target and destination (OP_*_FT)
350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Coprocessor instructions:
352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "E" 5 bit target register (OP_*_RT)
353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "G" 5 bit destination register (OP_*_RD)
354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "H" 3 bit sel field for (d)mtc* and (d)mfc* (OP_*_SEL)
355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "P" 5 bit performance-monitor register (OP_*_PERFREG)
356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "e" 5 bit vector register byte specifier (OP_*_VECBYTE)
357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "%" 3 bit immediate vr5400 vector alignment operand (OP_*_VECALIGN)
358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   see also "k" above
359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+D" Combined destination register ("G") and sel ("H") for CP0 ops,
360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	for pretty-printing in disassembly only.
361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Macro instructions:
363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "A" General 32 bit expression
364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "I" 32 bit immediate (value placed in imm_expr).
365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+I" 32 bit immediate (value placed in imm2_expr).
366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "F" 64 bit floating point constant in .rdata
367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "L" 64 bit floating point constant in .lit8
368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "f" 32 bit floating point constant
369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "l" 32 bit floating point constant in .lit4
370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   MDMX instruction operands (note that while these use the FP register
372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   fields, they accept both $fN and $vN names for the registers):
373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "O"	MDMX alignment offset (OP_*_ALN)
374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "Q"	MDMX vector/scalar/immediate source (OP_*_VSEL and OP_*_FT)
375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "X"	MDMX destination register (OP_*_FD)
376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "Y"	MDMX source register (OP_*_FS)
377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "Z"	MDMX source register (OP_*_FT)
378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   DSP ASE usage:
380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "2" 2 bit unsigned immediate for byte align (OP_*_BP)
381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "3" 3 bit unsigned immediate (OP_*_SA3)
382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "4" 4 bit unsigned immediate (OP_*_SA4)
383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "5" 8 bit unsigned immediate (OP_*_IMM8)
384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "6" 5 bit unsigned immediate (OP_*_RS)
385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "7" 2 bit dsp accumulator register (OP_*_DSPACC)
386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "8" 6 bit unsigned immediate (OP_*_WRDSP)
387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "9" 2 bit dsp accumulator register (OP_*_DSPACC_S)
388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "0" 6 bit signed immediate (OP_*_DSPSFT)
389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ":" 7 bit signed immediate (OP_*_DSPSFT_7)
390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "'" 6 bit unsigned immediate (OP_*_RDDSP)
391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "@" 10 bit signed immediate (OP_*_IMM10)
392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   MT ASE usage:
394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "!" 1 bit usermode flag (OP_*_MT_U)
395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "$" 1 bit load high flag (OP_*_MT_H)
396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "*" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_T)
397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "&" 2 bit dsp/smartmips accumulator register (OP_*_MTACC_D)
398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "g" 5 bit coprocessor 1 and 2 destination register (OP_*_RD)
399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+t" 5 bit coprocessor 0 destination register (OP_*_RT)
400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+T" 5 bit coprocessor 0 destination register (OP_*_RT) - disassembly only
401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   UDI immediates:
403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+1" UDI immediate bits 6-10
404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+2" UDI immediate bits 6-15
405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+3" UDI immediate bits 6-20
406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+4" UDI immediate bits 6-25
407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Other:
409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "()" parens surrounding optional value
410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ","  separates operands
411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "[]" brackets around index for vector-op scalar operand specifier (vr5400)
412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "+"  Start of extension sequence.
413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Characters used so far, for quick reference when adding more:
415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "234567890"
416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "%[]<>(),+:'@!$*&"
417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "abcdefghijklopqrstuvwxz"
419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Extension character sequences used so far ("+" followed by the
421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   following), for quick reference when adding more:
422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "1234"
423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "ABCDEFGHIT"
424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "t"
425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli*/
426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bits which may be set in the pinfo field of an
428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instructions, if it is not equal to INSN_MACRO.  */
429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in OP_*_RD.  */
431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_D            0x00000001
432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in OP_*_RT.  */
433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_T            0x00000002
434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies general purpose register 31.  */
435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_GPR_31           0x00000004
436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FD.  */
437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_D            0x00000008
438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FS.  */
439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_S            0x00000010
440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the floating point register in OP_*_FT.  */
441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_FPR_T            0x00000020
442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in OP_*_RS.  */
443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_GPR_S             0x00000040
444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in OP_*_RT.  */
445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_GPR_T             0x00000080
446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FS.  */
447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_S             0x00000100
448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FT.  */
449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_T             0x00000200
450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the floating point register in OP_*_FR.  */
451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_FPR_R		    0x00000400
452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies coprocessor condition code.  */
453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_COND_CODE        0x00000800
454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads coprocessor condition code.  */
455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_COND_CODE         0x00001000
456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* TLB operation.  */
457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_TLB                    0x00002000
458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads coprocessor register other than floating point register.  */
459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COP                    0x00004000
460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction loads value from memory, requiring delay.  */
461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_LOAD_MEMORY_DELAY      0x00008000
462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction loads value from coprocessor, requiring delay.  */
463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_LOAD_COPROC_DELAY	    0x00010000
464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction has unconditional branch delay slot.  */
465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_UNCOND_BRANCH_DELAY    0x00020000
466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction has conditional branch delay slot.  */
467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COND_BRANCH_DELAY      0x00040000
468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Conditional branch likely: if branch not taken, insn nullified.  */
469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COND_BRANCH_LIKELY	    0x00080000
470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Moves to coprocessor register, requiring delay.  */
471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COPROC_MOVE_DELAY      0x00100000
472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Loads coprocessor register from memory, requiring delay.  */
473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_COPROC_MEMORY_DELAY    0x00200000
474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the HI register.  */
475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_HI		    0x00400000
476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the LO register.  */
477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_READ_LO		    0x00800000
478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the HI register.  */
479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_HI		    0x01000000
480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the LO register.  */
481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_WRITE_LO		    0x02000000
482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Takes a trap (easier to keep out of delay slot).  */
483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_TRAP                   0x04000000
484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction stores value into memory.  */
485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_STORE_MEMORY	    0x08000000
486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction uses single precision floating point.  */
487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define FP_S			    0x10000000
488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction uses double precision floating point.  */
489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define FP_D			    0x20000000
490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is part of the tx39's integer multiply family.    */
491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MULT                   0x40000000
492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction synchronize shared memory.  */
493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SYNC		    0x80000000
494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bits which may be set in the pinfo2 field of an
496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction. */
497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is a simple alias (I.E. "move" for daddu/addu/or) */
499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define	INSN2_ALIAS		    0x00000001
500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction reads MDMX accumulator. */
501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN2_READ_MDMX_ACC	    0x00000002
502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction writes MDMX accumulator. */
503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN2_WRITE_MDMX_ACC	    0x00000004
504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Instruction is actually a macro.  It should be ignored by the
506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   disassembler, and requires special treatment by the assembler.  */
507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MACRO                  0xffffffff
508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Masks used to mark instructions to indicate which MIPS ISA level
510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   they were introduced in.  ISAs, as defined below, are logical
511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ORs of these bits, indicating that they support the instructions
512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   defined at the given level.  */
513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA_MASK		  0x00000fff
515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA1                 0x00000001
516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA2                 0x00000002
517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA3                 0x00000004
518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA4                 0x00000008
519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA5                 0x00000010
520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA32                0x00000020
521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA64                0x00000040
522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA32R2              0x00000080
523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ISA64R2              0x00000100
524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Masks used for MIPS-defined ASEs.  */
526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_ASE_MASK		  0x0000f000
527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* DSP ASE */
529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSP                  0x00001000
530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSP64                0x00002000
531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS 16 ASE */
532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MIPS16               0x00004000
533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS-3D ASE */
534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MIPS3D               0x00008000
535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Chip specific instructions.  These are bitmasks.  */
537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS R4650 instruction.  */
539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4650                 0x00010000
540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* LSI R4010 instruction.  */
541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4010                 0x00020000
542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4100 instruction.  */
543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4100                 0x00040000
544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Toshiba R3900 instruction.  */
545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_3900                 0x00080000
546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS R10000 instruction.  */
547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_10000                0x00100000
548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Broadcom SB-1 instruction.  */
549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SB1                  0x00200000
550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4111/VR4181 instruction.  */
551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4111                 0x00400000
552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR4120 instruction.  */
553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_4120                 0x00800000
554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR5400 instruction.  */
555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_5400		  0x01000000
556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* NEC VR5500 instruction.  */
557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_5500		  0x02000000
558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MDMX ASE */
560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MDMX                 0x04000000
561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MT ASE */
562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_MT                   0x08000000
563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SmartMIPS ASE  */
564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_SMARTMIPS            0x10000000
565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* DSP R2 ASE  */
566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSN_DSPR2                0x20000000
567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
5685aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson 2E.  */
5695aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define INSN_LOONGSON_2E          0x40000000
5705aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson 2F.  */
5715aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define INSN_LOONGSON_2F          0x80000000
5725aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner
573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS ISA defines, use instead of hardcoding ISA level.  */
574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
575a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#ifndef ISA_MIPS1
576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_UNKNOWN     0               /* Gas internal use.  */
577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS1       (INSN_ISA1)
578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS2       (ISA_MIPS1 | INSN_ISA2)
579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS3       (ISA_MIPS2 | INSN_ISA3)
580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS4       (ISA_MIPS3 | INSN_ISA4)
581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS5       (ISA_MIPS4 | INSN_ISA5)
582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS32      (ISA_MIPS2 | INSN_ISA32)
584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS64      (ISA_MIPS5 | INSN_ISA32 | INSN_ISA64)
585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS32R2    (ISA_MIPS32 | INSN_ISA32R2)
587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define       ISA_MIPS64R2    (ISA_MIPS64 | INSN_ISA32R2 | INSN_ISA64R2)
588a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#endif  // ISA_MIPS1
589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* CPU defines, use instead of hardcoding processor number. Keep this
591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   in sync with bfd/archures.c in order for machine selection to work.  */
592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_UNKNOWN	0               /* Gas internal use.  */
593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R3000	3000
594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R3900	3900
595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4000	4000
596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4010	4010
597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR4100	4100
598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4111	4111
599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR4120	4120
600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4300	4300
601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4400	4400
602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4600	4600
603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R4650	4650
604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R5000	5000
605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR5400	5400
606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_VR5500	5500
607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R6000	6000
608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_RM7000	7000
609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R8000	8000
610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R10000	10000
611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_R12000	12000
612a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner
613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS16	16
614a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#define CPU_SB1         12310201        /* octal 'SB', 01.  */
615a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner
616a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#ifndef CPU_MIPS32
617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS32	32
618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS32R2	33
619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS5       5
620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS64      64
621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CPU_MIPS64R2	65
622a2c14f947951612b45024095afd2210aa7368773David 'Digit' Turner#endif  // !CPU_MIPS32
623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Test for membership in an ISA including chip specific ISAs.  INSN
625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   is pointer to an element of the opcode table; ISA is the specified
626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ISA/ASE bitmask to test against; and CPU is the CPU specific ISA to
627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   test, or zero if no CPU specific ISA test is desired.  */
628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0
630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OPCODE_IS_MEMBER(insn, isa, cpu)				\
631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    (((insn)->membership & isa) != 0					\
632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_R4650 && ((insn)->membership & INSN_4650) != 0)	\
633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_RM7000 && ((insn)->membership & INSN_4650) != 0)	\
634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_RM9000 && ((insn)->membership & INSN_4650) != 0)	\
635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_R4010 && ((insn)->membership & INSN_4010) != 0)	\
636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_VR4100 && ((insn)->membership & INSN_4100) != 0)	\
637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_R3900 && ((insn)->membership & INSN_3900) != 0)	\
638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || ((cpu == CPU_R10000 || cpu == CPU_R12000)			\
639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 && ((insn)->membership & INSN_10000) != 0)			\
640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_SB1 && ((insn)->membership & INSN_SB1) != 0)	\
641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_R4111 && ((insn)->membership & INSN_4111) != 0)	\
642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_VR4120 && ((insn)->membership & INSN_4120) != 0)	\
643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_VR5400 && ((insn)->membership & INSN_5400) != 0)	\
644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || (cpu == CPU_VR5500 && ((insn)->membership & INSN_5500) != 0)	\
645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     || 0)	/* Please keep this term for easier source merging.  */
646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#else
647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define OPCODE_IS_MEMBER(insn, isa, cpu)                               \
648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    (1 != 0)
649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This is a list of macro expanded instructions.
652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   _I appended means immediate
654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   _A appended means address
655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   _AB appended means address with base register
656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   _D appended means 64 bit floating point constant
657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   _S appended means 32 bit floating point constant.  */
658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallienum
660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ABS,
662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ADD_I,
663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ADDU_I,
664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_AND_I,
665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BALIGN,
666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BEQ,
667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BEQ_I,
668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BEQL_I,
669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGE,
670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEL,
671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGE_I,
672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEL_I,
673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEU,
674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEUL,
675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEU_I,
676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGEUL_I,
677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGT,
678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTL,
679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGT_I,
680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTL_I,
681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTU,
682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTUL,
683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTU_I,
684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BGTUL_I,
685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLE,
686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEL,
687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLE_I,
688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEL_I,
689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEU,
690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEUL,
691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEU_I,
692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLEUL_I,
693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLT,
694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTL,
695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLT_I,
696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTL_I,
697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTU,
698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTUL,
699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTU_I,
700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BLTUL_I,
701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BNE,
702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BNE_I,
703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_BNEL_I,
704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_CACHE_AB,
705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DABS,
706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DADD_I,
707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DADDU_I,
708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DDIV_3,
709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DDIV_3I,
710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DDIVU_3,
711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DDIVU_3I,
712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DEXT,
713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DINS,
714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DIV_3,
715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DIV_3I,
716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DIVU_3,
717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DIVU_3I,
718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DLA_AB,
719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DLCA_AB,
720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DLI,
721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMUL,
722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMUL_I,
723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMULO,
724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMULO_I,
725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMULOU,
726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DMULOU_I,
727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DREM_3,
728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DREM_3I,
729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DREMU_3,
730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DREMU_3I,
731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DSUB_I,
732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DSUBU_I,
733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DSUBU_I_2,
734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_J_A,
735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_JAL_1,
736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_JAL_2,
737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_JAL_A,
738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_L_DOB,
739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_L_DAB,
740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LA_AB,
741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LB_A,
742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LB_AB,
743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LBU_A,
744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LBU_AB,
745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LCA_AB,
746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LD_A,
747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LD_OB,
748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LD_AB,
749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LDC1_AB,
750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LDC2_AB,
751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LDC3_AB,
752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LDL_AB,
753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LDR_AB,
754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LH_A,
755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LH_AB,
756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LHU_A,
757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LHU_AB,
758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LI,
759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LI_D,
760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LI_DD,
761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LI_S,
762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LI_SS,
763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LL_AB,
764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LLD_AB,
765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LS_A,
766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LW_A,
767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LW_AB,
768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC0_A,
769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC0_AB,
770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC1_A,
771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC1_AB,
772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC2_A,
773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC2_AB,
774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC3_A,
775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWC3_AB,
776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWL_A,
777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWL_AB,
778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWR_A,
779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWR_AB,
780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_LWU_AB,
781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MOVE,
782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MUL,
783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MUL_I,
784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MULO,
785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MULO_I,
786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MULOU,
787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_MULOU_I,
788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_NOR_I,
789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_OR_I,
790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_REM_3,
791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_REM_3I,
792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_REMU_3,
793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_REMU_3I,
794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DROL,
795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ROL,
796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DROL_I,
797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ROL_I,
798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DROR,
799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ROR,
800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_DROR_I,
801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ROR_I,
802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_S_DA,
803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_S_DOB,
804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_S_DAB,
805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_S_S,
806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SC_AB,
807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SCD_AB,
808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SD_A,
809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SD_OB,
810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SD_AB,
811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SDC1_AB,
812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SDC2_AB,
813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SDC3_AB,
814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SDL_AB,
815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SDR_AB,
816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SEQ,
817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SEQ_I,
818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGE,
819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGE_I,
820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGEU,
821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGEU_I,
822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGT,
823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGT_I,
824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGTU,
825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SGTU_I,
826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLE,
827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLE_I,
828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLEU,
829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLEU_I,
830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLT_I,
831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SLTU_I,
832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SNE,
833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SNE_I,
834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SB_A,
835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SB_AB,
836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SH_A,
837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SH_AB,
838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SW_A,
839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SW_AB,
840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC0_A,
841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC0_AB,
842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC1_A,
843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC1_AB,
844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC2_A,
845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC2_AB,
846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC3_A,
847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWC3_AB,
848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWL_A,
849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWL_AB,
850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWR_A,
851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SWR_AB,
852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SUB_I,
853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SUBU_I,
854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_SUBU_I_2,
855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TEQ_I,
856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TGE_I,
857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TGEU_I,
858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TLT_I,
859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TLTU_I,
860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TNE_I,
861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TRUNCWD,
862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_TRUNCWS,
863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULD,
864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULD_A,
865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULH,
866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULH_A,
867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULHU,
868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULHU_A,
869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULW,
870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_ULW_A,
871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USH,
872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USH_A,
873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USW,
874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USW_A,
875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USD,
876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_USD_A,
877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_XOR_I,
878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_COP0,
879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_COP1,
880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_COP2,
881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_COP3,
882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  M_NUM_MACROS
883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The order of overloaded instructions matters.  Label arguments and
887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   register arguments look the same. Instructions that can have either
888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   for arguments must apear in the correct order in this table for the
889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   assembler to pick the right one. In other words, entries with
890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   immediate operands must apear after the same instruction with
891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   registers.
892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Many instructions are short hand for other instructions (i.e., The
894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   jal <register> instruction is short for jalr <register>).  */
895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const struct mips_opcode mips_builtin_opcodes[];
897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const int bfd_mips_num_builtin_opcodes;
898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern struct mips_opcode *mips_opcodes;
899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern int bfd_mips_num_opcodes;
900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define NUMOPCODES bfd_mips_num_opcodes
901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The rest of this file adds definitions for the mips16 TinyRISC
904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   processor.  */
905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the bitmasks and shift counts used for the different
907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   fields in the instruction formats.  Other than OP, no masks are
908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   provided for the fixed portions of an instruction, since they are
909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   not needed.
910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The I format uses IMM11.
912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RI format uses RX and IMM8.
914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RR format uses RX, and RY.
916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RRI format uses RX, RY, and IMM5.
918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RRR format uses RX, RY, and RZ.
920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RRI_A format uses RX, RY, and IMM4.
922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The SHIFT format uses RX, RY, and SHAMT.
924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The I8 format uses IMM8.
926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The I8_MOVR32 format uses RY and REGR32.
928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The IR_MOV32R format uses REG32R and MOV32Z.
930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The I64 format uses IMM8.
932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The RI64 format uses RY and IMM5.
934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   */
935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_OP	0x1f
937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_OP		11
938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM11	0x7ff
939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM11	0
940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RX	0x7
941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RX		8
942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM8	0xff
943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM8	0
944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RY	0x7
945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RY		5
946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM5	0x1f
947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM5	0
948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_RZ	0x7
949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_RZ		2
950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM4	0xf
951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM4	0
952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_REGR32	0x1f
953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_REGR32	0
954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_REG32R	0x1f
955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_REG32R	3
956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_EXTRACT_REG32R(i) ((((i) >> 5) & 7) | ((i) & 0x18))
957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_MOVE32Z	0x7
958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_MOVE32Z	0
959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_MASK_IMM6	0x3f
960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16OP_SH_IMM6	5
961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These are the characters which may appears in the args field of an
963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction.  They appear in the order in which the fields appear
964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   when the instruction is used.  Commas and parentheses in the args
965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   string are ignored when assembling, and written into the output
966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   when disassembling.
967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "y" 3 bit register (MIPS16OP_*_RY)
969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "x" 3 bit register (MIPS16OP_*_RX)
970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "z" 3 bit register (MIPS16OP_*_RZ)
971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "Z" 3 bit register (MIPS16OP_*_MOVE32Z)
972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "v" 3 bit same register as source and destination (MIPS16OP_*_RX)
973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "w" 3 bit same register as source and destination (MIPS16OP_*_RY)
974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "0" zero register ($0)
975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "S" stack pointer ($sp or $29)
976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "P" program counter
977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "R" return address register ($ra or $31)
978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "X" 5 bit MIPS register (MIPS16OP_*_REGR32)
979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "Y" 5 bit MIPS register (MIPS16OP_*_REG32R)
980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "6" 6 bit unsigned break code (MIPS16OP_*_IMM6)
981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "a" 26 bit jump address
982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "e" 11 bit extension value
983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "l" register list for entry instruction
984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "L" register list for exit instruction
985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   The remaining codes may be extended.  Except as otherwise noted,
987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   the full extended operand is a 16 bit signed value.
988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "<" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 5 bit unsigned)
989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   ">" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 5 bit unsigned)
990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "[" 3 bit unsigned shift count * 0 (MIPS16OP_*_RZ) (full 6 bit unsigned)
991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "]" 3 bit unsigned shift count * 0 (MIPS16OP_*_RX) (full 6 bit unsigned)
992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "4" 4 bit signed immediate * 0 (MIPS16OP_*_IMM4) (full 15 bit signed)
993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "5" 5 bit unsigned immediate * 0 (MIPS16OP_*_IMM5)
994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "H" 5 bit unsigned immediate * 2 (MIPS16OP_*_IMM5)
995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "W" 5 bit unsigned immediate * 4 (MIPS16OP_*_IMM5)
996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "D" 5 bit unsigned immediate * 8 (MIPS16OP_*_IMM5)
997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "j" 5 bit signed immediate * 0 (MIPS16OP_*_IMM5)
998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "8" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8)
999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "V" 8 bit unsigned immediate * 4 (MIPS16OP_*_IMM8)
1000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "C" 8 bit unsigned immediate * 8 (MIPS16OP_*_IMM8)
1001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "U" 8 bit unsigned immediate * 0 (MIPS16OP_*_IMM8) (full 16 bit unsigned)
1002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "k" 8 bit signed immediate * 0 (MIPS16OP_*_IMM8)
1003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "K" 8 bit signed immediate * 8 (MIPS16OP_*_IMM8)
1004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "p" 8 bit conditional branch address (MIPS16OP_*_IMM8)
1005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "q" 11 bit branch address (MIPS16OP_*_IMM11)
1006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "A" 8 bit PC relative address * 4 (MIPS16OP_*_IMM8)
1007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "B" 5 bit PC relative address * 8 (MIPS16OP_*_IMM5)
1008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "E" 5 bit PC relative address * 4 (MIPS16OP_*_IMM5)
1009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   */
1010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Save/restore encoding for the args field when all 4 registers are
1012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   either saved as arguments or saved/restored as statics.  */
1013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_ALL_ARGS    0xe
1014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_ALL_STATICS 0xb
1015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For the mips16, we use the same opcode table format and a few of
1017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   the same flags.  However, most of the flags are different.  */
1018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RX.  */
1020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_X		    0x00000001
1021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RY.  */
1022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_Y		    0x00000002
1023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the register in MIPS16OP_*_RZ.  */
1024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_Z		    0x00000004
1025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the T ($24) register.  */
1026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_T		    0x00000008
1027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the SP ($29) register.  */
1028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_SP		    0x00000010
1029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the RA ($31) register.  */
1030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_31		    0x00000020
1031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Modifies the general purpose register in MIPS16OP_*_REG32R.  */
1032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_WRITE_GPR_Y		    0x00000040
1033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_RX.  */
1034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_X		    0x00000080
1035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_RY.  */
1036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_Y		    0x00000100
1037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the register in MIPS16OP_*_MOVE32Z.  */
1038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_Z		    0x00000200
1039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the T ($24) register.  */
1040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_T		    0x00000400
1041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the SP ($29) register.  */
1042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_SP		    0x00000800
1043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the RA ($31) register.  */
1044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_31		    0x00001000
1045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the program counter.  */
1046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_PC		    0x00002000
1047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Reads the general purpose register in MIPS16OP_*_REGR32.  */
1048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_READ_GPR_X		    0x00004000
1049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Is a branch insn. */
1050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS16_INSN_BRANCH                  0x00010000
1051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The following flags have the same value for the mips16 opcode
1053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   table:
1054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_UNCOND_BRANCH_DELAY
1055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_COND_BRANCH_DELAY
1056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_COND_BRANCH_LIKELY (never used)
1057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_READ_HI
1058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_READ_LO
1059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_WRITE_HI
1060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_WRITE_LO
1061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_TRAP
1062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   INSN_ISA3
1063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   */
1064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const struct mips_opcode mips16_opcodes[];
1066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliextern const int bfd_mips16_num_opcodes;
1067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Short hand so the lines aren't too long.  */
1069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define LDD     INSN_LOAD_MEMORY_DELAY
1071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define LCD	INSN_LOAD_COPROC_DELAY
1072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define UBD     INSN_UNCOND_BRANCH_DELAY
1073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CBD	INSN_COND_BRANCH_DELAY
1074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define COD     INSN_COPROC_MOVE_DELAY
1075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CLD	INSN_COPROC_MEMORY_DELAY
1076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define CBL	INSN_COND_BRANCH_LIKELY
1077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define TRAP	INSN_TRAP
1078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SM	INSN_STORE_MEMORY
1079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_d    INSN_WRITE_GPR_D
1081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_t    INSN_WRITE_GPR_T
1082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_31   INSN_WRITE_GPR_31
1083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_D    INSN_WRITE_FPR_D
1084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_T	INSN_WRITE_FPR_T
1085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_S	INSN_WRITE_FPR_S
1086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_s    INSN_READ_GPR_S
1087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_b    INSN_READ_GPR_S
1088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_t    INSN_READ_GPR_T
1089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_S    INSN_READ_FPR_S
1090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_T    INSN_READ_FPR_T
1091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_R	INSN_READ_FPR_R
1092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_CC	INSN_WRITE_COND_CODE
1093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_CC	INSN_READ_COND_CODE
1094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C0   INSN_COP
1095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C1	INSN_COP
1096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C2   INSN_COP
1097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_C3   INSN_COP
1098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C0   INSN_COP
1099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C1	INSN_COP
1100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C2   INSN_COP
1101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_C3   INSN_COP
1102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_HI	INSN_WRITE_HI
1104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_HI	INSN_READ_HI
1105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_HI  WR_HI|RD_HI
1106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_LO	INSN_WRITE_LO
1108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_LO	INSN_READ_LO
1109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_LO  WR_LO|RD_LO
1110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_HILO WR_HI|WR_LO
1112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_HILO RD_HI|RD_LO
1113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_HILO WR_HILO|RD_HILO
1114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define IS_M    INSN_MULT
1116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_MACC INSN2_WRITE_MDMX_ACC
1118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_MACC INSN2_READ_MDMX_ACC
1119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I1	INSN_ISA1
1121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I2	INSN_ISA2
1122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I3	INSN_ISA3
1123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I4	INSN_ISA4
1124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I5	INSN_ISA5
1125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I32	INSN_ISA32
1126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I64     INSN_ISA64
1127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I33	INSN_ISA32R2
1128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I65	INSN_ISA64R2
1129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MIPS-3D ASE support.  */
1131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define I16     INSN_MIPS16
1132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS32 SmartMIPS ASE support.  */
1134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SMT	INSN_SMARTMIPS
1135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MIPS-3D ASE support.  */
1137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define M3D     INSN_MIPS3D
1138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS64 MDMX ASE support.  */
1140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MX      INSN_MDMX
1141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
11425aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define IL2E	(INSN_LOONGSON_2E)
11435aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner#define IL2F	(INSN_LOONGSON_2F)
11445aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner
1145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define P3	INSN_4650
1146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define L1	INSN_4010
1147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define V1	(INSN_4100 | INSN_4111 | INSN_4120)
1148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define T3      INSN_3900
1149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define M1	INSN_10000
1150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define SB1     INSN_SB1
1151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N411	INSN_4111
1152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N412	INSN_4120
1153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N5	(INSN_5400 | INSN_5500)
1154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N54	INSN_5400
1155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define N55	INSN_5500
1156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G1      (T3             \
1158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                 )
1159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G2      (T3             \
1161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                 )
1162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define G3      (I4             \
1164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                 )
1165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE support.
1167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   NOTE:
1168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   1. MIPS DSP ASE includes 4 accumulators ($ac0 - $ac3).  $ac0 is the pair
1169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   of original HI and LO.  $ac1, $ac2 and $ac3 are new registers, and have
1170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   the same structure as $ac0 (HI + LO).  For DSP instructions that write or
1171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   read accumulators (that may be $ac0), we add WR_a (WR_HILO) or RD_a
1172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   (RD_HILO) attributes, such that HILO dependencies are maintained
1173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   conservatively.
1174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   2. For some mul. instructions that use integer registers as destinations
1176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   but destroy HI+LO as side-effect, we add WR_HILO to their attributes.
1177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   3. MIPS DSP ASE includes a new DSP control register, which has 6 fields
1179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   (ccond, outflag, EFI, c, scount, pos).  Many DSP instructions read or write
1180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   certain fields of the DSP control register.  For simplicity, we decide not
1181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   to track dependencies of these fields.
1182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   However, "bposge32" is a branch instruction that depends on the "pos"
1183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   field.  In order to make sure that GAS does not reorder DSP instructions
1184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   that writes the "pos" field and "bposge32", we add DSP_VOLA (INSN_TRAP)
1185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   attribute to those instructions that write the "pos" field.  */
1186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define WR_a	WR_HILO	/* Write dsp accumulators (reuse WR_HILO)  */
1188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define RD_a	RD_HILO	/* Read dsp accumulators (reuse RD_HILO)  */
1189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MOD_a	WR_a|RD_a
1190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define DSP_VOLA	INSN_TRAP
1191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D32	INSN_DSP
1192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D33	INSN_DSPR2
1193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define D64	INSN_DSP64
1194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS MT ASE support.  */
1196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MT32	INSN_MT
1197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The order of overloaded instructions matters.  Label arguments and
1199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   register arguments look the same. Instructions that can have either
1200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   for arguments must apear in the correct order in this table for the
1201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   assembler to pick the right one. In other words, entries with
1202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   immediate operands must apear after the same instruction with
1203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   registers.
1204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Because of the lookup algorithm used, entries with the same opcode
1206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   name must be contiguous.
1207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   Many instructions are short hand for other instructions (i.e., The
1209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   jal <register> instruction is short for jalr <register>).  */
1210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliconst struct mips_opcode mips_builtin_opcodes[] =
1212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
1213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* These instructions appear first so that the disassembler will find
1214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   them first.  The assemblers uses a hash table based on the
1215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction name anyhow.  */
1216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* name,    args,	match,	    mask,	pinfo,          	membership */
1217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pref",    "k,o(b)",   0xcc000000, 0xfc000000, RD_b,           	0,		I4|I32|G3	},
1218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"prefx",   "h,t(b)",	0x4c00000f, 0xfc0007ff, RD_b|RD_t,		0,		I4|I33	},
1219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nop",     "",         0x00000000, 0xffffffff, 0,              	INSN2_ALIAS,	I1      }, /* sll */
1220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ssnop",   "",         0x00000040, 0xffffffff, 0,              	INSN2_ALIAS,	I32|N55	}, /* sll */
1221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ehb",     "",         0x000000c0, 0xffffffff, 0,              	INSN2_ALIAS,	I33	}, /* sll */
1222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li",      "t,j",      0x24000000, 0xffe00000, WR_t,			INSN2_ALIAS,	I1	}, /* addiu */
1223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li",	    "t,i",	0x34000000, 0xffe00000, WR_t,			INSN2_ALIAS,	I1	}, /* ori */
1224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li",      "t,I",	0,    (int) M_LI,	INSN_MACRO,		0,		I1	},
1225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move",    "d,s",	0,    (int) M_MOVE,	INSN_MACRO,		0,		I1	},
1226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move",    "d,s",	0x0000002d, 0xfc1f07ff, WR_d|RD_s,		INSN2_ALIAS,	I3	},/* daddu */
1227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move",    "d,s",	0x00000021, 0xfc1f07ff, WR_d|RD_s,		INSN2_ALIAS,	I1	},/* addu */
1228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"move",    "d,s",	0x00000025, 0xfc1f07ff,	WR_d|RD_s,		INSN2_ALIAS,	I1	},/* or */
1229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"b",       "p",	0x10000000, 0xffff0000,	UBD,			INSN2_ALIAS,	I1	},/* beq 0,0 */
1230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"b",       "p",	0x04010000, 0xffff0000,	UBD,			INSN2_ALIAS,	I1	},/* bgez 0 */
1231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bal",     "p",	0x04110000, 0xffff0000,	UBD|WR_31,		INSN2_ALIAS,	I1	},/* bgezal 0*/
1232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
1233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs",     "d,v",	0,    (int) M_ABS,	INSN_MACRO,		0,		I1	},
1234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.s",   "D,V",	0x46000005, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I1	},
1235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.d",   "D,V",	0x46200005, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I1	},
1236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"abs.ps",  "D,V",	0x46c00005, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I5|I33	},
1237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add",     "d,v,t",	0x00000020, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
1238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add",     "t,r,I",	0,    (int) M_ADD_I,	INSN_MACRO,		0,		I1	},
1239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.s",   "D,V,T",	0x46000000, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		I1	},
1240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.d",   "D,V,T",	0x46200000, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I1	},
1241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob",  "X,Y,Q",	0x7800000b, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob",  "D,S,T",	0x4ac0000b, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob",  "D,S,T[e]",	0x4800000b, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
1244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ob",  "D,S,k",	0x4bc0000b, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.ps",  "D,V,T",	0x46c00000, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
1246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"add.qh",  "X,Y,Q",	0x7820000b, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adda.ob", "Y,Q",	0x78000037, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
1248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adda.qh", "Y,Q",	0x78200037, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addi",    "t,r,j",	0x20000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
1250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addiu",   "t,r,j",	0x24000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
1251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addl.ob", "Y,Q",	0x78000437, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
1252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addl.qh", "Y,Q",	0x78200437, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addr.ps", "D,S,T",	0x46c00018, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		M3D	},
1254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu",    "d,v,t",	0x00000021, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
1255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu",    "t,r,I",	0,    (int) M_ADDU_I,	INSN_MACRO,		0,		I1	},
1256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.ob", "X,Y,Z,O",	0x78000018, 0xff00003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.ob", "D,S,T,%",	0x48000018, 0xff00003f,	WR_D|RD_S|RD_T, 	0,		N54	},
1258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alni.qh", "X,Y,Z,O",	0x7800001a, 0xff00003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.ps", "D,V,T,s",	0x4c00001e, 0xfc00003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
1260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.ob", "X,Y,Z,s",	0x78000019, 0xfc00003f,	WR_D|RD_S|RD_T|RD_s|FP_D, 0,		MX|SB1	},
1261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"alnv.qh", "X,Y,Z,s",	0x7800001b, 0xfc00003f,	WR_D|RD_S|RD_T|RD_s|FP_D, 0,		MX	},
1262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and",     "d,v,t",	0x00000024, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
1263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and",     "t,r,I",	0,    (int) M_AND_I,	INSN_MACRO,		0,		I1	},
1264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob",  "X,Y,Q",	0x7800000c, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob",  "D,S,T",	0x4ac0000c, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob",  "D,S,T[e]",	0x4800000c, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
1267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.ob",  "D,S,k",	0x4bc0000c, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"and.qh",  "X,Y,Q",	0x7820000c, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"andi",    "t,r,i",	0x30000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
1270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* b is at the top of the table.  */
1271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bal is at the top of the table.  */
1272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc0[tf]l? are at the bottom of the table.  */
1273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any2f", "N,p",	0x45200000, 0xffe30000,	CBD|RD_CC|FP_S,		0,		M3D	},
1274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any2t", "N,p",	0x45210000, 0xffe30000,	CBD|RD_CC|FP_S,		0,		M3D	},
1275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any4f", "N,p",	0x45400000, 0xffe30000,	CBD|RD_CC|FP_S,		0,		M3D	},
1276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1any4t", "N,p",	0x45410000, 0xffe30000,	CBD|RD_CC|FP_S,		0,		M3D	},
1277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1f",    "p",	0x45000000, 0xffff0000,	CBD|RD_CC|FP_S,		0,		I1	},
1278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1f",    "N,p",      0x45000000, 0xffe30000, CBD|RD_CC|FP_S, 	0,		I4|I32	},
1279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1fl",   "p",	0x45020000, 0xffff0000,	CBL|RD_CC|FP_S,		0,		I2|T3	},
1280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1fl",   "N,p",      0x45020000, 0xffe30000, CBL|RD_CC|FP_S, 	0,		I4|I32	},
1281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1t",    "p",	0x45010000, 0xffff0000,	CBD|RD_CC|FP_S,		0,		I1	},
1282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1t",    "N,p",      0x45010000, 0xffe30000, CBD|RD_CC|FP_S, 	0,		I4|I32	},
1283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1tl",   "p",	0x45030000, 0xffff0000,	CBL|RD_CC|FP_S,		0,		I2|T3	},
1284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc1tl",   "N,p",      0x45030000, 0xffe30000, CBL|RD_CC|FP_S, 	0,		I4|I32	},
1285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc2* are at the bottom of the table.  */
1286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* bc3* are at the bottom of the table.  */
1287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beqz",    "s,p",	0x10000000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beqzl",   "s,p",	0x50000000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beq",     "s,t,p",	0x10000000, 0xfc000000,	CBD|RD_s|RD_t,		0,		I1	},
1290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beq",     "s,I,p",	0,    (int) M_BEQ_I,	INSN_MACRO,		0,		I1	},
1291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beql",    "s,t,p",	0x50000000, 0xfc000000,	CBL|RD_s|RD_t,		0,		I2|T3	},
1292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"beql",    "s,I,p",	0,    (int) M_BEQL_I,	INSN_MACRO,		0,		I2|T3	},
1293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bge",     "s,t,p",	0,    (int) M_BGE,	INSN_MACRO,		0,		I1	},
1294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bge",     "s,I,p",	0,    (int) M_BGE_I,	INSN_MACRO,		0,		I1	},
1295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgel",    "s,t,p",	0,    (int) M_BGEL,	INSN_MACRO,		0,		I2|T3	},
1296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgel",    "s,I,p",	0,    (int) M_BGEL_I,	INSN_MACRO,		0,		I2|T3	},
1297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeu",    "s,t,p",	0,    (int) M_BGEU,	INSN_MACRO,		0,		I1	},
1298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeu",    "s,I,p",	0,    (int) M_BGEU_I,	INSN_MACRO,		0,		I1	},
1299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeul",   "s,t,p",	0,    (int) M_BGEUL,	INSN_MACRO,		0,		I2|T3	},
1300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgeul",   "s,I,p",	0,    (int) M_BGEUL_I,	INSN_MACRO,		0,		I2|T3	},
1301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgez",    "s,p",	0x04010000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezl",   "s,p",	0x04030000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezal",  "s,p",	0x04110000, 0xfc1f0000,	CBD|RD_s|WR_31,		0,		I1	},
1304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgezall", "s,p",	0x04130000, 0xfc1f0000,	CBL|RD_s|WR_31,		0,		I2|T3	},
1305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgt",     "s,t,p",	0,    (int) M_BGT,	INSN_MACRO,		0,		I1	},
1306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgt",     "s,I,p",	0,    (int) M_BGT_I,	INSN_MACRO,		0,		I1	},
1307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtl",    "s,t,p",	0,    (int) M_BGTL,	INSN_MACRO,		0,		I2|T3	},
1308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtl",    "s,I,p",	0,    (int) M_BGTL_I,	INSN_MACRO,		0,		I2|T3	},
1309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtu",    "s,t,p",	0,    (int) M_BGTU,	INSN_MACRO,		0,		I1	},
1310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtu",    "s,I,p",	0,    (int) M_BGTU_I,	INSN_MACRO,		0,		I1	},
1311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtul",   "s,t,p",	0,    (int) M_BGTUL,	INSN_MACRO,		0,		I2|T3	},
1312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtul",   "s,I,p",	0,    (int) M_BGTUL_I,	INSN_MACRO,		0,		I2|T3	},
1313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtz",    "s,p",	0x1c000000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bgtzl",   "s,p",	0x5c000000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ble",     "s,t,p",	0,    (int) M_BLE,	INSN_MACRO,		0,		I1	},
1316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ble",     "s,I,p",	0,    (int) M_BLE_I,	INSN_MACRO,		0,		I1	},
1317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blel",    "s,t,p",	0,    (int) M_BLEL,	INSN_MACRO,		0,		I2|T3	},
1318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blel",    "s,I,p",	0,    (int) M_BLEL_I,	INSN_MACRO,		0,		I2|T3	},
1319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleu",    "s,t,p",	0,    (int) M_BLEU,	INSN_MACRO,		0,		I1	},
1320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleu",    "s,I,p",	0,    (int) M_BLEU_I,	INSN_MACRO,		0,		I1	},
1321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleul",   "s,t,p",	0,    (int) M_BLEUL,	INSN_MACRO,		0,		I2|T3	},
1322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bleul",   "s,I,p",	0,    (int) M_BLEUL_I,	INSN_MACRO,		0,		I2|T3	},
1323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blez",    "s,p",	0x18000000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blezl",   "s,p",	0x58000000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blt",     "s,t,p",	0,    (int) M_BLT,	INSN_MACRO,		0,		I1	},
1326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"blt",     "s,I,p",	0,    (int) M_BLT_I,	INSN_MACRO,		0,		I1	},
1327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltl",    "s,t,p",	0,    (int) M_BLTL,	INSN_MACRO,		0,		I2|T3	},
1328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltl",    "s,I,p",	0,    (int) M_BLTL_I,	INSN_MACRO,		0,		I2|T3	},
1329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltu",    "s,t,p",	0,    (int) M_BLTU,	INSN_MACRO,		0,		I1	},
1330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltu",    "s,I,p",	0,    (int) M_BLTU_I,	INSN_MACRO,		0,		I1	},
1331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltul",   "s,t,p",	0,    (int) M_BLTUL,	INSN_MACRO,		0,		I2|T3	},
1332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltul",   "s,I,p",	0,    (int) M_BLTUL_I,	INSN_MACRO,		0,		I2|T3	},
1333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltz",    "s,p",	0x04000000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzl",   "s,p",	0x04020000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzal",  "s,p",	0x04100000, 0xfc1f0000,	CBD|RD_s|WR_31,		0,		I1	},
1336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bltzall", "s,p",	0x04120000, 0xfc1f0000,	CBL|RD_s|WR_31,		0,		I2|T3	},
1337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnez",    "s,p",	0x14000000, 0xfc1f0000,	CBD|RD_s,		0,		I1	},
1338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnezl",   "s,p",	0x54000000, 0xfc1f0000,	CBL|RD_s,		0,		I2|T3	},
1339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bne",     "s,t,p",	0x14000000, 0xfc000000,	CBD|RD_s|RD_t,		0,		I1	},
1340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bne",     "s,I,p",	0,    (int) M_BNE_I,	INSN_MACRO,		0,		I1	},
1341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnel",    "s,t,p",	0x54000000, 0xfc000000,	CBL|RD_s|RD_t, 		0,		I2|T3	},
1342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bnel",    "s,I,p",	0,    (int) M_BNEL_I,	INSN_MACRO,		0,		I2|T3	},
1343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break",   "",		0x0000000d, 0xffffffff,	TRAP,			0,		I1	},
1344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break",   "c",	0x0000000d, 0xfc00ffff,	TRAP,			0,		I1	},
1345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"break",   "c,q",	0x0000000d, 0xfc00003f,	TRAP,			0,		I1	},
1346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.d",   "S,T",	0x46200030, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.d",   "M,S,T",    0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.s",   "S,T",      0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.s",   "M,S,T",    0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.ps",  "S,T",	0x46c00030, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.f.ps",  "M,S,T",	0x46c00030, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.d",  "S,T",	0x46200031, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.d",  "M,S,T",    0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.s",  "S,T",      0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.s",  "M,S,T",    0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.ps", "S,T",	0x46c00031, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.un.ps", "M,S,T",	0x46c00031, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.d",  "S,T",	0x46200032, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.d",  "M,S,T",    0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.s",  "S,T",      0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.s",  "M,S,T",    0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "Y,Q",	0x78000001, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,T",	0x4ac00001, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,T[e]",	0x48000001, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ob", "S,k",	0x4bc00001, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ps", "S,T",	0x46c00032, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.ps", "M,S,T",	0x46c00032, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.eq.qh", "Y,Q",	0x78200001, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX	},
1369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.d", "S,T",	0x46200033, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.d", "M,S,T",    0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.s", "S,T",      0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.s", "M,S,T",    0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.ps","S,T",	0x46c00033, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ueq.ps","M,S,T",	0x46c00033, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.d", "S,T",      0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D,   0,		I1      },
1376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.d", "M,S,T",    0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.s", "S,T",	0x46000034, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_S,	0,		I1	},
1378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.s", "M,S,T",    0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.ps","S,T",	0x46c00034, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.olt.ps","M,S,T",	0x46c00034, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.d", "S,T",	0x46200035, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.d", "M,S,T",    0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.s", "S,T",      0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.s", "M,S,T",    0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.ps","S,T",	0x46c00035, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ult.ps","M,S,T",	0x46c00035, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.d", "S,T",      0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D,   0,		I1      },
1388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.d", "M,S,T",    0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.s", "S,T",      0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.s", "M,S,T",    0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.ps","S,T",	0x46c00036, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ole.ps","M,S,T",	0x46c00036, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.d", "S,T",	0x46200037, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.d", "M,S,T",    0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.s", "S,T",      0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.s", "M,S,T",    0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.ps","S,T",	0x46c00037, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ule.ps","M,S,T",	0x46c00037, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.d",  "S,T",	0x46200038, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.d",  "M,S,T",    0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.s",  "S,T",      0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.s",  "M,S,T",    0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.ps", "S,T",	0x46c00038, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.sf.ps", "M,S,T",	0x46c00038, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.d","S,T",	0x46200039, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.d","M,S,T",    0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.s","S,T",      0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.s","M,S,T",    0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.ps","S,T",	0x46c00039, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngle.ps","M,S,T",	0x46c00039, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.d", "S,T",	0x4620003a, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.d", "M,S,T",    0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.s", "S,T",      0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.s", "M,S,T",    0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.ps","S,T",	0x46c0003a, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.seq.ps","M,S,T",	0x46c0003a, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.d", "S,T",	0x4620003b, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.d", "M,S,T",    0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.s", "S,T",      0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.s", "M,S,T",    0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.ps","S,T",	0x46c0003b, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngl.ps","M,S,T",	0x46c0003b, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.d",  "S,T",	0x4620003c, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.d",  "M,S,T",    0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.s",  "S,T",	0x4600003c, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_S,	0,		I1	},
1426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.s",  "M,S,T",    0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "Y,Q",	0x78000004, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,T",	0x4ac00004, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,T[e]",	0x48000004, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ob", "S,k",	0x4bc00004, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ps", "S,T",	0x46c0003c, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.ps", "M,S,T",	0x46c0003c, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.lt.qh", "Y,Q",	0x78200004, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX	},
1434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.d", "S,T",	0x4620003d, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.d", "M,S,T",    0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.s", "S,T",      0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.s", "M,S,T",    0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.ps","S,T",	0x46c0003d, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.nge.ps","M,S,T",	0x46c0003d, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.d",  "S,T",	0x4620003e, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.d",  "M,S,T",    0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.s",  "S,T",	0x4600003e, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_S,	0,		I1	},
1443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.s",  "M,S,T",    0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "Y,Q",	0x78000005, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,T",	0x4ac00005, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,T[e]",	0x48000005, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ob", "S,k",	0x4bc00005, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ps", "S,T",	0x46c0003e, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.ps", "M,S,T",	0x46c0003e, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.le.qh", "Y,Q",	0x78200005, 0xfc2007ff,	WR_CC|RD_S|RD_T|FP_D,	0,		MX	},
1451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.d", "S,T",	0x4620003f, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I1	},
1452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.d", "M,S,T",    0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D,   0,		I4|I32	},
1453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.s", "S,T",      0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S,   0,		I1      },
1454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.s", "M,S,T",    0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S,   0,		I4|I32	},
1455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.ps","S,T",	0x46c0003f, 0xffe007ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c.ngt.ps","M,S,T",	0x46c0003f, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		I5|I33	},
1457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.d",  "M,S,T",	0x46200072, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.ps", "M,S,T",	0x46c00072, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.eq.s",  "M,S,T",	0x46000072, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.d",   "M,S,T",	0x46200070, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.ps",  "M,S,T",	0x46c00070, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.f.s",   "M,S,T",	0x46000070, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.d",  "M,S,T",	0x4620007e, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.ps", "M,S,T",	0x46c0007e, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.le.s",  "M,S,T",	0x4600007e, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.d",  "M,S,T",	0x4620007c, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.ps", "M,S,T",	0x46c0007c, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.lt.s",  "M,S,T",	0x4600007c, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.d", "M,S,T",	0x4620007d, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.ps","M,S,T",	0x46c0007d, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.nge.s", "M,S,T",	0x4600007d, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.d", "M,S,T",	0x4620007b, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.ps","M,S,T",	0x46c0007b, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngl.s", "M,S,T",	0x4600007b, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.d","M,S,T",	0x46200079, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.ps","M,S,T",0x46c00079, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngle.s","M,S,T",	0x46000079, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.d", "M,S,T",	0x4620007f, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.ps","M,S,T",	0x46c0007f, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ngt.s", "M,S,T",	0x4600007f, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.d", "M,S,T",	0x46200076, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.ps","M,S,T",	0x46c00076, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ole.s", "M,S,T",	0x46000076, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.d", "M,S,T",	0x46200074, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.ps","M,S,T",	0x46c00074, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.olt.s", "M,S,T",	0x46000074, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.d", "M,S,T",	0x4620007a, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.ps","M,S,T",	0x46c0007a, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.seq.s", "M,S,T",	0x4600007a, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.d",  "M,S,T",	0x46200078, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.ps", "M,S,T",	0x46c00078, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.sf.s",  "M,S,T",	0x46000078, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.d", "M,S,T",	0x46200073, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.ps","M,S,T",	0x46c00073, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ueq.s", "M,S,T",	0x46000073, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.d", "M,S,T",	0x46200077, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.ps","M,S,T",	0x46c00077, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ule.s", "M,S,T",	0x46000077, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.d", "M,S,T",	0x46200075, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.ps","M,S,T",	0x46c00075, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.ult.s", "M,S,T",	0x46000075, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.d",  "M,S,T",	0x46200071, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.ps", "M,S,T",	0x46c00071, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_D,	0,		M3D	},
1504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cabs.un.s",  "M,S,T",	0x46000071, 0xffe000ff,	RD_S|RD_T|WR_CC|FP_S,	0,		M3D	},
1505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* CW4010 instructions which are aliases for the cache instruction.  */
1506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushi",  "",		0xbc010000, 0xffffffff, 0,			0,		L1	},
1507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushd",  "",		0xbc020000, 0xffffffff, 0, 			0,		L1	},
1508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flushid", "",		0xbc030000, 0xffffffff, 0, 			0,		L1	},
1509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wb", 	    "o(b)",	0xbc040000, 0xfc1f0000, SM|RD_b,		0,		L1	},
1510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cache",   "k,o(b)",   0xbc000000, 0xfc000000, RD_b,           	0,		I3|I32|T3},
1511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cache",   "k,A(b)",	0,    (int) M_CACHE_AB, INSN_MACRO,		0,		I3|I32|T3},
1512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.l.d", "D,S",	0x4620000a, 0xffff003f, WR_D|RD_S|FP_D,		0,		I3|I33	},
1513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.l.s", "D,S",	0x4600000a, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
1514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.w.d", "D,S",	0x4620000e, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I2	},
1515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ceil.w.s", "D,S",	0x4600000e, 0xffff003f, WR_D|RD_S|FP_S,		0,		I2	},
1516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc0",    "t,G",	0x40400000, 0xffe007ff,	LCD|WR_t|RD_C0,		0,		I1	},
1517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc1",    "t,G",	0x44400000, 0xffe007ff,	LCD|WR_t|RD_C1|FP_S,	0,		I1	},
1518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc1",    "t,S",	0x44400000, 0xffe007ff,	LCD|WR_t|RD_C1|FP_S,	0,		I1	},
1519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* cfc2 is at the bottom of the table.  */
1520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* cfc3 is at the bottom of the table.  */
1521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc1",   "d,E",	0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0,		MT32	},
1522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc1",   "d,T",	0x41000023, 0xffe007ff, TRAP|LCD|WR_d|RD_C1|FP_S, 0,		MT32	},
1523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cftc2",   "d,E",	0x41000025, 0xffe007ff, TRAP|LCD|WR_d|RD_C2,	0,		MT32	},
1524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"clo",     "U,s",      0x70000021, 0xfc0007ff, WR_d|WR_t|RD_s, 	0,		I32|N55 },
1525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"clz",     "U,s",      0x70000020, 0xfc0007ff, WR_d|WR_t|RD_s, 	0,		I32|N55 },
1526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc0",    "t,G",	0x40c00000, 0xffe007ff,	COD|RD_t|WR_CC,		0,		I1	},
1527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc1",    "t,G",	0x44c00000, 0xffe007ff,	COD|RD_t|WR_CC|FP_S,	0,		I1	},
1528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc1",    "t,S",	0x44c00000, 0xffe007ff,	COD|RD_t|WR_CC|FP_S,	0,		I1	},
1529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ctc2 is at the bottom of the table.  */
1530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ctc3 is at the bottom of the table.  */
1531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc1",   "t,g",	0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0,		MT32	},
1532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc1",   "t,S",	0x41800023, 0xffe007ff, TRAP|COD|RD_t|WR_CC|FP_S, 0,		MT32	},
1533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cttc2",   "t,g",	0x41800025, 0xffe007ff, TRAP|COD|RD_t|WR_CC,	0,		MT32	},
1534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.l", "D,S",	0x46a00021, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I3|I33	},
1535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.s", "D,S",	0x46000021, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I1	},
1536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.d.w", "D,S",	0x46800021, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I1	},
1537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.l.d", "D,S",	0x46200025, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I3|I33	},
1538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.l.s", "D,S",	0x46000025, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
1539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.l", "D,S",	0x46a00020, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
1540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.d", "D,S",	0x46200020, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I1	},
1541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.w", "D,S",	0x46800020, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I1	},
1542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.pl","D,S",	0x46c00028, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I5|I33	},
1543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.s.pu","D,S",	0x46c00020, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I5|I33	},
1544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.w.d", "D,S",	0x46200024, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I1	},
1545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.w.s", "D,S",	0x46000024, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I1	},
1546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.ps.pw", "D,S",	0x46800026, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		M3D	},
1547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.ps.s","D,V,T",	0x46000026, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S|FP_D, 0,		I5|I33	},
1548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cvt.pw.ps", "D,S",	0x46c00024, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		M3D	},
1549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dabs",    "d,v",	0,    (int) M_DABS,	INSN_MACRO,		0,		I3	},
1550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dadd",    "d,v,t",	0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		I3	},
1551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dadd",    "t,r,I",	0,    (int) M_DADD_I,	INSN_MACRO,		0,		I3	},
1552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddi",   "t,r,j",	0x60000000, 0xfc000000, WR_t|RD_s,		0,		I3	},
1553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddiu",  "t,r,j",	0x64000000, 0xfc000000, WR_t|RD_s,		0,		I3	},
1554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddu",   "d,v,t",	0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		I3	},
1555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"daddu",   "t,r,I",	0,    (int) M_DADDU_I,	INSN_MACRO,		0,		I3	},
1556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dbreak",  "",		0x7000003f, 0xffffffff,	0,			0,		N5	},
1557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dclo",    "U,s",      0x70000025, 0xfc0007ff, RD_s|WR_d|WR_t, 	0,		I64|N55 },
1558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dclz",    "U,s",      0x70000024, 0xfc0007ff, RD_s|WR_d|WR_t, 	0,		I64|N55 },
1559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dctr and dctw are used on the r5000.  */
1560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dctr",    "o(b)",	0xbc050000, 0xfc1f0000, RD_b,			0,		I3	},
1561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dctw",    "o(b)",	0xbc090000, 0xfc1f0000, RD_b,			0,		I3	},
1562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"deret",   "",         0x4200001f, 0xffffffff, 0, 			0,		I32|G2	},
1563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dext",    "t,r,I,+I",	0,    (int) M_DEXT,	INSN_MACRO,		0,		I65	},
1564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dext",    "t,r,+A,+C", 0x7c000003, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextm",   "t,r,+A,+G", 0x7c000001, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextu",   "t,r,+E,+H", 0x7c000002, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For ddiv, see the comments about div.  */
1568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv",    "z,s,t",    0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3      },
1569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv",    "d,v,t",	0,    (int) M_DDIV_3,	INSN_MACRO,		0,		I3	},
1570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddiv",    "d,v,I",	0,    (int) M_DDIV_3I,	INSN_MACRO,		0,		I3	},
1571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For ddivu, see the comments about div.  */
1572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu",   "z,s,t",    0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3      },
1573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu",   "d,v,t",	0,    (int) M_DDIVU_3,	INSN_MACRO,		0,		I3	},
1574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ddivu",   "d,v,I",	0,    (int) M_DDIVU_3I,	INSN_MACRO,		0,		I3	},
1575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"di",      "",		0x41606000, 0xffffffff,	WR_t|WR_C0,		0,		I33	},
1576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"di",      "t",	0x41606000, 0xffe0ffff,	WR_t|WR_C0,		0,		I33	},
1577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dins",    "t,r,I,+I",	0,    (int) M_DINS,	INSN_MACRO,		0,		I65	},
1578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dins",    "t,r,+A,+B", 0x7c000007, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsm",   "t,r,+A,+F", 0x7c000005, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsu",   "t,r,+E,+F", 0x7c000006, 0xfc00003f, WR_t|RD_s,    		0,		I65	},
1581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The MIPS assembler treats the div opcode with two operands as
1582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   though the first operand appeared twice (the first operand is both
1583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   a source and a destination).  To get the div machine instruction,
1584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   you must use an explicit destination of $0.  */
1585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div",     "z,s,t",    0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I1      },
1586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div",     "z,t",      0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HILO,      0,		I1      },
1587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div",     "d,v,t",	0,    (int) M_DIV_3,	INSN_MACRO,		0,		I1	},
1588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div",     "d,v,I",	0,    (int) M_DIV_3I,	INSN_MACRO,		0,		I1	},
1589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.d",   "D,V,T",	0x46200003, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I1	},
1590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.s",   "D,V,T",	0x46000003, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		I1	},
1591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"div.ps",  "D,V,T",	0x46c00003, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		SB1	},
1592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* For divu, see the comments about div.  */
1593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu",    "z,s,t",    0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I1      },
1594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu",    "z,t",      0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HILO,      0,		I1      },
1595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu",    "d,v,t",	0,    (int) M_DIVU_3,	INSN_MACRO,		0,		I1	},
1596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"divu",    "d,v,I",	0,    (int) M_DIVU_3I,	INSN_MACRO,		0,		I1	},
1597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dla",     "t,A(b)",	0,    (int) M_DLA_AB,	INSN_MACRO,		0,		I3	},
1598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dlca",    "t,A(b)",	0,    (int) M_DLCA_AB,	INSN_MACRO,		0,		I3	},
1599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli",     "t,j",      0x24000000, 0xffe00000, WR_t,			0,		I3	}, /* addiu */
1600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli",	    "t,i",	0x34000000, 0xffe00000, WR_t,			0,		I3	}, /* ori */
1601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dli",     "t,I",	0,    (int) M_DLI,	INSN_MACRO,		0,		I3	},
1602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacc",   "d,s,t",	0x00000029, 0xfc0007ff,	RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchi", "d,s,t",	0x00000229, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchis", "d,s,t",	0x00000629, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchiu", "d,s,t",	0x00000269, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmacchius", "d,s,t",	0x00000669, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccs",  "d,s,t",	0x00000429, 0xfc0007ff,	RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccu",  "d,s,t",	0x00000069, 0xfc0007ff,	RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaccus", "d,s,t",	0x00000469, 0xfc0007ff,	RD_s|RD_t|WR_LO|WR_d,	0,		N412	},
1610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmadd16", "s,t",      0x00000029, 0xfc00ffff, RD_s|RD_t|MOD_LO,       0,		N411    },
1611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0",   "t,G",	0x40200000, 0xffe007ff, LCD|WR_t|RD_C0,		0,		I3	},
1612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0",   "t,+D",     0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I64     },
1613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc0",   "t,G,H",    0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I64     },
1614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmt",     "",		0x41600bc1, 0xffffffff, TRAP,			0,		MT32	},
1615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmt",     "t",	0x41600bc1, 0xffe0ffff, TRAP|WR_t,		0,		MT32	},
1616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0",   "t,G",	0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC,	0,		I3	},
1617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0",   "t,+D",     0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC,   0,		I64     },
1618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc0",   "t,G,H",    0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC,   0,		I64     },
1619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc1",   "t,S",	0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D,	0,		I3	},
1620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc1",   "t,G",      0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_D,     0,		I3      },
1621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc1",   "t,S",	0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D,	0,		I3	},
1622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc1",   "t,G",      0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_D,     0,		I3      },
1623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmfc2 is at the bottom of the table.  */
1624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmtc2 is at the bottom of the table.  */
1625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmfc3 is at the bottom of the table.  */
1626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* dmtc3 is at the bottom of the table.  */
1627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmul",    "d,v,t",	0,    (int) M_DMUL,	INSN_MACRO,		0,		I3	},
1628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmul",    "d,v,I",	0,    (int) M_DMUL_I,	INSN_MACRO,		0,		I3	},
1629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulo",   "d,v,t",	0,    (int) M_DMULO,	INSN_MACRO,		0,		I3	},
1630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulo",   "d,v,I",	0,    (int) M_DMULO_I,	INSN_MACRO,		0,		I3	},
1631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulou",  "d,v,t",	0,    (int) M_DMULOU,	INSN_MACRO,		0,		I3	},
1632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmulou",  "d,v,I",	0,    (int) M_DMULOU_I,	INSN_MACRO,		0,		I3	},
1633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmult",   "s,t",      0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3	},
1634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmultu",  "s,t",      0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3	},
1635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dneg",    "d,w",	0x0000002e, 0xffe007ff,	WR_d|RD_t,		0,		I3	}, /* dsub 0 */
1636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dnegu",   "d,w",	0x0000002f, 0xffe007ff,	WR_d|RD_t,		0,		I3	}, /* dsubu 0*/
1637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem",    "z,s,t",    0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3      },
1638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem",    "d,v,t",	3,    (int) M_DREM_3,	INSN_MACRO,		0,		I3	},
1639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drem",    "d,v,I",	3,    (int) M_DREM_3I,	INSN_MACRO,		0,		I3	},
1640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu",   "z,s,t",    0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I3      },
1641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu",   "d,v,t",	3,    (int) M_DREMU_3,	INSN_MACRO,		0,		I3	},
1642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dremu",   "d,v,I",	3,    (int) M_DREMU_3I,	INSN_MACRO,		0,		I3	},
1643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dret",    "",		0x7000003e, 0xffffffff,	0,			0,		N5	},
1644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drol",    "d,v,t",	0,    (int) M_DROL,	INSN_MACRO,		0,		I3	},
1645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drol",    "d,v,I",	0,    (int) M_DROL_I,	INSN_MACRO,		0,		I3	},
1646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror",    "d,v,t",	0,    (int) M_DROR,	INSN_MACRO,		0,		I3	},
1647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror",    "d,v,I",	0,    (int) M_DROR_I,	INSN_MACRO,		0,		I3	},
1648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror",    "d,w,<",	0x0020003a, 0xffe0003f,	WR_d|RD_t,		0,		N5|I65	},
1649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drorv",   "d,t,s",	0x00000056, 0xfc0007ff,	RD_t|RD_s|WR_d,		0,		N5|I65	},
1650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dror32",  "d,w,<",	0x0020003e, 0xffe0003f,	WR_d|RD_t,		0,		N5|I65	},
1651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotl",   "d,v,t",	0,    (int) M_DROL,	INSN_MACRO,		0,		I65	},
1652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotl",   "d,v,I",	0,    (int) M_DROL_I,	INSN_MACRO,		0,		I65	},
1653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr",   "d,v,t",	0,    (int) M_DROR,	INSN_MACRO,		0,		I65	},
1654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr",   "d,v,I",	0,    (int) M_DROR_I,	INSN_MACRO,		0,		I65	},
1655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotrv",  "d,t,s",	0x00000056, 0xfc0007ff,	RD_t|RD_s|WR_d,		0,		I65	},
1656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"drotr32", "d,w,<",	0x0020003e, 0xffe0003f,	WR_d|RD_t,		0,		I65	},
1657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsbh",    "d,w",	0x7c0000a4, 0xffe007ff,	WR_d|RD_t,		0,		I65	},
1658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshd",    "d,w",	0x7c000164, 0xffe007ff,	WR_d|RD_t,		0,		I65	},
1659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsllv",   "d,t,s",	0x00000014, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	},
1660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll32",  "d,w,<",	0x0000003c, 0xffe0003f, WR_d|RD_t,		0,		I3	},
1661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll",    "d,w,s",	0x00000014, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	}, /* dsllv */
1662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll",    "d,w,>",	0x0000003c, 0xffe0003f, WR_d|RD_t,		0,		I3	}, /* dsll32 */
1663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsll",    "d,w,<",	0x00000038, 0xffe0003f,	WR_d|RD_t,		0,		I3	},
1664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrav",   "d,t,s",	0x00000017, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	},
1665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra32",  "d,w,<",	0x0000003f, 0xffe0003f, WR_d|RD_t,		0,		I3	},
1666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra",    "d,w,s",	0x00000017, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	}, /* dsrav */
1667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra",    "d,w,>",	0x0000003f, 0xffe0003f, WR_d|RD_t,		0,		I3	}, /* dsra32 */
1668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsra",    "d,w,<",	0x0000003b, 0xffe0003f,	WR_d|RD_t,		0,		I3	},
1669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrlv",   "d,t,s",	0x00000016, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	},
1670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl32",  "d,w,<",	0x0000003e, 0xffe0003f, WR_d|RD_t,		0,		I3	},
1671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl",    "d,w,s",	0x00000016, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I3	}, /* dsrlv */
1672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl",    "d,w,>",	0x0000003e, 0xffe0003f, WR_d|RD_t,		0,		I3	}, /* dsrl32 */
1673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsrl",    "d,w,<",	0x0000003a, 0xffe0003f,	WR_d|RD_t,		0,		I3	},
1674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsub",    "d,v,t",	0x0000002e, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I3	},
1675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsub",    "d,v,I",	0,    (int) M_DSUB_I,	INSN_MACRO,		0,		I3	},
1676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsubu",   "d,v,t",	0x0000002f, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I3	},
1677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dsubu",   "d,v,I",	0,    (int) M_DSUBU_I,	INSN_MACRO,		0,		I3	},
1678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dvpe",    "",		0x41600001, 0xffffffff, TRAP,			0,		MT32	},
1679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dvpe",    "t",	0x41600001, 0xffe0ffff, TRAP|WR_t,		0,		MT32	},
1680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ei",      "",		0x41606020, 0xffffffff,	WR_t|WR_C0,		0,		I33	},
1681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ei",      "t",	0x41606020, 0xffe0ffff,	WR_t|WR_C0,		0,		I33	},
1682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"emt",     "",		0x41600be1, 0xffffffff, TRAP,			0,		MT32	},
1683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"emt",     "t",	0x41600be1, 0xffe0ffff, TRAP|WR_t,		0,		MT32	},
1684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"eret",    "",         0x42000018, 0xffffffff, 0,      		0,		I3|I32	},
1685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"evpe",    "",		0x41600021, 0xffffffff, TRAP,			0,		MT32	},
1686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"evpe",    "t",	0x41600021, 0xffe0ffff, TRAP|WR_t,		0,		MT32	},
1687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ext",     "t,r,+A,+C", 0x7c000000, 0xfc00003f, WR_t|RD_s,    		0,		I33	},
1688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.l.d", "D,S",	0x4620000b, 0xffff003f, WR_D|RD_S|FP_D,		0,		I3|I33	},
1689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.l.s", "D,S",	0x4600000b, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
1690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.w.d", "D,S",	0x4620000f, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I2	},
1691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"floor.w.s", "D,S",	0x4600000f, 0xffff003f, WR_D|RD_S|FP_S,		0,		I2	},
1692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"hibernate","",        0x42000023, 0xffffffff,	0, 			0,		V1	},
1693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ins",     "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s,    		0,		I33	},
1694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jr",      "s",	0x00000008, 0xfc1fffff,	UBD|RD_s,		0,		I1	},
1695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* jr.hb is officially MIPS{32,64}R2, but it works on R1 as jr with
1696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   the same hazard barrier effect.  */
1697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jr.hb",   "s",	0x00000408, 0xfc1fffff,	UBD|RD_s,		0,		I32	},
1698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j",       "s",	0x00000008, 0xfc1fffff,	UBD|RD_s,		0,		I1	}, /* jr */
1699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SVR4 PIC code requires special handling for j, so it must be a
1700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   macro.  */
1701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j",	    "a",	0,     (int) M_J_A,	INSN_MACRO,		0,		I1	},
1702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This form of j is used by the disassembler and internally by the
1703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   assembler, but will never match user input (because the line above
1704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   will match first).  */
1705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"j",       "a",	0x08000000, 0xfc000000,	UBD,			0,		I1	},
1706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr",    "s",	0x0000f809, 0xfc1fffff,	UBD|RD_s|WR_d,		0,		I1	},
1707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr",    "d,s",	0x00000009, 0xfc1f07ff,	UBD|RD_s|WR_d,		0,		I1	},
1708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* jalr.hb is officially MIPS{32,64}R2, but it works on R1 as jalr
1709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   with the same hazard barrier effect.  */
1710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr.hb", "s",	0x0000fc09, 0xfc1fffff,	UBD|RD_s|WR_d,		0,		I32	},
1711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalr.hb", "d,s",	0x00000409, 0xfc1f07ff,	UBD|RD_s|WR_d,		0,		I32	},
1712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SVR4 PIC code requires special handling for jal, so it must be a
1713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   macro.  */
1714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal",     "d,s",	0,     (int) M_JAL_2,	INSN_MACRO,		0,		I1	},
1715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal",     "s",	0,     (int) M_JAL_1,	INSN_MACRO,		0,		I1	},
1716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal",     "a",	0,     (int) M_JAL_A,	INSN_MACRO,		0,		I1	},
1717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* This form of jal is used by the disassembler and internally by the
1718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   assembler, but will never match user input (because the line above
1719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   will match first).  */
1720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jal",     "a",	0x0c000000, 0xfc000000,	UBD|WR_31,		0,		I1	},
1721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"jalx",    "a",	0x74000000, 0xfc000000, UBD|WR_31,		0,		I16     },
1722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"la",      "t,A(b)",	0,    (int) M_LA_AB,	INSN_MACRO,		0,		I1	},
1723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lb",      "t,o(b)",	0x80000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lb",      "t,A(b)",	0,    (int) M_LB_AB,	INSN_MACRO,		0,		I1	},
1725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbu",     "t,o(b)",	0x90000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbu",     "t,A(b)",	0,    (int) M_LBU_AB,	INSN_MACRO,		0,		I1	},
1727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lca",     "t,A(b)",	0,    (int) M_LCA_AB,	INSN_MACRO,		0,		I1	},
1728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld",	    "t,o(b)",   0xdc000000, 0xfc000000, WR_t|RD_b,		0,		I3	},
1729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld",      "t,o(b)",	0,    (int) M_LD_OB,	INSN_MACRO,		0,		I1	},
1730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ld",      "t,A(b)",	0,    (int) M_LD_AB,	INSN_MACRO,		0,		I1	},
1731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1",    "T,o(b)",	0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D,	0,		I2	},
1732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1",    "E,o(b)",	0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D,	0,		I2	},
1733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1",    "T,A(b)",	0,    (int) M_LDC1_AB,	INSN_MACRO,		0,		I2	},
1734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc1",    "E,A(b)",	0,    (int) M_LDC1_AB,	INSN_MACRO,		0,		I2	},
1735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d",     "T,o(b)",	0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D,	0,		I2	}, /* ldc1 */
1736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d",     "T,o(b)",	0,    (int) M_L_DOB,	INSN_MACRO,		0,		I1	},
1737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.d",     "T,A(b)",	0,    (int) M_L_DAB,	INSN_MACRO,		0,		I1	},
1738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc2",    "E,o(b)",	0xd8000000, 0xfc000000, CLD|RD_b|WR_CC,		0,		I2	},
1739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc2",    "E,A(b)",	0,    (int) M_LDC2_AB,	INSN_MACRO,		0,		I2	},
1740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc3",    "E,o(b)",	0xdc000000, 0xfc000000, CLD|RD_b|WR_CC,		0,		I2	},
1741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldc3",    "E,A(b)",	0,    (int) M_LDC3_AB,	INSN_MACRO,		0,		I2	},
1742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldl",	    "t,o(b)",	0x68000000, 0xfc000000, LDD|WR_t|RD_b,		0,		I3	},
1743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldl",	    "t,A(b)",	0,    (int) M_LDL_AB,	INSN_MACRO,		0,		I3	},
1744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldr",	    "t,o(b)",	0x6c000000, 0xfc000000, LDD|WR_t|RD_b,		0,		I3	},
1745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldr",     "t,A(b)",	0,    (int) M_LDR_AB,	INSN_MACRO,		0,		I3	},
1746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldxc1",   "D,t(b)",	0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0,		I4|I33	},
1747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lh",      "t,o(b)",	0x84000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lh",      "t,A(b)",	0,    (int) M_LH_AB,	INSN_MACRO,		0,		I1	},
1749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhu",     "t,o(b)",	0x94000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhu",     "t,A(b)",	0,    (int) M_LHU_AB,	INSN_MACRO,		0,		I1	},
1751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* li is at the start of the table.  */
1752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.d",    "t,F",	0,    (int) M_LI_D,	INSN_MACRO,		0,		I1	},
1753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.d",    "T,L",	0,    (int) M_LI_DD,	INSN_MACRO,		0,		I1	},
1754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.s",    "t,f",	0,    (int) M_LI_S,	INSN_MACRO,		0,		I1	},
1755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"li.s",    "T,l",	0,    (int) M_LI_SS,	INSN_MACRO,		0,		I1	},
1756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ll",	    "t,o(b)",	0xc0000000, 0xfc000000, LDD|RD_b|WR_t,		0,		I2	},
1757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ll",	    "t,A(b)",	0,    (int) M_LL_AB,	INSN_MACRO,		0,		I2	},
1758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lld",	    "t,o(b)",	0xd0000000, 0xfc000000, LDD|RD_b|WR_t,		0,		I3	},
1759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lld",     "t,A(b)",	0,    (int) M_LLD_AB,	INSN_MACRO,		0,		I3	},
1760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lui",     "t,u",	0x3c000000, 0xffe00000,	WR_t,			0,		I1	},
1761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"luxc1",   "D,t(b)",	0x4c000005, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0,		I5|I33|N55},
1762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lw",      "t,o(b)",	0x8c000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lw",      "t,A(b)",	0,    (int) M_LW_AB,	INSN_MACRO,		0,		I1	},
1764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc0",    "E,o(b)",	0xc0000000, 0xfc000000,	CLD|RD_b|WR_CC,		0,		I1	},
1765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc0",    "E,A(b)",	0,    (int) M_LWC0_AB,	INSN_MACRO,		0,		I1	},
1766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1",    "T,o(b)",	0xc4000000, 0xfc000000,	CLD|RD_b|WR_T|FP_S,	0,		I1	},
1767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1",    "E,o(b)",	0xc4000000, 0xfc000000,	CLD|RD_b|WR_T|FP_S,	0,		I1	},
1768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1",    "T,A(b)",	0,    (int) M_LWC1_AB,	INSN_MACRO,		0,		I1	},
1769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc1",    "E,A(b)",	0,    (int) M_LWC1_AB,	INSN_MACRO,		0,		I1	},
1770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.s",     "T,o(b)",	0xc4000000, 0xfc000000,	CLD|RD_b|WR_T|FP_S,	0,		I1	}, /* lwc1 */
1771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"l.s",     "T,A(b)",	0,    (int) M_LWC1_AB,	INSN_MACRO,		0,		I1	},
1772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc2",    "E,o(b)",	0xc8000000, 0xfc000000,	CLD|RD_b|WR_CC,		0,		I1	},
1773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc2",    "E,A(b)",	0,    (int) M_LWC2_AB,	INSN_MACRO,		0,		I1	},
1774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc3",    "E,o(b)",	0xcc000000, 0xfc000000,	CLD|RD_b|WR_CC,		0,		I1	},
1775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwc3",    "E,A(b)",	0,    (int) M_LWC3_AB,	INSN_MACRO,		0,		I1	},
1776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwl",     "t,o(b)",	0x88000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwl",     "t,A(b)",	0,    (int) M_LWL_AB,	INSN_MACRO,		0,		I1	},
1778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lcache",  "t,o(b)",	0x88000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I2	}, /* same */
1779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lcache",  "t,A(b)",	0,    (int) M_LWL_AB,	INSN_MACRO,		0,		I2	}, /* as lwl */
1780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwr",     "t,o(b)",	0x98000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I1	},
1781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwr",     "t,A(b)",	0,    (int) M_LWR_AB,	INSN_MACRO,		0,		I1	},
1782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flush",   "t,o(b)",	0x98000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I2	}, /* same */
1783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"flush",   "t,A(b)",	0,    (int) M_LWR_AB,	INSN_MACRO,		0,		I2	}, /* as lwr */
1784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"fork",    "d,s,t",	0x7c000008, 0xfc0007ff, TRAP|WR_d|RD_s|RD_t,	0,		MT32	},
1785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwu",     "t,o(b)",	0x9c000000, 0xfc000000,	LDD|RD_b|WR_t,		0,		I3	},
1786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwu",     "t,A(b)",	0,    (int) M_LWU_AB,	INSN_MACRO,		0,		I3	},
1787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwxc1",   "D,t(b)",	0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|FP_D, 0,		I4|I33	},
1788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwxs",    "d,t(b)",	0x70000088, 0xfc0007ff,	LDD|RD_b|RD_t|WR_d,	0,		SMT	},
1789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macc",    "d,s,t",	0x00000028, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macc",    "d,s,t",	0x00000158, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,	0,		N5      },
1791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccs",   "d,s,t",	0x00000428, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchi",  "d,s,t",	0x00000228, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchi",  "d,s,t",	0x00000358, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5      },
1794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchis", "d,s,t",	0x00000628, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchiu", "d,s,t",	0x00000268, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchiu", "d,s,t",	0x00000359, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,	0,		N5      },
1797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"macchius","d,s,t",	0x00000668, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccu",   "d,s,t",	0x00000068, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccu",   "d,s,t",	0x00000159, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d,	0,		N5      },
1800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maccus",  "d,s,t",	0x00000468, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d, 0,		N412    },
1801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mad",     "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO,     0,		P3      },
1802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madu",    "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO,     0,		P3      },
1803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.d",  "D,R,S,T",	0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,    0,		I4|I33	},
1804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.s",  "D,R,S,T",	0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S,    0,		I4|I33	},
1805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd.ps", "D,R,S,T",	0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D,    0,		I5|I33	},
1806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd",    "s,t",      0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO,           0,		L1	},
1807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          0,		I32|N55	},
1808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd",    "s,t",      0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      0,		G1	},
1809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd",    "7,s,t",	0x70000000, 0xfc00e7ff, MOD_a|RD_s|RD_t,             0,         D33	},
1810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd",    "d,s,t",    0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0,		G1	},
1811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddp",   "s,t",      0x70000441, 0xfc00ffff,	RD_s|RD_t|MOD_HILO,	     0,		SMT	},
1812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu",   "s,t",      0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO,           0,		L1	},
1813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO,          0,		I32|N55	},
1814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu",   "s,t",      0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M,      0,		G1	},
1815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu",   "7,s,t",	0x70000001, 0xfc00e7ff, MOD_a|RD_s|RD_t,             0,         D33	},
1816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maddu",   "d,s,t",    0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0,		G1	},
1817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"madd16",  "s,t",      0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO,	0,		N411    },
1818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob",  "X,Y,Q",	0x78000007, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob",  "D,S,T",	0x4ac00007, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob",  "D,S,T[e]",	0x48000007, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
1821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.ob",  "D,S,k",	0x4bc00007, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"max.qh",  "X,Y,Q",	0x78200007, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfpc",    "t,P",	0x4000c801, 0xffe0ffc1,	LCD|WR_t|RD_C0,		0,		M1|N5	},
1824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfps",    "t,P",	0x4000c800, 0xffe0ffc1,	LCD|WR_t|RD_C0,		0,		M1|N5	},
1825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftacx",  "d",	0x41020021, 0xffff07ff, TRAP|WR_d|RD_a,		0,		MT32	},
1826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftacx",  "d,*",	0x41020021, 0xfff307ff, TRAP|WR_d|RD_a,		0,		MT32	},
1827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0",   "d,+t",	0x41000000, 0xffe007ff, TRAP|LCD|WR_d|RD_C0,	0,		MT32	},
1828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0",   "d,+T",	0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0,	0,		MT32	},
1829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc0",   "d,E,H",	0x41000000, 0xffe007f8, TRAP|LCD|WR_d|RD_C0,	0,		MT32	},
1830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc1",   "d,T",	0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0,		MT32	},
1831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc1",   "d,E",	0x41000022, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_S, 0,		MT32	},
1832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftc2",   "d,E",	0x41000024, 0xffe007ff, TRAP|LCD|WR_d|RD_C2,	0,		MT32	},
1833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftdsp",  "d",	0x41100021, 0xffff07ff, TRAP|WR_d,		0,		MT32	},
1834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftgpr",  "d,t",	0x41000020, 0xffe007ff, TRAP|WR_d|RD_t,		0,		MT32	},
1835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc1",  "d,T",	0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0,		MT32	},
1836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc1",  "d,E",	0x41000032, 0xffe007ff, TRAP|LCD|WR_d|RD_T|FP_D, 0,		MT32	},
1837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthc2",  "d,E",	0x41000034, 0xffe007ff, TRAP|LCD|WR_d|RD_C2,	0,		MT32	},
1838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthi",   "d",	0x41010021, 0xffff07ff, TRAP|WR_d|RD_a,		0,		MT32	},
1839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfthi",   "d,*",	0x41010021, 0xfff307ff, TRAP|WR_d|RD_a,		0,		MT32	},
1840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftlo",   "d",	0x41000021, 0xffff07ff, TRAP|WR_d|RD_a,		0,		MT32	},
1841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftlo",   "d,*",	0x41000021, 0xfff307ff, TRAP|WR_d|RD_a,		0,		MT32	},
1842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mftr",    "d,t,!,H,$", 0x41000000, 0xffe007c8, TRAP|WR_d,		0,		MT32	},
1843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0",    "t,G",	0x40000000, 0xffe007ff,	LCD|WR_t|RD_C0,		0,		I1	},
1844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0",    "t,+D",     0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I32     },
1845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc0",    "t,G,H",    0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, 	0,		I32     },
1846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc1",    "t,S",	0x44000000, 0xffe007ff,	LCD|WR_t|RD_S|FP_S,	0,		I1	},
1847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc1",    "t,G",	0x44000000, 0xffe007ff,	LCD|WR_t|RD_S|FP_S,	0,		I1	},
1848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc1",   "t,S",	0x44600000, 0xffe007ff,	LCD|WR_t|RD_S|FP_D,	0,		I33	},
1849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc1",   "t,G",	0x44600000, 0xffe007ff,	LCD|WR_t|RD_S|FP_D,	0,		I33	},
1850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfc2 is at the bottom of the table.  */
1851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfhc2 is at the bottom of the table.  */
1852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mfc3 is at the bottom of the table.  */
1853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfdr",    "t,G",	0x7000003d, 0xffe007ff,	LCD|WR_t|RD_C0,		0,		N5      },
1854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhi",    "d",	0x00000010, 0xffff07ff,	WR_d|RD_HI,		0,		I1	},
1855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhi",    "d,9",	0x00000010, 0xff9f07ff, WR_d|RD_HI,		0,		D32	},
1856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflo",    "d",	0x00000012, 0xffff07ff,	WR_d|RD_LO,		0,		I1	},
1857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflo",    "d,9",	0x00000012, 0xff9f07ff, WR_d|RD_LO,		0,		D32	},
1858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mflhxu",  "d",	0x00000052, 0xffff07ff,	WR_d|MOD_HILO,		0,		SMT	},
1859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob",  "X,Y,Q",	0x78000006, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob",  "D,S,T",	0x4ac00006, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob",  "D,S,T[e]",	0x48000006, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
1862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.ob",  "D,S,k",	0x4bc00006, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"min.qh",  "X,Y,Q",	0x78200006, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.d",   "D,S",	0x46200006, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I1	},
1865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.s",   "D,S",	0x46000006, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I1	},
1866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mov.ps",  "D,S",	0x46c00006, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I5|I33	},
1867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf",    "d,s,N",    0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0,		I4|I32  },
1868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.d",  "D,S,N",    0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,   0,		I4|I32	},
1869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.l",  "D,S,N",	0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,	0,		MX|SB1	},
1870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.l",  "X,Y,N",	0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,	0,		MX|SB1	},
1871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.s",  "D,S,N",    0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S,   0,		I4|I32	},
1872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movf.ps", "D,S,N",	0x46c00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,	0,		I5|I33	},
1873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn",    "d,v,t",    0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, 	0,		I4|I32	},
1874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ffc",     "d,v",	0x0000000b, 0xfc1f07ff,	WR_d|RD_s,		0,		L1	},
1875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.d",  "D,S,t",    0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		I4|I32	},
1876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.l",  "D,S,t",    0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		MX|SB1	},
1877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.l",  "X,Y,t",    0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		MX|SB1	},
1878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.s",  "D,S,t",    0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|FP_S,    0,		I4|I32	},
1879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movn.ps", "D,S,t",    0x46c00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		I5|I33	},
1880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt",    "d,s,N",    0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_S|FP_D, 0,		I4|I32	},
1881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.d",  "D,S,N",    0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,   0,		I4|I32	},
1882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.l",  "D,S,N",    0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,   0,		MX|SB1	},
1883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.l",  "X,Y,N",    0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,   0,		MX|SB1	},
1884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.s",  "D,S,N",    0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S,   0,		I4|I32	},
1885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movt.ps", "D,S,N",	0x46c10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D,	0,		I5|I33	},
1886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz",    "d,v,t",    0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, 	0,		I4|I32	},
1887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ffs",     "d,v",	0x0000000a, 0xfc1f07ff,	WR_d|RD_s,		0,		L1	},
1888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.d",  "D,S,t",    0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		I4|I32	},
1889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.l",  "D,S,t",    0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		MX|SB1	},
1890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.l",  "X,Y,t",    0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		MX|SB1	},
1891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.s",  "D,S,t",    0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S,    0,		I4|I32	},
1892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"movz.ps", "D,S,t",    0x46c00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D,    0,		I5|I33	},
1893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msac",    "d,s,t",	0x000001d8, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msacu",   "d,s,t",	0x000001d9, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msachi",  "d,s,t",	0x000003d8, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msachiu", "d,s,t",	0x000003d9, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* move is at the top of the table.  */
1898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msgn.qh", "X,Y,Q",	0x78200000, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.d",  "D,R,S,T",	0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I4|I33	},
1900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.s",  "D,R,S,T",	0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0,		I4|I33	},
1901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub.ps", "D,R,S,T",	0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I5|I33	},
1902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub",    "s,t",      0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO,	0,		L1    	},
1903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub",    "s,t",      0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO,     0,		I32|N55 },
1904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msub",    "7,s,t",	0x70000004, 0xfc00e7ff, MOD_a|RD_s|RD_t,        0,              D33	},
1905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu",   "s,t",      0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO,	0,		L1	},
1906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu",   "s,t",      0x70000005, 0xfc00ffff, RD_s|RD_t|MOD_HILO,     0,		I32|N55	},
1907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"msubu",   "7,s,t",	0x70000005, 0xfc00e7ff, MOD_a|RD_s|RD_t,        0,              D33	},
1908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtpc",    "t,P",	0x4080c801, 0xffe0ffc1,	COD|RD_t|WR_C0,		0,		M1|N5	},
1909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtps",    "t,P",	0x4080c800, 0xffe0ffc1,	COD|RD_t|WR_C0,		0,		M1|N5	},
1910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0",    "t,G",	0x40800000, 0xffe007ff,	COD|RD_t|WR_C0|WR_CC,	0,		I1	},
1911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0",    "t,+D",     0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC,   0,		I32     },
1912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc0",    "t,G,H",    0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC,   0,		I32     },
1913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc1",    "t,S",	0x44800000, 0xffe007ff,	COD|RD_t|WR_S|FP_S,	0,		I1	},
1914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc1",    "t,G",	0x44800000, 0xffe007ff,	COD|RD_t|WR_S|FP_S,	0,		I1	},
1915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc1",   "t,S",	0x44e00000, 0xffe007ff,	COD|RD_t|WR_S|FP_D,	0,		I33	},
1916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc1",   "t,G",	0x44e00000, 0xffe007ff,	COD|RD_t|WR_S|FP_D,	0,		I33	},
1917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mtc2 is at the bottom of the table.  */
1918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mthc2 is at the bottom of the table.  */
1919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* mtc3 is at the bottom of the table.  */
1920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtdr",    "t,G",	0x7080003d, 0xffe007ff,	COD|RD_t|WR_C0,		0,		N5	},
1921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthi",    "s",	0x00000011, 0xfc1fffff,	RD_s|WR_HI,		0,		I1	},
1922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthi",    "s,7",	0x00000011, 0xfc1fe7ff, RD_s|WR_HI,		0,		D32	},
1923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlo",    "s",	0x00000013, 0xfc1fffff,	RD_s|WR_LO,		0,		I1	},
1924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlo",    "s,7",	0x00000013, 0xfc1fe7ff, RD_s|WR_LO,		0,		D32	},
1925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtlhx",   "s",	0x00000053, 0xfc1fffff,	RD_s|MOD_HILO,		0,		SMT	},
1926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0",   "t,G",	0x41800000, 0xffe007ff, TRAP|COD|RD_t|WR_C0|WR_CC, 0,		MT32	},
1927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0",   "t,+D",	0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0,		MT32	},
1928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc0",   "t,G,H",	0x41800000, 0xffe007f8, TRAP|COD|RD_t|WR_C0|WR_CC, 0,		MT32	},
1929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc1",   "t,S",	0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0,		MT32	},
1930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc1",   "t,G",	0x41800022, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_S, 0,		MT32	},
1931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttc2",   "t,g",	0x41800024, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0,		MT32	},
1932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttacx",  "t",	0x41801021, 0xffe0ffff, TRAP|WR_a|RD_t,		0,		MT32	},
1933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttacx",  "t,&",	0x41801021, 0xffe09fff, TRAP|WR_a|RD_t,		0,		MT32	},
1934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttdsp",  "t",	0x41808021, 0xffe0ffff, TRAP|RD_t,		0,		MT32	},
1935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttgpr",  "t,d",	0x41800020, 0xffe007ff, TRAP|WR_d|RD_t,		0,		MT32	},
1936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc1",  "t,S",	0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0,		MT32	},
1937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc1",  "t,G",	0x41800032, 0xffe007ff, TRAP|COD|RD_t|WR_S|FP_D, 0,		MT32	},
1938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthc2",  "t,g",	0x41800034, 0xffe007ff, TRAP|COD|RD_t|WR_C2|WR_CC, 0,		MT32	},
1939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthi",   "t",	0x41800821, 0xffe0ffff, TRAP|WR_a|RD_t,		0,		MT32	},
1940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtthi",   "t,&",	0x41800821, 0xffe09fff, TRAP|WR_a|RD_t,		0,		MT32	},
1941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttlo",   "t",	0x41800021, 0xffe0ffff, TRAP|WR_a|RD_t,		0,		MT32	},
1942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttlo",   "t,&",	0x41800021, 0xffe09fff, TRAP|WR_a|RD_t,		0,		MT32	},
1943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mttr",    "t,d,!,H,$", 0x41800000, 0xffe007c8, TRAP|RD_t,		0,		MT32	},
1944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.d",   "D,V,T",	0x46200002, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I1	},
1945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.s",   "D,V,T",	0x46000002, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		I1	},
1946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob",  "X,Y,Q",	0x78000030, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
1947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob",  "D,S,T",	0x4ac00030, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob",  "D,S,T[e]",	0x48000030, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
1949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ob",  "D,S,k",	0x4bc00030, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
1950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ps",  "D,V,T",	0x46c00002, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
1951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.qh",  "X,Y,Q",	0x78200030, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
1952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul",     "d,v,t",    0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		I32|P3|N55},
1953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul",     "d,s,t",	0x00000058, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N54	},
1954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul",     "d,v,t",	0,    (int) M_MUL,	INSN_MACRO,		0,		I1	},
1955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul",     "d,v,I",	0,    (int) M_MUL_I,	INSN_MACRO,		0,		I1	},
1956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "Y,Q",	0x78000033, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
1957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,T",	0x4ac00033, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,T[e]",	0x48000033, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.ob", "S,k",	0x4bc00033, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mula.qh", "Y,Q",	0x78200033, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulhi",   "d,s,t",	0x00000258, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulhiu",  "d,s,t",	0x00000259, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "Y,Q",	0x78000433, 0xfc2007ff,	RD_S|RD_T|FP_D, 	WR_MACC,	MX|SB1	},
1964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,T",	0x4ac00433, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,T[e]",	0x48000433, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.ob", "S,k",	0x4bc00433, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mull.qh", "Y,Q",	0x78200433, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulo",    "d,v,t",	0,    (int) M_MULO,	INSN_MACRO,		0,		I1	},
1969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulo",    "d,v,I",	0,    (int) M_MULO_I,	INSN_MACRO,		0,		I1	},
1970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulou",   "d,v,t",	0,    (int) M_MULOU,	INSN_MACRO,		0,		I1	},
1971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulou",   "d,v,I",	0,    (int) M_MULOU_I,	INSN_MACRO,		0,		I1	},
1972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulr.ps", "D,S,T",	0x46c0001a, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		M3D	},
1973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls",    "d,s,t",	0x000000d8, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsu",   "d,s,t",	0x000000d9, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulshi",  "d,s,t",	0x000002d8, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulshiu", "d,s,t",	0x000002d9, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "Y,Q",	0x78000032, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
1978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,T",	0x4ac00032, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,T[e]",	0x48000032, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.ob", "S,k",	0x4bc00032, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muls.qh", "Y,Q",	0x78200032, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "Y,Q",	0x78000432, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
1983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,T",	0x4ac00432, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,T[e]",	0x48000432, 0xfe2007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.ob", "S,k",	0x4bc00432, 0xffe007ff,	WR_CC|RD_S|RD_T,	0,		N54	},
1986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsl.qh", "Y,Q",	0x78200432, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
1987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult",    "s,t",      0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0,		I1	},
1988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult",    "7,s,t",	0x00000018, 0xfc00e7ff, WR_a|RD_s|RD_t,         0,              D33	},
1989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mult",    "d,s,t",    0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0,		G1	},
1990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multp",   "s,t",	0x00000459, 0xfc00ffff,	RD_s|RD_t|MOD_HILO,	0,		SMT	},
1991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu",   "s,t",      0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0,		I1	},
1992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu",   "7,s,t",	0x00000019, 0xfc00e7ff, WR_a|RD_s|RD_t,         0,              D33	},
1993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"multu",   "d,s,t",    0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0,		G1	},
1994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulu",    "d,s,t",	0x00000059, 0xfc0007ff,	RD_s|RD_t|WR_HILO|WR_d,	0,		N5	},
1995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg",     "d,w",	0x00000022, 0xffe007ff,	WR_d|RD_t,		0,		I1	}, /* sub 0 */
1996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"negu",    "d,w",	0x00000023, 0xffe007ff,	WR_d|RD_t,		0,		I1	}, /* subu 0 */
1997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.d",   "D,V",	0x46200007, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I1	},
1998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.s",   "D,V",	0x46000007, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I1	},
1999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"neg.ps",  "D,V",	0x46c00007, 0xffff003f,	WR_D|RD_S|FP_D,		0,		I5|I33	},
2000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.d", "D,R,S,T",	0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I4|I33	},
2001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.s", "D,R,S,T",	0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0,		I4|I33	},
2002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmadd.ps","D,R,S,T",	0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I5|I33	},
2003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.d", "D,R,S,T",	0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I4|I33	},
2004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.s", "D,R,S,T",	0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, 0,		I4|I33	},
2005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nmsub.ps","D,R,S,T",	0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, 0,		I5|I33	},
2006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* nop is at the start of the table.  */
2007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor",     "d,v,t",	0x00000027, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor",     "t,r,I",	0,    (int) M_NOR_I,	INSN_MACRO,		0,		I1	},
2009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob",  "X,Y,Q",	0x7800000f, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob",  "D,S,T",	0x4ac0000f, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob",  "D,S,T[e]",	0x4800000f, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.ob",  "D,S,k",	0x4bc0000f, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"nor.qh",  "X,Y,Q",	0x7820000f, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"not",     "d,v",	0x00000027, 0xfc1f07ff,	WR_d|RD_s|RD_t,		0,		I1	},/*nor d,s,0*/
2015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or",      "d,v,t",	0x00000025, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or",      "t,r,I",	0,    (int) M_OR_I,	INSN_MACRO,		0,		I1	},
2017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob",   "X,Y,Q",	0x7800000e, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob",   "D,S,T",	0x4ac0000e, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob",   "D,S,T[e]",	0x4800000e, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.ob",   "D,S,k",	0x4bc0000e, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"or.qh",   "X,Y,Q",	0x7820000e, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ori",     "t,r,i",	0x34000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
2023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pabsdiff.ob", "X,Y,Q",0x78000009, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		SB1	},
2024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pabsdiffc.ob", "Y,Q",	0x78000035, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	SB1	},
2025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pavg.ob", "X,Y,Q",	0x78000008, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		SB1	},
2026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "X,Y,Q",	0x78000002, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,T",	0x4ac00002, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,T[e]",0x48000002, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.ob", "D,S,k",	0x4bc00002, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickf.qh", "X,Y,Q",	0x78200002, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "X,Y,Q",	0x78000003, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,T",	0x4ac00003, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,T[e]",0x48000003, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.ob", "D,S,k",	0x4bc00003, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pickt.qh", "X,Y,Q",	0x78200003, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pll.ps",  "D,V,T",	0x46c0002c, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
2037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"plu.ps",  "D,V,T",	0x46c0002d, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
2038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* pref and prefx are at the start of the table.  */
2039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pul.ps",  "D,V,T",	0x46c0002e, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
2040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"puu.ps",  "D,V,T",	0x46c0002f, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
2041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pperm",   "s,t",	0x70000481, 0xfc00ffff,	MOD_HILO|RD_s|RD_t,	0,		SMT	},
2042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.ob", "X",	0x7a00003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX|SB1	},
2043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.ob", "D",	0x4a00003f, 0xfffff83f,	WR_D,			0,		N54	},
2044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rach.qh", "X",	0x7a20003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX	},
2045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.ob", "X",	0x7800003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX|SB1	},
2046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.ob", "D",	0x4800003f, 0xfffff83f,	WR_D,			0,		N54	},
2047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racl.qh", "X",	0x7820003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX	},
2048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.ob", "X",	0x7900003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX|SB1	},
2049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.ob", "D",	0x4900003f, 0xfffff83f,	WR_D,			0,		N54	},
2050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"racm.qh", "X",	0x7920003f, 0xfffff83f,	WR_D|FP_D,		RD_MACC,	MX	},
2051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.d", "D,S",	0x46200015, 0xffff003f, WR_D|RD_S|FP_D,		0,		I4|I33	},
2052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.ps","D,S",	0x46c00015, 0xffff003f, WR_D|RD_S|FP_D,		0,		SB1	},
2053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip.s", "D,S",	0x46000015, 0xffff003f, WR_D|RD_S|FP_S,		0,		I4|I33	},
2054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.d",  "D,S",	0x4620001d, 0xffff003f,	WR_D|RD_S|FP_D,		0,		M3D	},
2055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.ps", "D,S",	0x46c0001d, 0xffff003f,	WR_D|RD_S|FP_S,		0,		M3D	},
2056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip1.s",  "D,S",	0x4600001d, 0xffff003f,	WR_D|RD_S|FP_S,		0,		M3D	},
2057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.d",  "D,S,T",	0x4620001c, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		M3D	},
2058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.ps", "D,S,T",	0x46c0001c, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		M3D	},
2059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"recip2.s",  "D,S,T",	0x4600001c, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		M3D	},
2060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem",     "z,s,t",    0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I1	},
2061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem",     "d,v,t",	0,    (int) M_REM_3,	INSN_MACRO,		0,		I1	},
2062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rem",     "d,v,I",	0,    (int) M_REM_3I,	INSN_MACRO,		0,		I1	},
2063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu",    "z,s,t",    0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO,      0,		I1	},
2064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu",    "d,v,t",	0,    (int) M_REMU_3,	INSN_MACRO,		0,		I1	},
2065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"remu",    "d,v,I",	0,    (int) M_REMU_3I,	INSN_MACRO,		0,		I1	},
2066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rdhwr",   "t,K",	0x7c00003b, 0xffe007ff, WR_t,			0,		I33	},
2067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rdpgpr",  "d,w",	0x41400000, 0xffe007ff, WR_d,			0,		I33	},
2068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rfe",     "",		0x42000010, 0xffffffff,	0,			0,		I1|T3	},
2069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnas.qh", "X,Q",	0x78200025, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnau.ob", "X,Q",	0x78000021, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX|SB1	},
2071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnau.qh", "X,Q",	0x78200021, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rnes.qh", "X,Q",	0x78200026, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rneu.ob", "X,Q",	0x78000022, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX|SB1	},
2074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rneu.qh", "X,Q",	0x78200022, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rol",     "d,v,t",	0,    (int) M_ROL,	INSN_MACRO,		0,		I1	},
2076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rol",     "d,v,I",	0,    (int) M_ROL_I,	INSN_MACRO,		0,		I1	},
2077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror",     "d,v,t",	0,    (int) M_ROR,	INSN_MACRO,		0,		I1	},
2078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror",     "d,v,I",	0,    (int) M_ROR_I,	INSN_MACRO,		0,		I1	},
2079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ror",	    "d,w,<",	0x00200002, 0xffe0003f,	WR_d|RD_t,		0,		N5|I33|SMT },
2080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rorv",    "d,t,s",	0x00000046, 0xfc0007ff,	RD_t|RD_s|WR_d,		0,		N5|I33|SMT },
2081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotl",    "d,v,t",	0,    (int) M_ROL,	INSN_MACRO,		0,		I33|SMT	},
2082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotl",    "d,v,I",	0,    (int) M_ROL_I,	INSN_MACRO,		0,		I33|SMT	},
2083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotr",    "d,v,t",	0,    (int) M_ROR,	INSN_MACRO,		0,		I33|SMT	},
2084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotr",    "d,v,I",	0,    (int) M_ROR_I,	INSN_MACRO,		0,		I33|SMT	},
2085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rotrv",   "d,t,s",	0x00000046, 0xfc0007ff,	RD_t|RD_s|WR_d,		0,		I33|SMT	},
2086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.l.d", "D,S",	0x46200008, 0xffff003f, WR_D|RD_S|FP_D,		0,		I3|I33	},
2087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.l.s", "D,S",	0x46000008, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
2088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.w.d", "D,S",	0x4620000c, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I2	},
2089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"round.w.s", "D,S",	0x4600000c, 0xffff003f, WR_D|RD_S|FP_S,		0,		I2	},
2090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.d", "D,S",	0x46200016, 0xffff003f, WR_D|RD_S|FP_D,		0,		I4|I33	},
2091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.ps","D,S",	0x46c00016, 0xffff003f, WR_D|RD_S|FP_D,		0,		SB1	},
2092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt.s", "D,S",	0x46000016, 0xffff003f, WR_D|RD_S|FP_S,		0,		I4|I33	},
2093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.d",  "D,S",	0x4620001e, 0xffff003f,	WR_D|RD_S|FP_D,		0,		M3D	},
2094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.ps", "D,S",	0x46c0001e, 0xffff003f,	WR_D|RD_S|FP_S,		0,		M3D	},
2095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt1.s",  "D,S",	0x4600001e, 0xffff003f,	WR_D|RD_S|FP_S,		0,		M3D	},
2096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.d",  "D,S,T",	0x4620001f, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		M3D	},
2097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.ps", "D,S,T",	0x46c0001f, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		M3D	},
2098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rsqrt2.s",  "D,S,T",	0x4600001f, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		M3D	},
2099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzs.qh",  "X,Q",	0x78200024, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.ob",  "X,Q",	0x78000020, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX|SB1	},
2101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.ob",  "D,k",	0x4bc00020, 0xffe0f83f,	WR_D|RD_S|RD_T,		0,		N54	},
2102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rzu.qh",  "X,Q",	0x78200020, 0xfc20f83f,	WR_D|RD_T|FP_D,		RD_MACC,	MX	},
2103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sb",      "t,o(b)",	0xa0000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I1	},
2104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sb",      "t,A(b)",	0,    (int) M_SB_AB,	INSN_MACRO,		0,		I1	},
2105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sc",	    "t,o(b)",	0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b,	0,		I2	},
2106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sc",	    "t,A(b)",	0,    (int) M_SC_AB,	INSN_MACRO,		0,		I2	},
2107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scd",	    "t,o(b)",	0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b,	0,		I3	},
2108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scd",	    "t,A(b)",	0,    (int) M_SCD_AB,	INSN_MACRO,		0,		I3	},
2109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd",	    "t,o(b)",	0xfc000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I3	},
2110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd",      "t,o(b)",	0,    (int) M_SD_OB,	INSN_MACRO,		0,		I1	},
2111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sd",      "t,A(b)",	0,    (int) M_SD_AB,	INSN_MACRO,		0,		I1	},
2112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp",   "",		0x0000000e, 0xffffffff,	TRAP,           	0,		G2	},
2113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp",   "c",	0x0000000e, 0xfc00ffff,	TRAP,			0,		G2	},
2114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp",   "c,q",	0x0000000e, 0xfc00003f,	TRAP,			0,		G2	},
2115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp",   "",         0x7000003f, 0xffffffff, TRAP,           	0,		I32     },
2116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdbbp",   "B",        0x7000003f, 0xfc00003f, TRAP,           	0,		I32     },
2117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1",    "T,o(b)",	0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,	0,		I2	},
2118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1",    "E,o(b)",	0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,	0,		I2	},
2119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1",    "T,A(b)",	0,    (int) M_SDC1_AB,	INSN_MACRO,		0,		I2	},
2120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc1",    "E,A(b)",	0,    (int) M_SDC1_AB,	INSN_MACRO,		0,		I2	},
2121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc2",    "E,o(b)",	0xf8000000, 0xfc000000, SM|RD_C2|RD_b,		0,		I2	},
2122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc2",    "E,A(b)",	0,    (int) M_SDC2_AB,	INSN_MACRO,		0,		I2	},
2123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc3",    "E,o(b)",	0xfc000000, 0xfc000000, SM|RD_C3|RD_b,		0,		I2	},
2124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdc3",    "E,A(b)",	0,    (int) M_SDC3_AB,	INSN_MACRO,		0,		I2	},
2125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d",     "T,o(b)",	0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D,	0,		I2	},
2126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d",     "T,o(b)",	0,    (int) M_S_DOB,	INSN_MACRO,		0,		I1	},
2127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.d",     "T,A(b)",	0,    (int) M_S_DAB,	INSN_MACRO,		0,		I1	},
2128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdl",     "t,o(b)",	0xb0000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I3	},
2129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdl",     "t,A(b)",	0,    (int) M_SDL_AB,	INSN_MACRO,		0,		I3	},
2130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdr",     "t,o(b)",	0xb4000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I3	},
2131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdr",     "t,A(b)",	0,    (int) M_SDR_AB,	INSN_MACRO,		0,		I3	},
2132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sdxc1",   "S,t(b)",   0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_D,	0,		I4|I33	},
2133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seb",     "d,w",	0x7c000420, 0xffe007ff,	WR_d|RD_t,		0,		I33	},
2134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seh",     "d,w",	0x7c000620, 0xffe007ff,	WR_d|RD_t,		0,		I33	},
2135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"selsl",   "d,v,t",	0x00000005, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		L1	},
2136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"selsr",   "d,v,t",	0x00000001, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		L1	},
2137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seq",     "d,v,t",	0,    (int) M_SEQ,	INSN_MACRO,		0,		I1	},
2138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"seq",     "d,v,I",	0,    (int) M_SEQ_I,	INSN_MACRO,		0,		I1	},
2139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sge",     "d,v,t",	0,    (int) M_SGE,	INSN_MACRO,		0,		I1	},
2140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sge",     "d,v,I",	0,    (int) M_SGE_I,	INSN_MACRO,		0,		I1	},
2141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgeu",    "d,v,t",	0,    (int) M_SGEU,	INSN_MACRO,		0,		I1	},
2142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgeu",    "d,v,I",	0,    (int) M_SGEU_I,	INSN_MACRO,		0,		I1	},
2143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgt",     "d,v,t",	0,    (int) M_SGT,	INSN_MACRO,		0,		I1	},
2144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgt",     "d,v,I",	0,    (int) M_SGT_I,	INSN_MACRO,		0,		I1	},
2145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgtu",    "d,v,t",	0,    (int) M_SGTU,	INSN_MACRO,		0,		I1	},
2146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sgtu",    "d,v,I",	0,    (int) M_SGTU_I,	INSN_MACRO,		0,		I1	},
2147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sh",      "t,o(b)",	0xa4000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I1	},
2148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sh",      "t,A(b)",	0,    (int) M_SH_AB,	INSN_MACRO,		0,		I1	},
2149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.bfla.qh", "X,Y,Z", 0x7a20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.ob", "X,Y,Z", 0x7980001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.ob", "D,S,T", 0x4980001f, 0xffe0003f, WR_D|RD_S|RD_T, 	0,		N54	},
2152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixh.qh", "X,Y,Z", 0x7820001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.ob", "X,Y,Z", 0x79c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.ob", "D,S,T", 0x49c0001f, 0xffe0003f, WR_D|RD_S|RD_T, 	0,		N54	},
2155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.mixl.qh", "X,Y,Z", 0x78a0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.ob", "X,Y,Z", 0x7900001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.ob", "D,S,T", 0x4900001f, 0xffe0003f, WR_D|RD_S|RD_T, 	0,		N54	},
2158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pach.qh", "X,Y,Z", 0x7920001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.pacl.ob", "D,S,T", 0x4940001f, 0xffe0003f, WR_D|RD_S|RD_T, 	0,		N54	},
2160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.repa.qh", "X,Y,Z", 0x7b20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.repb.qh", "X,Y,Z", 0x7ba0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shfl.upsl.ob", "X,Y,Z", 0x78c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sle",     "d,v,t",	0,    (int) M_SLE,	INSN_MACRO,		0,		I1	},
2164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sle",     "d,v,I",	0,    (int) M_SLE_I,	INSN_MACRO,		0,		I1	},
2165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sleu",    "d,v,t",	0,    (int) M_SLEU,	INSN_MACRO,		0,		I1	},
2166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sleu",    "d,v,I",	0,    (int) M_SLEU_I,	INSN_MACRO,		0,		I1	},
2167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sllv",    "d,t,s",	0x00000004, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	},
2168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll",     "d,w,s",	0x00000004, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	}, /* sllv */
2169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll",     "d,w,<",	0x00000000, 0xffe0003f,	WR_d|RD_t,		0,		I1	},
2170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob",  "X,Y,Q",	0x78000010, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob",  "D,S,T[e]",	0x48000010, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.ob",  "D,S,k",	0x4bc00010, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sll.qh",  "X,Y,Q",	0x78200010, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slt",     "d,v,t",	0x0000002a, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slt",     "d,v,I",	0,    (int) M_SLT_I,	INSN_MACRO,		0,		I1	},
2176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"slti",    "t,r,j",	0x28000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
2177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltiu",   "t,r,j",	0x2c000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
2178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltu",    "d,v,t",	0x0000002b, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sltu",    "d,v,I",	0,    (int) M_SLTU_I,	INSN_MACRO,		0,		I1	},
2180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sne",     "d,v,t",	0,    (int) M_SNE,	INSN_MACRO,		0,		I1	},
2181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sne",     "d,v,I",	0,    (int) M_SNE_I,	INSN_MACRO,		0,		I1	},
2182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.d",  "D,S",	0x46200004, 0xffff003f, WR_D|RD_S|FP_D,		0,		I2	},
2183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.s",  "D,S",	0x46000004, 0xffff003f, WR_D|RD_S|FP_S,		0,		I2	},
2184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sqrt.ps", "D,S",	0x46c00004, 0xffff003f, WR_D|RD_S|FP_D,		0,		SB1	},
2185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srav",    "d,t,s",	0x00000007, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	},
2186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra",     "d,w,s",	0x00000007, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	}, /* srav */
2187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra",     "d,w,<",	0x00000003, 0xffe0003f,	WR_d|RD_t,		0,		I1	},
2188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sra.qh",  "X,Y,Q",	0x78200013, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srlv",    "d,t,s",	0x00000006, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	},
2190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl",     "d,w,s",	0x00000006, 0xfc0007ff,	WR_d|RD_t|RD_s,		0,		I1	}, /* srlv */
2191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl",     "d,w,<",	0x00000002, 0xffe0003f,	WR_d|RD_t,		0,		I1	},
2192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob",  "X,Y,Q",	0x78000012, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob",  "D,S,T[e]",	0x48000012, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.ob",  "D,S,k",	0x4bc00012, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"srl.qh",  "X,Y,Q",	0x78200012, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ssnop is at the start of the table.  */
2197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"standby", "",         0x42000021, 0xffffffff,	0,			0,		V1	},
2198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub",     "d,v,t",	0x00000022, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub",     "d,v,I",	0,    (int) M_SUB_I,	INSN_MACRO,		0,		I1	},
2200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.d",   "D,V,T",	0x46200001, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I1	},
2201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.s",   "D,V,T",	0x46000001, 0xffe0003f,	WR_D|RD_S|RD_T|FP_S,	0,		I1	},
2202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob",  "X,Y,Q",	0x7800000a, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob",  "D,S,T",	0x4ac0000a, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob",  "D,S,T[e]",	0x4800000a, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ob",  "D,S,k",	0x4bc0000a, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.ps",  "D,V,T",	0x46c00001, 0xffe0003f,	WR_D|RD_S|RD_T|FP_D,	0,		I5|I33	},
2207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sub.qh",  "X,Y,Q",	0x7820000a, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suba.ob", "Y,Q",	0x78000036, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
2209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suba.qh", "Y,Q",	0x78200036, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
2210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subl.ob", "Y,Q",	0x78000436, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
2211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subl.qh", "Y,Q",	0x78200436, 0xfc2007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
2212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu",    "d,v,t",	0x00000023, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu",    "d,v,I",	0,    (int) M_SUBU_I,	INSN_MACRO,		0,		I1	},
2214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suspend", "",         0x42000022, 0xffffffff,	0,			0,		V1	},
2215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"suxc1",   "S,t(b)",   0x4c00000d, 0xfc0007ff, SM|RD_S|RD_t|RD_b,	0,		I5|I33|N55},
2216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sw",      "t,o(b)",	0xac000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I1	},
2217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sw",      "t,A(b)",	0,    (int) M_SW_AB,	INSN_MACRO,		0,		I1	},
2218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc0",    "E,o(b)",	0xe0000000, 0xfc000000,	SM|RD_C0|RD_b,		0,		I1	},
2219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc0",    "E,A(b)",	0,    (int) M_SWC0_AB,	INSN_MACRO,		0,		I1	},
2220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1",    "T,o(b)",	0xe4000000, 0xfc000000,	SM|RD_T|RD_b|FP_S,	0,		I1	},
2221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1",    "E,o(b)",	0xe4000000, 0xfc000000,	SM|RD_T|RD_b|FP_S,	0,		I1	},
2222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1",    "T,A(b)",	0,    (int) M_SWC1_AB,	INSN_MACRO,		0,		I1	},
2223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc1",    "E,A(b)",	0,    (int) M_SWC1_AB,	INSN_MACRO,		0,		I1	},
2224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.s",     "T,o(b)",	0xe4000000, 0xfc000000,	SM|RD_T|RD_b|FP_S,	0,		I1	}, /* swc1 */
2225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"s.s",     "T,A(b)",	0,    (int) M_SWC1_AB,	INSN_MACRO,		0,		I1	},
2226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc2",    "E,o(b)",	0xe8000000, 0xfc000000,	SM|RD_C2|RD_b,		0,		I1	},
2227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc2",    "E,A(b)",	0,    (int) M_SWC2_AB,	INSN_MACRO,		0,		I1	},
2228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc3",    "E,o(b)",	0xec000000, 0xfc000000,	SM|RD_C3|RD_b,		0,		I1	},
2229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swc3",    "E,A(b)",	0,    (int) M_SWC3_AB,	INSN_MACRO,		0,		I1	},
2230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swl",     "t,o(b)",	0xa8000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I1	},
2231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swl",     "t,A(b)",	0,    (int) M_SWL_AB,	INSN_MACRO,		0,		I1	},
2232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scache",  "t,o(b)",	0xa8000000, 0xfc000000,	RD_t|RD_b,		0,		I2	}, /* same */
2233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"scache",  "t,A(b)",	0,    (int) M_SWL_AB,	INSN_MACRO,		0,		I2	}, /* as swl */
2234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swr",     "t,o(b)",	0xb8000000, 0xfc000000,	SM|RD_t|RD_b,		0,		I1	},
2235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swr",     "t,A(b)",	0,    (int) M_SWR_AB,	INSN_MACRO,		0,		I1	},
2236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"invalidate", "t,o(b)",0xb8000000, 0xfc000000,	RD_t|RD_b,		0,		I2	}, /* same */
2237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"invalidate", "t,A(b)",0,    (int) M_SWR_AB,	INSN_MACRO,		0,		I2	}, /* as swr */
2238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"swxc1",   "S,t(b)",   0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b|FP_S,	0,		I4|I33	},
2239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync",    "",		0x0000000f, 0xffffffff,	INSN_SYNC,		0,		I2|G1	},
2240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync.p",  "",		0x0000040f, 0xffffffff,	INSN_SYNC,		0,		I2	},
2241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"sync.l",  "",		0x0000000f, 0xffffffff,	INSN_SYNC,		0,		I2	},
2242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"synci",   "o(b)",	0x041f0000, 0xfc1f0000,	SM|RD_b,		0,		I33	},
2243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"syscall", "",		0x0000000c, 0xffffffff,	TRAP,			0,		I1	},
2244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"syscall", "B",	0x0000000c, 0xfc00003f,	TRAP,			0,		I1	},
2245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teqi",    "s,j",	0x040c0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	},
2246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq",	    "s,t",	0x00000034, 0xfc00ffff, RD_s|RD_t|TRAP,		0,		I2	},
2247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq",	    "s,t,q",	0x00000034, 0xfc00003f, RD_s|RD_t|TRAP,		0,		I2	},
2248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq",     "s,j",	0x040c0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	}, /* teqi */
2249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"teq",     "s,I",	0,    (int) M_TEQ_I,	INSN_MACRO,		0,		I2	},
2250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgei",    "s,j",	0x04080000, 0xfc1f0000, RD_s|TRAP,		0,		I2	},
2251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge",	    "s,t",	0x00000030, 0xfc00ffff,	RD_s|RD_t|TRAP,		0,		I2	},
2252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge",	    "s,t,q",	0x00000030, 0xfc00003f,	RD_s|RD_t|TRAP,		0,		I2	},
2253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge",     "s,j",	0x04080000, 0xfc1f0000, RD_s|TRAP,		0,		I2	}, /* tgei */
2254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tge",	    "s,I",	0,    (int) M_TGE_I,    INSN_MACRO,		0,		I2	},
2255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeiu",   "s,j",	0x04090000, 0xfc1f0000, RD_s|TRAP,		0,		I2	},
2256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu",    "s,t",	0x00000031, 0xfc00ffff, RD_s|RD_t|TRAP,		0,		I2	},
2257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu",    "s,t,q",	0x00000031, 0xfc00003f, RD_s|RD_t|TRAP,		0,		I2	},
2258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu",    "s,j",	0x04090000, 0xfc1f0000, RD_s|TRAP,		0,		I2	}, /* tgeiu */
2259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tgeu",    "s,I",	0,    (int) M_TGEU_I,	INSN_MACRO,		0,		I2	},
2260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbp",    "",         0x42000008, 0xffffffff, INSN_TLB,       	0,		I1   	},
2261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbr",    "",         0x42000001, 0xffffffff, INSN_TLB,       	0,		I1   	},
2262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbwi",   "",         0x42000002, 0xffffffff, INSN_TLB,       	0,		I1   	},
2263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlbwr",   "",         0x42000006, 0xffffffff, INSN_TLB,       	0,		I1   	},
2264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlti",    "s,j",	0x040a0000, 0xfc1f0000,	RD_s|TRAP,		0,		I2	},
2265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt",     "s,t",	0x00000032, 0xfc00ffff, RD_s|RD_t|TRAP,		0,		I2	},
2266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt",     "s,t,q",	0x00000032, 0xfc00003f, RD_s|RD_t|TRAP,		0,		I2	},
2267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt",     "s,j",	0x040a0000, 0xfc1f0000,	RD_s|TRAP,		0,		I2	}, /* tlti */
2268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tlt",     "s,I",	0,    (int) M_TLT_I,	INSN_MACRO,		0,		I2	},
2269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltiu",   "s,j",	0x040b0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	},
2270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu",    "s,t",	0x00000033, 0xfc00ffff, RD_s|RD_t|TRAP,		0,		I2	},
2271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu",    "s,t,q",	0x00000033, 0xfc00003f, RD_s|RD_t|TRAP,		0,		I2	},
2272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu",    "s,j",	0x040b0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	}, /* tltiu */
2273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tltu",    "s,I",	0,    (int) M_TLTU_I,	INSN_MACRO,		0,		I2	},
2274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tnei",    "s,j",	0x040e0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	},
2275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne",     "s,t",	0x00000036, 0xfc00ffff, RD_s|RD_t|TRAP,		0,		I2	},
2276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne",     "s,t,q",	0x00000036, 0xfc00003f, RD_s|RD_t|TRAP,		0,		I2	},
2277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne",     "s,j",	0x040e0000, 0xfc1f0000, RD_s|TRAP,		0,		I2	}, /* tnei */
2278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"tne",     "s,I",	0,    (int) M_TNE_I,	INSN_MACRO,		0,		I2	},
2279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.l.d", "D,S",	0x46200009, 0xffff003f, WR_D|RD_S|FP_D,		0,		I3|I33	},
2280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.l.s", "D,S",	0x46000009, 0xffff003f,	WR_D|RD_S|FP_S|FP_D,	0,		I3|I33	},
2281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S",	0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I2	},
2282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S,x",	0x4620000d, 0xffff003f, WR_D|RD_S|FP_S|FP_D,	0,		I2	},
2283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.d", "D,S,t",	0,    (int) M_TRUNCWD,	INSN_MACRO,		0,		I1	},
2284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S",	0x4600000d, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I2	},
2285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S,x",	0x4600000d, 0xffff003f,	WR_D|RD_S|FP_S,		0,		I2	},
2286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"trunc.w.s", "D,S,t",	0,    (int) M_TRUNCWS,	INSN_MACRO,		0,		I1	},
2287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"uld",     "t,o(b)",	0,    (int) M_ULD,	INSN_MACRO,		0,		I3	},
2288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"uld",     "t,A(b)",	0,    (int) M_ULD_A,	INSN_MACRO,		0,		I3	},
2289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulh",     "t,o(b)",	0,    (int) M_ULH,	INSN_MACRO,		0,		I1	},
2290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulh",     "t,A(b)",	0,    (int) M_ULH_A,	INSN_MACRO,		0,		I1	},
2291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulhu",    "t,o(b)",	0,    (int) M_ULHU,	INSN_MACRO,		0,		I1	},
2292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulhu",    "t,A(b)",	0,    (int) M_ULHU_A,	INSN_MACRO,		0,		I1	},
2293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulw",     "t,o(b)",	0,    (int) M_ULW,	INSN_MACRO,		0,		I1	},
2294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ulw",     "t,A(b)",	0,    (int) M_ULW_A,	INSN_MACRO,		0,		I1	},
2295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usd",     "t,o(b)",	0,    (int) M_USD,	INSN_MACRO,		0,		I3	},
2296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usd",     "t,A(b)",	0,    (int) M_USD_A,	INSN_MACRO,		0,		I3	},
2297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ush",     "t,o(b)",	0,    (int) M_USH,	INSN_MACRO,		0,		I1	},
2298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ush",     "t,A(b)",	0,    (int) M_USH_A,	INSN_MACRO,		0,		I1	},
2299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usw",     "t,o(b)",	0,    (int) M_USW,	INSN_MACRO,		0,		I1	},
2300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"usw",     "t,A(b)",	0,    (int) M_USW_A,	INSN_MACRO,		0,		I1	},
2301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.ob", "Y",	0x7a00003e, 0xffff07ff,	RD_S|FP_D,		WR_MACC,	MX|SB1	},
2302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.ob", "S",	0x4a00003e, 0xffff07ff,	RD_S,			0,		N54	},
2303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wach.qh", "Y",	0x7a20003e, 0xffff07ff,	RD_S|FP_D,		WR_MACC,	MX	},
2304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.ob", "Y,Z",	0x7800003e, 0xffe007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX|SB1	},
2305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.ob", "S,T",	0x4800003e, 0xffe007ff,	RD_S|RD_T,		0,		N54	},
2306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wacl.qh", "Y,Z",	0x7820003e, 0xffe007ff,	RD_S|RD_T|FP_D,		WR_MACC,	MX	},
2307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wait",    "",         0x42000020, 0xffffffff, TRAP,   		0,		I3|I32	},
2308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wait",    "J",        0x42000020, 0xfe00003f, TRAP,   		0,		I32|N55	},
2309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"waiti",   "",		0x42000020, 0xffffffff,	TRAP,			0,		L1	},
2310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrpgpr",  "d,w",	0x41c00000, 0xffe007ff, RD_t,			0,		I33	},
2311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wsbh",    "d,w",	0x7c0000a0, 0xffe007ff,	WR_d|RD_t,		0,		I33	},
2312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor",     "d,v,t",	0x00000026, 0xfc0007ff,	WR_d|RD_s|RD_t,		0,		I1	},
2313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor",     "t,r,I",	0,    (int) M_XOR_I,	INSN_MACRO,		0,		I1	},
2314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob",  "X,Y,Q",	0x7800000d, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX|SB1	},
2315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob",  "D,S,T",	0x4ac0000d, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob",  "D,S,T[e]",	0x4800000d, 0xfe20003f,	WR_D|RD_S|RD_T,		0,		N54	},
2317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.ob",  "D,S,k",	0x4bc0000d, 0xffe0003f,	WR_D|RD_S|RD_T,		0,		N54	},
2318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xor.qh",  "X,Y,Q",	0x7820000d, 0xfc20003f,	WR_D|RD_S|RD_T|FP_D,	0,		MX	},
2319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"xori",    "t,r,i",	0x38000000, 0xfc000000,	WR_t|RD_s,		0,		I1	},
2320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"yield",   "s",	0x7c000009, 0xfc1fffff, TRAP|RD_s,		0,		MT32	},
2321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"yield",   "d,s",	0x7c000009, 0xfc1f07ff, TRAP|WR_d|RD_s,		0,		MT32	},
2322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* User Defined Instruction.  */
2324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0",     "s,t,d,+1",0x70000010, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0",     "s,t,+2",	0x70000010, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0",     "s,+3",	0x70000010, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi0",     "+4",	0x70000010, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1",     "s,t,d,+1",0x70000011, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1",     "s,t,+2",	0x70000011, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1",     "s,+3",	0x70000011, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi1",     "+4",	0x70000011, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2",     "s,t,d,+1",0x70000012, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2",     "s,t,+2",	0x70000012, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2",     "s,+3",	0x70000012, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi2",     "+4",	0x70000012, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3",     "s,t,d,+1",0x70000013, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3",     "s,t,+2",	0x70000013, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3",     "s,+3",	0x70000013, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi3",     "+4",	0x70000013, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4",     "s,t,d,+1",0x70000014, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4",     "s,t,+2",	0x70000014, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4",     "s,+3",	0x70000014, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi4",     "+4",	0x70000014, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5",     "s,t,d,+1",0x70000015, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5",     "s,t,+2",	0x70000015, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5",     "s,+3",	0x70000015, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi5",     "+4",	0x70000015, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6",     "s,t,d,+1",0x70000016, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6",     "s,t,+2",	0x70000016, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6",     "s,+3",	0x70000016, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi6",     "+4",	0x70000016, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7",     "s,t,d,+1",0x70000017, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7",     "s,t,+2",	0x70000017, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7",     "s,+3",	0x70000017, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi7",     "+4",	0x70000017, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8",     "s,t,d,+1",0x70000018, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8",     "s,t,+2",	0x70000018, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8",     "s,+3",	0x70000018, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi8",     "+4",	0x70000018, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9",     "s,t,d,+1",0x70000019, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9",      "s,t,+2",	0x70000019, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9",     "s,+3",	0x70000019, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi9",     "+4",	0x70000019, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10",    "s,t,d,+1",0x7000001a, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10",    "s,t,+2",	0x7000001a, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10",    "s,+3",	0x7000001a, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi10",    "+4",	0x7000001a, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11",    "s,t,d,+1",0x7000001b, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11",    "s,t,+2",	0x7000001b, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11",    "s,+3",	0x7000001b, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi11",    "+4",	0x7000001b, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12",    "s,t,d,+1",0x7000001c, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12",    "s,t,+2",	0x7000001c, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12",    "s,+3",	0x7000001c, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi12",    "+4",	0x7000001c, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13",    "s,t,d,+1",0x7000001d, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13",    "s,t,+2",	0x7000001d, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13",    "s,+3",	0x7000001d, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi13",    "+4",	0x7000001d, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14",    "s,t,d,+1",0x7000001e, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14",    "s,t,+2",	0x7000001e, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14",    "s,+3",	0x7000001e, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi14",    "+4",	0x7000001e, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15",    "s,t,d,+1",0x7000001f, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15",    "s,t,+2",	0x7000001f, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15",    "s,+3",	0x7000001f, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"udi15",    "+4",	0x7000001f, 0xfc00003f,	WR_d|RD_s|RD_t,		0,		I33	},
2388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Coprocessor 2 move/branch operations overlap with VR5400 .ob format
2390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instructions so they are here for the latters to take precedence.  */
2391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2f",    "p",	0x49000000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2f",    "N,p",	0x49000000, 0xffe30000,	CBD|RD_CC,		0,		I32	},
2393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2fl",   "p",	0x49020000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
2394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2fl",   "N,p",	0x49020000, 0xffe30000,	CBL|RD_CC,		0,		I32	},
2395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2t",    "p",	0x49010000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2t",    "N,p",	0x49010000, 0xffe30000,	CBD|RD_CC,		0,		I32	},
2397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2tl",   "p",	0x49030000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
2398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc2tl",   "N,p",	0x49030000, 0xffe30000,	CBL|RD_CC,		0,		I32	},
2399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc2",    "t,G",	0x48400000, 0xffe007ff,	LCD|WR_t|RD_C2,		0,		I1	},
2400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc2",    "t,G",	0x48c00000, 0xffe007ff,	COD|RD_t|WR_CC,		0,		I1	},
2401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc2",   "t,G",	0x48200000, 0xffe007ff,	LCD|WR_t|RD_C2,		0,		I3	},
2402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc2",   "t,G,H",	0x48200000, 0xffe007f8,	LCD|WR_t|RD_C2,		0,		I64	},
2403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc2",   "t,G",	0x48a00000, 0xffe007ff,	COD|RD_t|WR_C2|WR_CC,	0,		I3	},
2404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc2",   "t,G,H",	0x48a00000, 0xffe007f8,	COD|RD_t|WR_C2|WR_CC,	0,		I64	},
2405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc2",    "t,G",	0x48000000, 0xffe007ff,	LCD|WR_t|RD_C2,		0,		I1	},
2406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc2",    "t,G,H",	0x48000000, 0xffe007f8,	LCD|WR_t|RD_C2,		0,		I32	},
2407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2",   "t,G",	0x48600000, 0xffe007ff,	LCD|WR_t|RD_C2,		0,		I33	},
2408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2",   "t,G,H",	0x48600000, 0xffe007f8,	LCD|WR_t|RD_C2,		0,		I33	},
2409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfhc2",   "t,i",	0x48600000, 0xffe00000,	LCD|WR_t|RD_C2,		0,		I33	},
2410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc2",    "t,G",	0x48800000, 0xffe007ff,	COD|RD_t|WR_C2|WR_CC,	0,		I1	},
2411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc2",    "t,G,H",	0x48800000, 0xffe007f8,	COD|RD_t|WR_C2|WR_CC,	0,		I32	},
2412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2",   "t,G",	0x48e00000, 0xffe007ff,	COD|RD_t|WR_C2|WR_CC,	0,		I33	},
2413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2",   "t,G,H",	0x48e00000, 0xffe007f8,	COD|RD_t|WR_C2|WR_CC,	0,		I33	},
2414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthc2",   "t,i",	0x48e00000, 0xffe00000,	COD|RD_t|WR_C2|WR_CC,	0,		I33	},
2415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Coprocessor 3 move/branch operations overlap with MIPS IV COP1X
2417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instructions, so they are here for the latters to take precedence.  */
2418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3f",    "p",	0x4d000000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3fl",   "p",	0x4d020000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
2420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3t",    "p",	0x4d010000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc3tl",   "p",	0x4d030000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
2422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cfc3",    "t,G",	0x4c400000, 0xffe007ff,	LCD|WR_t|RD_C3,		0,		I1	},
2423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ctc3",    "t,G",	0x4cc00000, 0xffe007ff,	COD|RD_t|WR_CC,		0,		I1	},
2424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmfc3",   "t,G",	0x4c200000, 0xffe007ff, LCD|WR_t|RD_C3, 	0,		I3	},
2425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmtc3",   "t,G",	0x4ca00000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC,	0,		I3	},
2426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc3",    "t,G",	0x4c000000, 0xffe007ff,	LCD|WR_t|RD_C3,		0,		I1	},
2427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mfc3",    "t,G,H",    0x4c000000, 0xffe007f8, LCD|WR_t|RD_C3, 	0,		I32     },
2428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc3",    "t,G",	0x4c800000, 0xffe007ff,	COD|RD_t|WR_C3|WR_CC,	0,		I1	},
2429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mtc3",    "t,G,H",    0x4c800000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC,   0,		I32     },
2430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* No hazard protection on coprocessor instructions--they shouldn't
2432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   change the state of the processor and if they do it's up to the
2433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   user to put in nops as necessary.  These are at the end so that the
2434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   disassembler recognizes more specific versions first.  */
2435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c0",      "C",	0x42000000, 0xfe000000,	0,			0,		I1	},
2436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c1",      "C",	0x46000000, 0xfe000000,	0,			0,		I1	},
2437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c2",      "C",	0x4a000000, 0xfe000000,	0,			0,		I1	},
2438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"c3",      "C",	0x4e000000, 0xfe000000,	0,			0,		I1	},
2439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop0",     "C",	0,    (int) M_COP0,	INSN_MACRO,		0,		I1	},
2440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop1",     "C",	0,    (int) M_COP1,	INSN_MACRO,		0,		I1	},
2441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop2",     "C",	0,    (int) M_COP2,	INSN_MACRO,		0,		I1	},
2442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cop3",     "C",	0,    (int) M_COP3,	INSN_MACRO,		0,		I1	},
2443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Conflicts with the 4650's "mul" instruction.  Nobody's using the
2444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     4010 any more, so move this insn out of the way.  If the object
2445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     format gave us more info, we could do this right.  */
2446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addciu",  "t,r,j",	0x70000000, 0xfc000000,	WR_t|RD_s,		0,		L1	},
2447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE */
2448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.ph", "d,t",	0x7c000252, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.pw", "d,t",	0x7c000456, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.qh", "d,t",	0x7c000256, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.w", "d,t",	0x7c000452, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.ph", "d,s,t",	0x7c000290, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.pw", "d,s,t",	0x7c000494, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq.qh", "d,s,t",	0x7c000294, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.ph", "d,s,t",	0x7c000390, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.pw", "d,s,t",	0x7c000594, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.qh", "d,s,t",	0x7c000394, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addq_s.w", "d,s,t",	0x7c000590, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addsc",   "d,s,t",	0x7c000410, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.ob", "d,s,t",	0x7c000014, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.qb", "d,s,t",	0x7c000010, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.ob", "d,s,t",	0x7c000114, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.qb", "d,s,t",	0x7c000110, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addwc",   "d,s,t",	0x7c000450, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bitrev",  "d,t",	0x7c0006d2, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bposge32", "p",	0x041c0000, 0xffff0000, CBD,			0,		D32	},
2467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bposge64", "p",	0x041d0000, 0xffff0000, CBD,			0,		D64	},
2468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.ph", "s,t",	0x7c000211, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.pw", "s,t",	0x7c000415, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.eq.qh", "s,t",	0x7c000215, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.eq.ob", "d,s,t", 0x7c000115, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.eq.qb", "d,s,t", 0x7c000111, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.le.ob", "d,s,t", 0x7c000195, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.le.qb", "d,s,t", 0x7c000191, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.lt.ob", "d,s,t", 0x7c000155, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgu.lt.qb", "d,s,t", 0x7c000151, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.ph", "s,t",	0x7c000291, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.pw", "s,t",	0x7c000495, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.le.qh", "s,t",	0x7c000295, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.ph", "s,t",	0x7c000251, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.pw", "s,t",	0x7c000455, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmp.lt.qh", "s,t",	0x7c000255, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.eq.ob", "s,t",	0x7c000015, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.eq.qb", "s,t",	0x7c000011, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.le.ob", "s,t",	0x7c000095, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.le.qb", "s,t",	0x7c000091, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.lt.ob", "s,t",	0x7c000055, 0xfc00ffff, RD_s|RD_t,		0,		D64	},
2488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpu.lt.qb", "s,t",	0x7c000051, 0xfc00ffff, RD_s|RD_t,		0,		D32	},
2489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpdp", "t,7,6",	0x7c0002bc, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA,	0,		D64	},
2490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpdpv", "t,7,s",	0x7c0002fc, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0,		D64	},
2491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextp",   "t,7,6",	0x7c0000bc, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextpv",  "t,7,s",	0x7c0000fc, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr.l", "t,7,6",	0x7c00043c, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_r.l", "t,7,6",	0x7c00053c, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_rs.l", "t,7,6",	0x7c0005bc, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_rs.w", "t,7,6",	0x7c0001bc, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_r.w", "t,7,6",	0x7c00013c, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr_s.h", "t,7,6",	0x7c0003bc, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv.l", "t,7,s",	0x7c00047c, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_r.l", "t,7,s",	0x7c00057c, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_rs.l", "t,7,s", 0x7c0005fc, 0xfc00e7ff, WR_t|RD_a|RD_s,	0,		D64	},
2502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_rs.w", "t,7,s", 0x7c0001fc, 0xfc00e7ff, WR_t|RD_a|RD_s,	0,		D64	},
2503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_r.w", "t,7,s",	0x7c00017c, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv_s.h", "t,7,s",	0x7c0003fc, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextrv.w", "t,7,s",	0x7c00007c, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D64	},
2506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dextr.w", "t,7,6",	0x7c00003c, 0xfc00e7ff, WR_t|RD_a,		0,		D64	},
2507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dinsv",   "t,s",	0x7c00000d, 0xfc00ffff, WR_t|RD_s,		0,		D64	},
2508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmadd",   "7,s,t",	0x7c000674, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmaddu",  "7,s,t",	0x7c000774, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmsub",   "7,s,t",	0x7c0006f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmsubu",  "7,s,t",	0x7c0007f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dmthlip", "s,7",	0x7c0007fc, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA,	0,		D64	},
2513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_sa.l.pw", "7,s,t", 0x7c000334, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_sa.l.w", "7,s,t", 0x7c000330, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_s.w.ph", "7,s,t", 0x7c000130, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaq_s.w.qh", "7,s,t", 0x7c000134, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.obl", "7,s,t",	0x7c0000f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.obr", "7,s,t",	0x7c0001f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.qbl", "7,s,t",	0x7c0000f0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpau.h.qbr", "7,s,t",	0x7c0001f0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_sa.l.pw", "7,s,t", 0x7c000374, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_sa.l.w", "7,s,t", 0x7c000370, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_s.w.ph", "7,s,t", 0x7c000170, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsq_s.w.qh", "7,s,t", 0x7c000174, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.obl", "7,s,t",	0x7c0002f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.obr", "7,s,t",	0x7c0003f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.qbl", "7,s,t",	0x7c0002f0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsu.h.qbr", "7,s,t",	0x7c0003f0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshilo",  "7,:",	0x7c0006bc, 0xfc07e7ff, MOD_a,			0,		D64	},
2530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dshilov", "7,s",	0x7c0006fc, 0xfc1fe7ff, MOD_a|RD_s,		0,		D64	},
2531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpdp",  "t,7,6",	0x7c0002b8, 0xfc00e7ff, WR_t|RD_a|DSP_VOLA,	0,		D32	},
2532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpdpv", "t,7,s",	0x7c0002f8, 0xfc00e7ff, WR_t|RD_a|RD_s|DSP_VOLA, 0,		D32	},
2533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extp",    "t,7,6",	0x7c0000b8, 0xfc00e7ff, WR_t|RD_a,		0,		D32	},
2534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extpv",   "t,7,s",	0x7c0000f8, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D32	},
2535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_rs.w", "t,7,6",	0x7c0001b8, 0xfc00e7ff, WR_t|RD_a,		0,		D32	},
2536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_r.w", "t,7,6",	0x7c000138, 0xfc00e7ff, WR_t|RD_a,		0,		D32	},
2537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr_s.h", "t,7,6",	0x7c0003b8, 0xfc00e7ff, WR_t|RD_a,		0,		D32	},
2538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_rs.w", "t,7,s",	0x7c0001f8, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D32	},
2539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_r.w", "t,7,s",	0x7c000178, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D32	},
2540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv_s.h", "t,7,s",	0x7c0003f8, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D32	},
2541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extrv.w", "t,7,s",	0x7c000078, 0xfc00e7ff, WR_t|RD_a|RD_s,		0,		D32	},
2542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"extr.w",  "t,7,6",	0x7c000038, 0xfc00e7ff, WR_t|RD_a,		0,		D32	},
2543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"insv",    "t,s",	0x7c00000c, 0xfc00ffff, WR_t|RD_s,		0,		D32	},
2544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lbux",    "d,t(b)",	0x7c00018a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b,	0,		D32	},
2545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"ldx",     "d,t(b)",	0x7c00020a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b,	0,		D64	},
2546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lhx",     "d,t(b)",	0x7c00010a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b,	0,		D32	},
2547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"lwx",     "d,t(b)",	0x7c00000a, 0xfc0007ff, LDD|WR_d|RD_t|RD_b,	0,		D32	},
2548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.phl", "7,s,t", 0x7c000430, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.phr", "7,s,t", 0x7c0004b0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhll", "7,s,t", 0x7c000434, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhlr", "7,s,t", 0x7c000474, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhrl", "7,s,t", 0x7c0004b4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_sa.w.qhrr", "7,s,t", 0x7c0004f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.l.pwl", "7,s,t", 0x7c000734, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.l.pwr", "7,s,t", 0x7c0007b4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.phl", "7,s,t", 0x7c000530, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.phr", "7,s,t", 0x7c0005b0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhll", "7,s,t", 0x7c000534, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhlr", "7,s,t", 0x7c000574, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhrl", "7,s,t", 0x7c0005b4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"maq_s.w.qhrr", "7,s,t", 0x7c0005f4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"modsub",  "d,s,t",	0x7c000490, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mthlip",  "s,7",	0x7c0007f8, 0xfc1fe7ff, RD_s|MOD_a|DSP_VOLA,	0,		D32	},
2564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.pw.qhl", "d,s,t", 0x7c000714, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D64	},
2565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.pw.qhr", "d,s,t", 0x7c000754, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D64	},
2566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.w.phl", "d,s,t", 0x7c000710, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D32	},
2567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleq_s.w.phr", "d,s,t", 0x7c000750, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D32	},
2568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.ph.qbl", "d,s,t", 0x7c000190, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D32	},
2569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.ph.qbr", "d,s,t", 0x7c0001d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D32	},
2570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.qh.obl", "d,s,t", 0x7c000194, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D64	},
2571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"muleu_s.qh.obr", "d,s,t", 0x7c0001d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,		D64	},
2572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.ph", "d,s,t",	0x7c0007d0, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO,	0,		D32	},
2573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.qh", "d,s,t",	0x7c0007d4, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO,	0,		D64	},
2574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.l.pw", "7,s,t", 0x7c0003b4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.w.ph", "7,s,t", 0x7c0001b0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D32	},
2576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsaq_s.w.qh", "7,s,t", 0x7c0001b4, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,		D64	},
2577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"packrl.ph", "d,s,t",	0x7c000391, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"packrl.pw", "d,s,t",	0x7c000395, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.ob", "d,s,t",	0x7c0000d5, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.ph", "d,s,t",	0x7c0002d1, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.pw", "d,s,t",	0x7c0004d5, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.qb", "d,s,t",	0x7c0000d1, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"pick.qh", "d,s,t",	0x7c0002d5, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhla", "d,t", 0x7c000396, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhl", "d,t", 0x7c000316, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhra", "d,t", 0x7c0003d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.pw.qhr", "d,t", 0x7c000356, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.s.l.pwl", "d,t", 0x7c000516, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.s.l.pwr", "d,t", 0x7c000556, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbla", "d,t", 0x7c000192, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbl", "d,t", 0x7c000112, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbra", "d,t", 0x7c0001d2, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.ph.qbr", "d,t", 0x7c000152, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhla", "d,t", 0x7c000196, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhl", "d,t", 0x7c000116, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhra", "d,t", 0x7c0001d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precequ.pw.qhr", "d,t", 0x7c000156, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.w.phl", "d,t",	0x7c000312, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceq.w.phr", "d,t",	0x7c000352, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbla", "d,t", 0x7c000792, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbl", "d,t", 0x7c000712, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbra", "d,t", 0x7c0007d2, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.ph.qbr", "d,t", 0x7c000752, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obla", "d,t", 0x7c000796, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obl", "d,t", 0x7c000716, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obra", "d,t", 0x7c0007d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"preceu.qh.obr", "d,t", 0x7c000756, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.ob.qh", "d,s,t", 0x7c000315, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.ph.w", "d,s,t", 0x7c000511, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.pw.l", "d,s,t", 0x7c000715, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.qb.ph", "d,s,t", 0x7c000311, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq.qh.pw", "d,s,t", 0x7c000515, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq_rs.ph.w", "d,s,t", 0x7c000551, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrq_rs.qh.pw", "d,s,t", 0x7c000555, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrqu_s.ob.qh", "d,s,t", 0x7c0003d5, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D64	},
2616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precrqu_s.qb.ph", "d,s,t", 0x7c0003d1, 0xfc0007ff, WR_d|RD_s|RD_t,	0,		D32	},
2617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"raddu.l.ob", "d,s",	0x7c000514, 0xfc1f07ff, WR_d|RD_s,		0,		D64	},
2618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"raddu.w.qb", "d,s",	0x7c000510, 0xfc1f07ff, WR_d|RD_s,		0,		D32	},
2619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rddsp",   "d",	0x7fff04b8, 0xffff07ff, WR_d,			0,		D32	},
2620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"rddsp",   "d,'",	0x7c0004b8, 0xffc007ff, WR_d,			0,		D32	},
2621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.ob", "d,5",	0x7c000096, 0xff0007ff, WR_d,			0,		D64	},
2622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.ph", "d,@",	0x7c000292, 0xfc0007ff, WR_d,			0,		D32	},
2623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.pw", "d,@",	0x7c000496, 0xfc0007ff, WR_d,			0,		D64	},
2624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.qb", "d,5",	0x7c000092, 0xff0007ff, WR_d,			0,		D32	},
2625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"repl.qh", "d,@",	0x7c000296, 0xfc0007ff, WR_d,			0,		D64	},
2626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.ob", "d,t",	0x7c0000d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.ph", "d,t",	0x7c0002d2, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.pw", "d,t",	0x7c0004d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.qb", "d,t",	0x7c0000d2, 0xffe007ff, WR_d|RD_t,		0,		D32	},
2630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"replv.qh", "d,t",	0x7c0002d6, 0xffe007ff, WR_d|RD_t,		0,		D64	},
2631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shilo",   "7,0",	0x7c0006b8, 0xfc0fe7ff, MOD_a,			0,		D32	},
2632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shilov",  "7,s",	0x7c0006f8, 0xfc1fe7ff, MOD_a|RD_s,		0,		D32	},
2633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.ob", "d,t,3",	0x7c000017, 0xff0007ff, WR_d|RD_t,		0,		D64	},
2634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.ph", "d,t,4",	0x7c000213, 0xfe0007ff, WR_d|RD_t,		0,		D32	},
2635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.pw", "d,t,6",	0x7c000417, 0xfc0007ff, WR_d|RD_t,		0,		D64	},
2636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.qb", "d,t,3",	0x7c000013, 0xff0007ff, WR_d|RD_t,		0,		D32	},
2637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll.qh", "d,t,4",	0x7c000217, 0xfe0007ff, WR_d|RD_t,		0,		D64	},
2638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.ph", "d,t,4",	0x7c000313, 0xfe0007ff, WR_d|RD_t,		0,		D32	},
2639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.pw", "d,t,6",	0x7c000517, 0xfc0007ff, WR_d|RD_t,		0,		D64	},
2640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.qh", "d,t,4",	0x7c000317, 0xfe0007ff, WR_d|RD_t,		0,		D64	},
2641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shll_s.w", "d,t,6",	0x7c000513, 0xfc0007ff, WR_d|RD_t,		0,		D32	},
2642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.ob", "d,t,s",	0x7c000097, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.ph", "d,t,s",	0x7c000293, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.pw", "d,t,s",	0x7c000497, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.qb", "d,t,s",	0x7c000093, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv.qh", "d,t,s",	0x7c000297, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.ph", "d,t,s",	0x7c000393, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.pw", "d,t,s",	0x7c000597, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.qh", "d,t,s",	0x7c000397, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shllv_s.w", "d,t,s",	0x7c000593, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.ph", "d,t,4",	0x7c000253, 0xfe0007ff, WR_d|RD_t,		0,		D32	},
2652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.pw", "d,t,6",	0x7c000457, 0xfc0007ff, WR_d|RD_t,		0,		D64	},
2653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.qh", "d,t,4",	0x7c000257, 0xfe0007ff, WR_d|RD_t,		0,		D64	},
2654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.ph", "d,t,4",	0x7c000353, 0xfe0007ff, WR_d|RD_t,		0,		D32	},
2655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.pw", "d,t,6",	0x7c000557, 0xfc0007ff, WR_d|RD_t,		0,		D64	},
2656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.qh", "d,t,4",	0x7c000357, 0xfe0007ff, WR_d|RD_t,		0,		D64	},
2657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.w", "d,t,6",	0x7c000553, 0xfc0007ff, WR_d|RD_t,		0,		D32	},
2658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.ph", "d,t,s",	0x7c0002d3, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.pw", "d,t,s",	0x7c0004d7, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.qh", "d,t,s",	0x7c0002d7, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.ph", "d,t,s",	0x7c0003d3, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.pw", "d,t,s",	0x7c0005d7, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.qh", "d,t,s",	0x7c0003d7, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.w", "d,t,s",	0x7c0005d3, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.ob", "d,t,3",	0x7c000057, 0xff0007ff, WR_d|RD_t,		0,		D64	},
2666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.qb", "d,t,3",	0x7c000053, 0xff0007ff, WR_d|RD_t,		0,		D32	},
2667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.ob", "d,t,s",	0x7c0000d7, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.qb", "d,t,s",	0x7c0000d3, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.ph", "d,s,t",	0x7c0002d0, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.pw", "d,s,t",	0x7c0004d4, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq.qh", "d,s,t",	0x7c0002d4, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.ph", "d,s,t",	0x7c0003d0, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.pw", "d,s,t",	0x7c0005d4, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.qh", "d,s,t",	0x7c0003d4, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subq_s.w", "d,s,t",	0x7c0005d0, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.ob", "d,s,t",	0x7c000054, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.qb", "d,s,t",	0x7c000050, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.ob", "d,s,t",	0x7c000154, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D64	},
2679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.qb", "d,s,t",	0x7c000150, 0xfc0007ff, WR_d|RD_s|RD_t,		0,		D32	},
2680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrdsp",   "s",	0x7c1ffcf8, 0xfc1fffff, RD_s|DSP_VOLA,		0,		D32	},
2681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"wrdsp",   "s,8",	0x7c0004f8, 0xfc1e07ff, RD_s|DSP_VOLA,		0,		D32	},
2682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* MIPS DSP ASE Rev2 */
2683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"absq_s.qb", "d,t",	0x7c000052, 0xffe007ff, WR_d|RD_t,              0,              D33	},
2684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu.ph", "d,s,t",	0x7c000210, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addu_s.ph", "d,s,t",	0x7c000310, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adduh.qb", "d,s,t",	0x7c000018, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"adduh_r.qb", "d,s,t",	0x7c000098, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"append",  "t,s,h",	0x7c000031, 0xfc0007ff, WR_t|RD_t|RD_s,         0,              D33	},
2689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"balign",  "t,s,I",	0,    (int) M_BALIGN,	INSN_MACRO,             0,              D33	},
2690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"balign",  "t,s,2",	0x7c000431, 0xfc00e7ff, WR_t|RD_t|RD_s,         0,              D33	},
2691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.eq.qb", "d,s,t", 0x7c000611, 0xfc0007ff, WR_d|RD_s|RD_t,       0,              D33	},
2692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.lt.qb", "d,s,t", 0x7c000651, 0xfc0007ff, WR_d|RD_s|RD_t,       0,              D33	},
2693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"cmpgdu.le.qb", "d,s,t", 0x7c000691, 0xfc0007ff, WR_d|RD_s|RD_t,       0,              D33	},
2694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpa.w.ph", "7,s,t",	0x7c000030, 0xfc00e7ff, MOD_a|RD_s|RD_t,        0,              D33	},
2695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dps.w.ph", "7,s,t",	0x7c000070, 0xfc00e7ff, MOD_a|RD_s|RD_t,        0,              D33	},
2696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul.ph",  "d,s,t",	0x7c000318, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,              D33	},
2697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mul_s.ph", "d,s,t",	0x7c000398, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,              D33	},
2698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_rs.w", "d,s,t",	0x7c0005d8, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,              D33	},
2699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_s.ph", "d,s,t",	0x7c000790, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,              D33	},
2700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulq_s.w", "d,s,t",	0x7c000598, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, 0,              D33	},
2701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"mulsa.w.ph", "7,s,t",	0x7c0000b0, 0xfc00e7ff, MOD_a|RD_s|RD_t,        0,              D33	},
2702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr.qb.ph", "d,s,t", 0x7c000351, 0xfc0007ff, WR_d|RD_s|RD_t,        0,              D33	},
2703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr_sra.ph.w", "t,s,h", 0x7c000791, 0xfc0007ff, WR_t|RD_t|RD_s,     0,              D33	},
2704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"precr_sra_r.ph.w", "t,s,h", 0x7c0007d1, 0xfc0007ff, WR_t|RD_t|RD_s,   0,              D33	},
2705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"prepend", "t,s,h",	0x7c000071, 0xfc0007ff, WR_t|RD_t|RD_s,         0,              D33	},
2706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra.qb", "d,t,3",	0x7c000113, 0xff0007ff, WR_d|RD_t,              0,              D33	},
2707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shra_r.qb", "d,t,3",	0x7c000153, 0xff0007ff, WR_d|RD_t,              0,              D33	},
2708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav.qb", "d,t,s",	0x7c000193, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrav_r.qb", "d,t,s",	0x7c0001d3, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrl.ph", "d,t,4",	0x7c000653, 0xfe0007ff, WR_d|RD_t,              0,              D33	},
2711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"shrlv.ph", "d,t,s",	0x7c0006d3, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu.ph", "d,s,t",	0x7c000250, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subu_s.ph", "d,s,t",	0x7c000350, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subuh.qb", "d,s,t",	0x7c000058, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subuh_r.qb", "d,s,t",	0x7c0000d8, 0xfc0007ff, WR_d|RD_s|RD_t,         0,              D33	},
2716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh.ph", "d,s,t",	0x7c000218, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh_r.ph", "d,s,t",	0x7c000298, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh.w", "d,s,t",	0x7c000418, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"addqh_r.w", "d,s,t",	0x7c000498, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh.ph", "d,s,t",	0x7c000258, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh_r.ph", "d,s,t",	0x7c0002d8, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh.w", "d,s,t",	0x7c000458, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"subqh_r.w", "d,s,t",	0x7c0004d8, 0xfc0007ff, WR_d|RD_s|RD_t,		0,              D33	},
2724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpax.w.ph", "7,s,t",	0x7c000230, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsx.w.ph", "7,s,t",	0x7c000270, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaqx_s.w.ph", "7,s,t", 0x7c000630, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpaqx_sa.w.ph", "7,s,t", 0x7c0006b0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsqx_s.w.ph", "7,s,t", 0x7c000670, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"dpsqx_sa.w.ph", "7,s,t", 0x7c0006f0, 0xfc00e7ff, MOD_a|RD_s|RD_t,	0,              D33	},
2730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Move bc0* after mftr and mttr to avoid opcode collision.  */
2731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0f",    "p",	0x41000000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0fl",   "p",	0x41020000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
2733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0t",    "p",	0x41010000, 0xffff0000,	CBD|RD_CC,		0,		I1	},
2734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{"bc0tl",   "p",	0x41030000, 0xffff0000,	CBL|RD_CC,		0,		I2|T3	},
27355aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner/* ST Microelectronics Loongson-2E and -2F.  */
27365aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mult.g",	"d,s,t",	0x7c000018,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27375aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mult.g",	"d,s,t",	0x70000010,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27385aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"multu.g",	"d,s,t",	0x7c000019,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27395aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"multu.g",	"d,s,t",	0x70000012,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27405aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmult.g",	"d,s,t",	0x7c00001c,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27415aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmult.g",	"d,s,t",	0x70000011,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27425aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmultu.g",	"d,s,t",	0x7c00001d,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27435aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmultu.g",	"d,s,t",	0x70000013,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27445aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"div.g",	"d,s,t",	0x7c00001a,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27455aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"div.g",	"d,s,t",	0x70000014,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27465aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"divu.g",	"d,s,t",	0x7c00001b,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27475aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"divu.g",	"d,s,t",	0x70000016,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27485aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddiv.g",	"d,s,t",	0x7c00001e,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27495aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddiv.g",	"d,s,t",	0x70000015,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27505aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddivu.g",	"d,s,t",	0x7c00001f,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27515aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"ddivu.g",	"d,s,t",	0x70000017,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27525aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mod.g",	"d,s,t",	0x7c000022,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27535aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"mod.g",	"d,s,t",	0x7000001c,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27545aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"modu.g",	"d,s,t",	0x7c000023,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27555aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"modu.g",	"d,s,t",	0x7000001e,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27565aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmod.g",	"d,s,t",	0x7c000026,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27575aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmod.g",	"d,s,t",	0x7000001d,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
27585aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmodu.g",	"d,s,t",	0x7c000027,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2E	},
27595aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner{"dmodu.g",	"d,s,t",	0x7000001f,	0xfc0007ff,	RD_s|RD_t|WR_d,	0,	IL2F	},
2760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define MIPS_NUM_OPCODES \
2763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	((sizeof mips_builtin_opcodes) / (sizeof (mips_builtin_opcodes[0])))
2764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliconst int bfd_mips_num_builtin_opcodes = MIPS_NUM_OPCODES;
2765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* const removed from the following to allow for dynamic extensions to the
2767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli * built-in instruction set. */
2768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_opcode *mips_opcodes =
2769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  (struct mips_opcode *) mips_builtin_opcodes;
2770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint bfd_mips_num_opcodes = MIPS_NUM_OPCODES;
2771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#undef MIPS_NUM_OPCODES
2772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Mips instructions are at maximum this many bytes long.  */
2774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define INSNLEN 4
2775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* FIXME: These should be shared with gdb somehow.  */
2778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_cp0sel_name
2780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int cp0reg;
2782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int sel;
2783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char * const name;
2784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* The mips16 registers.  */
2787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const unsigned int mips16_to_32_reg_map[] =
2788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  16, 17, 2, 3, 4, 5, 6, 7
2790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define mips16_reg_names(rn)	mips_gpr_names[mips16_to_32_reg_map[rn]]
2793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_numeric[32] =
2796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$0",   "$1",   "$2",   "$3",   "$4",   "$5",   "$6",   "$7",
2798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$8",   "$9",   "$10",  "$11",  "$12",  "$13",  "$14",  "$15",
2799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$16",  "$17",  "$18",  "$19",  "$20",  "$21",  "$22",  "$23",
2800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$24",  "$25",  "$26",  "$27",  "$28",  "$29",  "$30",  "$31"
2801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_oldabi[32] =
2804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "zero", "at",   "v0",   "v1",   "a0",   "a1",   "a2",   "a3",
2806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "t0",   "t1",   "t2",   "t3",   "t4",   "t5",   "t6",   "t7",
2807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "s0",   "s1",   "s2",   "s3",   "s4",   "s5",   "s6",   "s7",
2808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "t8",   "t9",   "k0",   "k1",   "gp",   "sp",   "s8",   "ra"
2809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_gpr_names_newabi[32] =
2812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "zero", "at",   "v0",   "v1",   "a0",   "a1",   "a2",   "a3",
2814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "a4",   "a5",   "a6",   "a7",   "t0",   "t1",   "t2",   "t3",
2815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "s0",   "s1",   "s2",   "s3",   "s4",   "s5",   "s6",   "s7",
2816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "t8",   "t9",   "k0",   "k1",   "gp",   "sp",   "s8",   "ra"
2817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_numeric[32] =
2820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$f0",  "$f1",  "$f2",  "$f3",  "$f4",  "$f5",  "$f6",  "$f7",
2822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$f8",  "$f9",  "$f10", "$f11", "$f12", "$f13", "$f14", "$f15",
2823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$f16", "$f17", "$f18", "$f19", "$f20", "$f21", "$f22", "$f23",
2824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$f24", "$f25", "$f26", "$f27", "$f28", "$f29", "$f30", "$f31"
2825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_32[32] =
2828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fv0",  "fv0f", "fv1",  "fv1f", "ft0",  "ft0f", "ft1",  "ft1f",
2830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "ft2",  "ft2f", "ft3",  "ft3f", "fa0",  "fa0f", "fa1",  "fa1f",
2831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "ft4",  "ft4f", "ft5",  "ft5f", "fs0",  "fs0f", "fs1",  "fs1f",
2832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fs2",  "fs2f", "fs3",  "fs3f", "fs4",  "fs4f", "fs5",  "fs5f"
2833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_n32[32] =
2836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fv0",  "ft14", "fv1",  "ft15", "ft0",  "ft1",  "ft2",  "ft3",
2838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "ft4",  "ft5",  "ft6",  "ft7",  "fa0",  "fa1",  "fa2",  "fa3",
2839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fa4",  "fa5",  "fa6",  "fa7",  "fs0",  "ft8",  "fs1",  "ft9",
2840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fs2",  "ft10", "fs3",  "ft11", "fs4",  "ft12", "fs5",  "ft13"
2841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_fpr_names_64[32] =
2844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fv0",  "ft12", "fv1",  "ft13", "ft0",  "ft1",  "ft2",  "ft3",
2846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "ft4",  "ft5",  "ft6",  "ft7",  "fa0",  "fa1",  "fa2",  "fa3",
2847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fa4",  "fa5",  "fa6",  "fa7",  "ft8",  "ft9",  "ft10", "ft11",
2848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "fs0",  "fs1",  "fs2",  "fs3",  "fs4",  "fs5",  "fs6",  "fs7"
2849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_numeric[32] =
2852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$0",   "$1",   "$2",   "$3",   "$4",   "$5",   "$6",   "$7",
2854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$8",   "$9",   "$10",  "$11",  "$12",  "$13",  "$14",  "$15",
2855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$16",  "$17",  "$18",  "$19",  "$20",  "$21",  "$22",  "$23",
2856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$24",  "$25",  "$26",  "$27",  "$28",  "$29",  "$30",  "$31"
2857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_mips3264[32] =
2860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_index",     "c0_random",    "c0_entrylo0",  "c0_entrylo1",
2862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_context",   "c0_pagemask",  "c0_wired",     "$7",
2863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_badvaddr",  "c0_count",     "c0_entryhi",   "c0_compare",
2864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_status",    "c0_cause",     "c0_epc",       "c0_prid",
2865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_config",    "c0_lladdr",    "c0_watchlo",   "c0_watchhi",
2866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_xcontext",  "$21",          "$22",          "c0_debug",
2867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_depc",      "c0_perfcnt",   "c0_errctl",    "c0_cacheerr",
2868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_taglo",     "c0_taghi",     "c0_errorepc",  "c0_desave",
2869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_mips3264[] =
2872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  4, 1, "c0_contextconfig"	},
2874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  0, 1, "c0_mvpcontrol"	},
2875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  0, 2, "c0_mvpconf0"	},
2876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  0, 3, "c0_mvpconf1"	},
2877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 1, "c0_vpecontrol"	},
2878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 2, "c0_vpeconf0"	},
2879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 3, "c0_vpeconf1"	},
2880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 4, "c0_yqmask"		},
2881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 5, "c0_vpeschedule"	},
2882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  1, 6, "c0_vpeschefback"	},
2883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 1, "c0_tcstatus"	},
2884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 2, "c0_tcbind"		},
2885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 3, "c0_tcrestart"	},
2886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 4, "c0_tchalt"		},
2887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 5, "c0_tccontext"	},
2888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 6, "c0_tcschedule"	},
2889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  2, 7, "c0_tcschefback"	},
2890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  5, 1, "c0_pagegrain"	},
2891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  6, 1, "c0_srsconf0"	},
2892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  6, 2, "c0_srsconf1"	},
2893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  6, 3, "c0_srsconf2"	},
2894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  6, 4, "c0_srsconf3"	},
2895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  6, 5, "c0_srsconf4"	},
2896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 1, "c0_intctl"		},
2897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 2, "c0_srsctl"		},
2898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 3, "c0_srsmap"		},
2899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 15, 1, "c0_ebase"		},
2900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 1, "c0_config1"		},
2901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 2, "c0_config2"		},
2902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 3, "c0_config3"		},
2903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 1, "c0_watchlo,1"	},
2904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 2, "c0_watchlo,2"	},
2905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 3, "c0_watchlo,3"	},
2906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 4, "c0_watchlo,4"	},
2907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 5, "c0_watchlo,5"	},
2908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 6, "c0_watchlo,6"	},
2909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 7, "c0_watchlo,7"	},
2910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 1, "c0_watchhi,1"	},
2911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 2, "c0_watchhi,2"	},
2912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 3, "c0_watchhi,3"	},
2913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 4, "c0_watchhi,4"	},
2914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 5, "c0_watchhi,5"	},
2915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 6, "c0_watchhi,6"	},
2916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 7, "c0_watchhi,7"	},
2917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 1, "c0_tracecontrol"	},
2918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 2, "c0_tracecontrol2"	},
2919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 3, "c0_usertracedata"	},
2920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 4, "c0_tracebpc"	},
2921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 1, "c0_perfcnt,1"	},
2922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 2, "c0_perfcnt,2"	},
2923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 3, "c0_perfcnt,3"	},
2924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 4, "c0_perfcnt,4"	},
2925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 5, "c0_perfcnt,5"	},
2926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 6, "c0_perfcnt,6"	},
2927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 7, "c0_perfcnt,7"	},
2928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 1, "c0_cacheerr,1"	},
2929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 2, "c0_cacheerr,2"	},
2930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 3, "c0_cacheerr,3"	},
2931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 1, "c0_datalo"		},
2932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 2, "c0_taglo1"		},
2933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 3, "c0_datalo1"		},
2934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 4, "c0_taglo2"		},
2935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 5, "c0_datalo2"		},
2936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 6, "c0_taglo3"		},
2937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 7, "c0_datalo3"		},
2938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 1, "c0_datahi"		},
2939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 2, "c0_taghi1"		},
2940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 3, "c0_datahi1"		},
2941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 4, "c0_taghi2"		},
2942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 5, "c0_datahi2"		},
2943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 6, "c0_taghi3"		},
2944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 7, "c0_datahi3"		},
2945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_mips3264r2[32] =
2948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_index",     "c0_random",    "c0_entrylo0",  "c0_entrylo1",
2950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_context",   "c0_pagemask",  "c0_wired",     "c0_hwrena",
2951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_badvaddr",  "c0_count",     "c0_entryhi",   "c0_compare",
2952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_status",    "c0_cause",     "c0_epc",       "c0_prid",
2953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_config",    "c0_lladdr",    "c0_watchlo",   "c0_watchhi",
2954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_xcontext",  "$21",          "$22",          "c0_debug",
2955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_depc",      "c0_perfcnt",   "c0_errctl",    "c0_cacheerr",
2956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_taglo",     "c0_taghi",     "c0_errorepc",  "c0_desave",
2957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
2958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
2959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_mips3264r2[] =
2960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
2961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  4, 1, "c0_contextconfig"	},
2962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  {  5, 1, "c0_pagegrain"	},
2963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 1, "c0_intctl"		},
2964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 2, "c0_srsctl"		},
2965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 12, 3, "c0_srsmap"		},
2966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 15, 1, "c0_ebase"		},
2967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 1, "c0_config1"		},
2968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 2, "c0_config2"		},
2969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 3, "c0_config3"		},
2970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 1, "c0_watchlo,1"	},
2971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 2, "c0_watchlo,2"	},
2972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 3, "c0_watchlo,3"	},
2973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 4, "c0_watchlo,4"	},
2974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 5, "c0_watchlo,5"	},
2975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 6, "c0_watchlo,6"	},
2976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 7, "c0_watchlo,7"	},
2977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 1, "c0_watchhi,1"	},
2978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 2, "c0_watchhi,2"	},
2979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 3, "c0_watchhi,3"	},
2980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 4, "c0_watchhi,4"	},
2981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 5, "c0_watchhi,5"	},
2982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 6, "c0_watchhi,6"	},
2983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 7, "c0_watchhi,7"	},
2984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 1, "c0_tracecontrol"	},
2985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 2, "c0_tracecontrol2"	},
2986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 3, "c0_usertracedata"	},
2987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 4, "c0_tracebpc"	},
2988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 1, "c0_perfcnt,1"	},
2989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 2, "c0_perfcnt,2"	},
2990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 3, "c0_perfcnt,3"	},
2991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 4, "c0_perfcnt,4"	},
2992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 5, "c0_perfcnt,5"	},
2993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 6, "c0_perfcnt,6"	},
2994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 7, "c0_perfcnt,7"	},
2995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 1, "c0_cacheerr,1"	},
2996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 2, "c0_cacheerr,2"	},
2997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 3, "c0_cacheerr,3"	},
2998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 1, "c0_datalo"		},
2999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 2, "c0_taglo1"		},
3000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 3, "c0_datalo1"		},
3001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 4, "c0_taglo2"		},
3002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 5, "c0_datalo2"		},
3003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 6, "c0_taglo3"		},
3004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 7, "c0_datalo3"		},
3005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 1, "c0_datahi"		},
3006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 2, "c0_taghi1"		},
3007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 3, "c0_datahi1"		},
3008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 4, "c0_taghi2"		},
3009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 5, "c0_datahi2"		},
3010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 6, "c0_taghi3"		},
3011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 7, "c0_datahi3"		},
3012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* SB-1: MIPS64 (mips_cp0_names_mips3264) with minor mods.  */
3015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_cp0_names_sb1[32] =
3016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_index",     "c0_random",    "c0_entrylo0",  "c0_entrylo1",
3018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_context",   "c0_pagemask",  "c0_wired",     "$7",
3019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_badvaddr",  "c0_count",     "c0_entryhi",   "c0_compare",
3020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_status",    "c0_cause",     "c0_epc",       "c0_prid",
3021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_config",    "c0_lladdr",    "c0_watchlo",   "c0_watchhi",
3022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_xcontext",  "$21",          "$22",          "c0_debug",
3023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_depc",      "c0_perfcnt",   "c0_errctl",    "c0_cacheerr_i",
3024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "c0_taglo_i",   "c0_taghi_i",   "c0_errorepc",  "c0_desave",
3025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name mips_cp0sel_names_sb1[] =
3028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 16, 1, "c0_config1"		},
3030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 18, 1, "c0_watchlo,1"	},
3031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 19, 1, "c0_watchhi,1"	},
3032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 22, 0, "c0_perftrace"	},
3033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 23, 3, "c0_edebug"		},
3034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 1, "c0_perfcnt,1"	},
3035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 2, "c0_perfcnt,2"	},
3036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 3, "c0_perfcnt,3"	},
3037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 4, "c0_perfcnt,4"	},
3038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 5, "c0_perfcnt,5"	},
3039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 6, "c0_perfcnt,6"	},
3040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 25, 7, "c0_perfcnt,7"	},
3041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 26, 1, "c0_buserr_pa"	},
3042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 1, "c0_cacheerr_d"	},
3043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 27, 3, "c0_cacheerr_d_pa"	},
3044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 1, "c0_datalo_i"	},
3045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 2, "c0_taglo_d"		},
3046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 28, 3, "c0_datalo_d"	},
3047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 1, "c0_datahi_i"	},
3048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 2, "c0_taghi_d"		},
3049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { 29, 3, "c0_datahi_d"	},
3050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_hwr_names_numeric[32] =
3053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$0",   "$1",   "$2",   "$3",   "$4",   "$5",   "$6",   "$7",
3055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$8",   "$9",   "$10",  "$11",  "$12",  "$13",  "$14",  "$15",
3056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$16",  "$17",  "$18",  "$19",  "$20",  "$21",  "$22",  "$23",
3057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$24",  "$25",  "$26",  "$27",  "$28",  "$29",  "$30",  "$31"
3058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const mips_hwr_names_mips3264r2[32] =
3061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "hwr_cpunum",   "hwr_synci_step", "hwr_cc",     "hwr_ccres",
3063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$4",          "$5",            "$6",           "$7",
3064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$8",   "$9",   "$10",  "$11",  "$12",  "$13",  "$14",  "$15",
3065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$16",  "$17",  "$18",  "$19",  "$20",  "$21",  "$22",  "$23",
3066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  "$24",  "$25",  "$26",  "$27",  "$28",  "$29",  "$30",  "$31"
3067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_abi_choice
3070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *name;
3072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char * const *gpr_names;
3073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char * const *fpr_names;
3074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
30765aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turnerstatic struct mips_abi_choice mips_abi_choices[] =
3077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "numeric", mips_gpr_names_numeric, mips_fpr_names_numeric },
3079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "32", mips_gpr_names_oldabi, mips_fpr_names_32 },
3080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "n32", mips_gpr_names_newabi, mips_fpr_names_n32 },
3081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "64", mips_gpr_names_newabi, mips_fpr_names_64 },
3082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistruct mips_arch_choice
3085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *name;
3087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int bfd_mach_valid;
3088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned long bfd_mach;
3089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int processor;
3090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int isa;
3091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char * const *cp0_names;
3092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_cp0sel_name *cp0sel_names;
3093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int cp0sel_names_len;
3094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char * const *hwr_names;
3095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips3000              3000
3098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips3900              3900
3099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4000              4000
3100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4010              4010
3101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4100              4100
3102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4111              4111
3103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4120              4120
3104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4300              4300
3105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4400              4400
3106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4600              4600
3107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips4650              4650
3108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5000              5000
3109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5400              5400
3110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5500              5500
3111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips6000              6000
3112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips7000              7000
3113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips8000              8000
3114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips9000              9000
3115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips10000             10000
3116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips12000             12000
3117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips16                16
3118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips5                 5
3119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
3120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa32             32
3121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa32r2           33
3122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa64             64
3123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#define bfd_mach_mipsisa64r2           65
3124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
31255aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turnerstatic const struct mips_arch_choice mips_arch_choices[] =
3126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "numeric",	0, 0, 0, 0,
3128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r3000",	1, bfd_mach_mips3000, CPU_R3000, ISA_MIPS1,
3131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r3900",	1, bfd_mach_mips3900, CPU_R3900, ISA_MIPS1,
3133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4000",	1, bfd_mach_mips4000, CPU_R4000, ISA_MIPS3,
3135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4010",	1, bfd_mach_mips4010, CPU_R4010, ISA_MIPS2,
3137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "vr4100",	1, bfd_mach_mips4100, CPU_VR4100, ISA_MIPS3,
3139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "vr4111",	1, bfd_mach_mips4111, CPU_R4111, ISA_MIPS3,
3141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "vr4120",	1, bfd_mach_mips4120, CPU_VR4120, ISA_MIPS3,
3143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4300",	1, bfd_mach_mips4300, CPU_R4300, ISA_MIPS3,
3145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4400",	1, bfd_mach_mips4400, CPU_R4400, ISA_MIPS3,
3147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4600",	1, bfd_mach_mips4600, CPU_R4600, ISA_MIPS3,
3149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r4650",	1, bfd_mach_mips4650, CPU_R4650, ISA_MIPS3,
3151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r5000",	1, bfd_mach_mips5000, CPU_R5000, ISA_MIPS4,
3153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "vr5400",	1, bfd_mach_mips5400, CPU_VR5400, ISA_MIPS4,
3155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "vr5500",	1, bfd_mach_mips5500, CPU_VR5500, ISA_MIPS4,
3157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r6000",	1, bfd_mach_mips6000, CPU_R6000, ISA_MIPS2,
3159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "rm7000",	1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4,
3161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "rm9000",	1, bfd_mach_mips7000, CPU_RM7000, ISA_MIPS4,
3163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r8000",	1, bfd_mach_mips8000, CPU_R8000, ISA_MIPS4,
3165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r10000",	1, bfd_mach_mips10000, CPU_R10000, ISA_MIPS4,
3167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "r12000",	1, bfd_mach_mips12000, CPU_R12000, ISA_MIPS4,
3169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "mips5",	1, bfd_mach_mips5, CPU_MIPS5, ISA_MIPS5,
3171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* For stock MIPS32, disassemble all applicable MIPS-specified ASEs.
3174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     Note that MIPS-3D and MDMX are not applicable to MIPS32.  (See
3175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     _MIPS32 Architecture For Programmers Volume I: Introduction to the
3176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     MIPS32 Architecture_ (MIPS Document Number MD00082, Revision 0.95),
3177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     page 1.  */
3178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "mips32",	1, bfd_mach_mipsisa32, CPU_MIPS32,
3179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    ISA_MIPS32 | INSN_MIPS16 | INSN_SMARTMIPS,
3180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_mips3264,
3181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264),
3182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_hwr_names_numeric },
3183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "mips32r2",	1, bfd_mach_mipsisa32r2, CPU_MIPS32R2,
3185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    (ISA_MIPS32R2 | INSN_MIPS16 | INSN_SMARTMIPS | INSN_DSP | INSN_DSPR2
3186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     | INSN_MIPS3D | INSN_MT),
3187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_mips3264r2,
3188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
3189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_hwr_names_mips3264r2 },
3190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* For stock MIPS64, disassemble all applicable MIPS-specified ASEs.  */
3192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "mips64",	1, bfd_mach_mipsisa64, CPU_MIPS64,
3193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    ISA_MIPS64 | INSN_MIPS16 | INSN_MIPS3D | INSN_MDMX,
3194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_mips3264,
3195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0sel_names_mips3264, ARRAY_SIZE (mips_cp0sel_names_mips3264),
3196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_hwr_names_numeric },
3197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "mips64r2",	1, bfd_mach_mipsisa64r2, CPU_MIPS64R2,
3199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    (ISA_MIPS64R2 | INSN_MIPS16 | INSN_MIPS3D | INSN_DSP | INSN_DSPR2
3200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     | INSN_DSP64 | INSN_MT | INSN_MDMX),
3201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_mips3264r2,
3202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0sel_names_mips3264r2, ARRAY_SIZE (mips_cp0sel_names_mips3264r2),
3203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_hwr_names_mips3264r2 },
3204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "sb1",	1, bfd_mach_mips_sb1, CPU_SB1,
3206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    ISA_MIPS64 | INSN_MIPS3D | INSN_SB1,
3207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_sb1,
3208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0sel_names_sb1, ARRAY_SIZE (mips_cp0sel_names_sb1),
3209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_hwr_names_numeric },
3210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* This entry, mips16, is here only for ISA/processor selection; do
3212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     not print its name.  */
3213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  { "",		1, bfd_mach_mips16, CPU_MIPS16, ISA_MIPS3 | INSN_MIPS16,
3214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    mips_cp0_names_numeric, NULL, 0, mips_hwr_names_numeric },
3215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli};
3216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* ISA and processor type to disassemble for, and register names to use.
3218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   set_default_mips_dis_options and parse_mips_dis_options fill in these
3219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   values.  */
3220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_processor;
3221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_isa;
3222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_gpr_names;
3223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_fpr_names;
3224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_cp0_names;
3225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name *mips_cp0sel_names;
3226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int mips_cp0sel_names_len;
3227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const char * const *mips_hwr_names;
3228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Other options */
3230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int no_aliases;	/* If set disassemble as most general inst.  */
3231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_abi_choice *
3233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_abi_by_name (const char *name, unsigned int namelen)
3234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_abi_choice *c;
3236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i;
3237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0, c = NULL; i < ARRAY_SIZE (mips_abi_choices) && c == NULL; i++)
3239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    if (strncmp (mips_abi_choices[i].name, name, namelen) == 0
3240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	&& strlen (mips_abi_choices[i].name) == namelen)
3241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      c = &mips_abi_choices[i];
3242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return c;
3244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_arch_choice *
3247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_arch_by_name (const char *name, unsigned int namelen)
3248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_arch_choice *c = NULL;
3250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i;
3251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++)
3253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    if (strncmp (mips_arch_choices[i].name, name, namelen) == 0
3254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	&& strlen (mips_arch_choices[i].name) == namelen)
3255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      c = &mips_arch_choices[i];
3256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return c;
3258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_arch_choice *
3261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallichoose_arch_by_number (unsigned long mach)
3262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  static unsigned long hint_bfd_mach;
3264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  static const struct mips_arch_choice *hint_arch_choice;
3265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_arch_choice *c;
3266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i;
3267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* We optimize this because even if the user specifies no
3269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     flags, this will be done for every instruction!  */
3270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (hint_bfd_mach == mach
3271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && hint_arch_choice != NULL
3272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && hint_arch_choice->bfd_mach == hint_bfd_mach)
3273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return hint_arch_choice;
3274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0, c = NULL; i < ARRAY_SIZE (mips_arch_choices) && c == NULL; i++)
3276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (mips_arch_choices[i].bfd_mach_valid
3278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  && mips_arch_choices[i].bfd_mach == mach)
3279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  c = &mips_arch_choices[i];
3281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  hint_bfd_mach = mach;
3282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  hint_arch_choice = c;
3283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return c;
3286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void
3289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliset_default_mips_dis_options (struct disassemble_info *info)
3290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_arch_choice *chosen_arch;
3292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Defaults: mipsIII/r3000 (?!), (o)32-style ("oldabi") GPR names,
3294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     and numeric FPR, CP0 register, and HWR names.  */
3295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_isa = ISA_MIPS3;
3296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_processor =  CPU_R3000;
3297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_gpr_names = mips_gpr_names_oldabi;
3298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_fpr_names = mips_fpr_names_numeric;
3299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_cp0_names = mips_cp0_names_numeric;
3300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_cp0sel_names = NULL;
3301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_cp0sel_names_len = 0;
3302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_hwr_names = mips_hwr_names_numeric;
3303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  no_aliases = 0;
3304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* If an ELF "newabi" binary, use the n32/(n)64 GPR names.  */
3306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0
3307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (info->flavour == bfd_target_elf_flavour && info->section != NULL)
3308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      Elf_Internal_Ehdr *header;
3310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      header = elf_elfheader (info->section->owner);
3312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (is_newabi (header))
3313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	mips_gpr_names = mips_gpr_names_newabi;
3314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
3316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Set ISA, architecture, and cp0 register names as best we can.  */
3318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if !defined(SYMTAB_AVAILABLE) && 0
3319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* This is running out on a target machine, not in a host tool.
3320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     FIXME: Where does mips_target_info come from?  */
3321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  target_processor = mips_target_info.processor;
3322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  mips_isa = mips_target_info.isa;
3323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#else
3324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  chosen_arch = choose_arch_by_number (info->mach);
3325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (chosen_arch != NULL)
3326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_processor = chosen_arch->processor;
3328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_isa = chosen_arch->isa;
3329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_cp0_names = chosen_arch->cp0_names;
3330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_cp0sel_names = chosen_arch->cp0sel_names;
3331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_cp0sel_names_len = chosen_arch->cp0sel_names_len;
3332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      mips_hwr_names = chosen_arch->hwr_names;
3333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
3335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void
3338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliparse_mips_dis_option (const char *option, unsigned int len)
3339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i, optionlen, vallen;
3341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *val;
3342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_abi_choice *chosen_abi;
3343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_arch_choice *chosen_arch;
3344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Look for the = that delimits the end of the option name.  */
3346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0; i < len; i++)
3347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (option[i] == '=')
3349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	break;
3350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (i == 0)		/* Invalid option: no name before '='.  */
3352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return;
3353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (i == len)		/* Invalid option: no '='.  */
3354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return;
3355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (i == (len - 1))	/* Invalid option: no value after '='.  */
3356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return;
3357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  optionlen = i;
3359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  val = option + (optionlen + 1);
3360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  vallen = len - (optionlen + 1);
3361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (strncmp("gpr-names", option, optionlen) == 0
3363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && strlen("gpr-names") == optionlen)
3364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_abi = choose_abi_by_name (val, vallen);
3366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_abi != NULL)
3367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	mips_gpr_names = chosen_abi->gpr_names;
3368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return;
3369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (strncmp("fpr-names", option, optionlen) == 0
3372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && strlen("fpr-names") == optionlen)
3373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_abi = choose_abi_by_name (val, vallen);
3375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_abi != NULL)
3376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	mips_fpr_names = chosen_abi->fpr_names;
3377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return;
3378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (strncmp("cp0-names", option, optionlen) == 0
3381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && strlen("cp0-names") == optionlen)
3382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_arch = choose_arch_by_name (val, vallen);
3384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_arch != NULL)
3385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0_names = chosen_arch->cp0_names;
3387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0sel_names = chosen_arch->cp0sel_names;
3388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0sel_names_len = chosen_arch->cp0sel_names_len;
3389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return;
3391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (strncmp("hwr-names", option, optionlen) == 0
3394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && strlen("hwr-names") == optionlen)
3395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_arch = choose_arch_by_name (val, vallen);
3397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_arch != NULL)
3398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	mips_hwr_names = chosen_arch->hwr_names;
3399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return;
3400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (strncmp("reg-names", option, optionlen) == 0
3403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      && strlen("reg-names") == optionlen)
3404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* We check both ABI and ARCH here unconditionally, so
3406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 that "numeric" will do the desirable thing: select
3407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 numeric register names for all registers.  Other than
3408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 that, a given name probably won't match both.  */
3409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_abi = choose_abi_by_name (val, vallen);
3410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_abi != NULL)
3411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_gpr_names = chosen_abi->gpr_names;
3413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_fpr_names = chosen_abi->fpr_names;
3414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      chosen_arch = choose_arch_by_name (val, vallen);
3416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (chosen_arch != NULL)
3417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0_names = chosen_arch->cp0_names;
3419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0sel_names = chosen_arch->cp0sel_names;
3420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_cp0sel_names_len = chosen_arch->cp0sel_names_len;
3421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  mips_hwr_names = chosen_arch->hwr_names;
3422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return;
3424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Invalid option.  */
3427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void
3430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliparse_mips_dis_options (const char *options)
3431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const char *option_end;
3433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (options == NULL)
3435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return;
3436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  while (*options != '\0')
3438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* Skip empty options.  */
3440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (*options == ',')
3441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  options++;
3443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  continue;
3444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* We know that *options is neither NUL or a comma.  */
3447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      option_end = options + 1;
3448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      while (*option_end != ',' && *option_end != '\0')
3449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	option_end++;
3450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      parse_mips_dis_option (options, option_end - options);
3452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* Go on to the next one.  If option_end points to a comma, it
3454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 will be skipped above.  */
3455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      options = option_end;
3456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic const struct mips_cp0sel_name *
3460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallilookup_mips_cp0sel_name (const struct mips_cp0sel_name *names,
3461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			 unsigned int len,
3462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			 unsigned int cp0reg,
3463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			 unsigned int sel)
3464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i;
3466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0; i < len; i++)
3468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    if (names[i].cp0reg == cp0reg && names[i].sel == sel)
3469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return &names[i];
3470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return NULL;
3471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print insn arguments for 32/64-bit code.  */
3474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void
3476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_args (const char *d,
3477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 register unsigned long int l,
3478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 bfd_vma pc,
3479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 struct disassemble_info *info,
3480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 const struct mips_opcode *opp)
3481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int op, delta;
3483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int lsb, msb, msbd;
3484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  lsb = 0;
3486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (; *d != '\0'; d++)
3488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
3489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      switch (*d)
3490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
3491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case ',':
3492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '(':
3493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case ')':
3494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '[':
3495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case ']':
3496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%c", *d);
3497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '+':
3500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* Extension character; switch for second char.  */
3501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  d++;
3502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  switch (*d)
3503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
3504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case '\0':
3505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      /* xgettext:c-format */
3506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream,
3507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     _("# internal error, incomplete extension sequence (+)"));
3508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      return;
3509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'A':
3511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      lsb = (l >> OP_SH_SHAMT) & OP_MASK_SHAMT;
3512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", lsb);
3513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'B':
3516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      msb = (l >> OP_SH_INSMSB) & OP_MASK_INSMSB;
3517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1);
3518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case '1':
3521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%lx",
3522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     (l >> OP_SH_UDI1) & OP_MASK_UDI1);
3523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case '2':
3526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%lx",
3527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     (l >> OP_SH_UDI2) & OP_MASK_UDI2);
3528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case '3':
3531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%lx",
3532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     (l >> OP_SH_UDI3) & OP_MASK_UDI3);
3533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case '4':
3536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%lx",
3537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     (l >> OP_SH_UDI4) & OP_MASK_UDI4);
3538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'C':
3541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'H':
3542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      msbd = (l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD;
3543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", msbd + 1);
3544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'D':
3547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		const struct mips_cp0sel_name *n;
3549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		unsigned int cp0reg, sel;
3550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		cp0reg = (l >> OP_SH_RD) & OP_MASK_RD;
3552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		sel = (l >> OP_SH_SEL) & OP_MASK_SEL;
3553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		/* CP0 register including 'sel' code for mtcN (et al.), to be
3555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   printed textually if known.  If not known, print both
3556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   CP0 register name and sel numerically since CP0 register
3557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   with sel 0 may have a name unrelated to register being
3558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   printed.  */
3559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		n = lookup_mips_cp0sel_name(mips_cp0sel_names,
3560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					    mips_cp0sel_names_len, cp0reg, sel);
3561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		if (n != NULL)
3562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "%s", n->name);
3563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		else
3564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel);
3565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		break;
3566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'E':
3569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      lsb = ((l >> OP_SH_SHAMT) & OP_MASK_SHAMT) + 32;
3570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", lsb);
3571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'F':
3574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      msb = ((l >> OP_SH_INSMSB) & OP_MASK_INSMSB) + 32;
3575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", msb - lsb + 1);
3576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'G':
3579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      msbd = ((l >> OP_SH_EXTMSBD) & OP_MASK_EXTMSBD) + 32;
3580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "0x%x", msbd + 1);
3581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 't': /* Coprocessor 0 reg name */
3584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "%s",
3585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     mips_cp0_names[(l >> OP_SH_RT) &
3586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli						     OP_MASK_RT]);
3587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      break;
3588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    case 'T': /* Coprocessor 0 reg name */
3590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		const struct mips_cp0sel_name *n;
3592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		unsigned int cp0reg, sel;
3593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		cp0reg = (l >> OP_SH_RT) & OP_MASK_RT;
3595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		sel = (l >> OP_SH_SEL) & OP_MASK_SEL;
3596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		/* CP0 register including 'sel' code for mftc0, to be
3598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   printed textually if known.  If not known, print both
3599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   CP0 register name and sel numerically since CP0 register
3600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   with sel 0 may have a name unrelated to register being
3601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		   printed.  */
3602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		n = lookup_mips_cp0sel_name(mips_cp0sel_names,
3603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					    mips_cp0sel_names_len, cp0reg, sel);
3604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		if (n != NULL)
3605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "%s", n->name);
3606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		else
3607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "$%d,%d", cp0reg, sel);
3608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		break;
3609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    default:
3612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      /* xgettext:c-format */
3613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream,
3614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     _("# internal error, undefined extension sequence (+%c)"),
3615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     *d);
3616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      return;
3617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
3618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '2':
3621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_BP) & OP_MASK_BP);
3623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '3':
3626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_SA3) & OP_MASK_SA3);
3628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '4':
3631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_SA4) & OP_MASK_SA4);
3633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '5':
3636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_IMM8) & OP_MASK_IMM8);
3638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '6':
3641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_RS) & OP_MASK_RS);
3643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '7':
3646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$ac%ld",
3647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_DSPACC) & OP_MASK_DSPACC);
3648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '8':
3651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_WRDSP) & OP_MASK_WRDSP);
3653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '9':
3656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$ac%ld",
3657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_DSPACC_S) & OP_MASK_DSPACC_S);
3658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '0': /* dsp 6-bit signed immediate in bit 20 */
3661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  delta = ((l >> OP_SH_DSPSFT) & OP_MASK_DSPSFT);
3662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (delta & 0x20) /* test sign bit */
3663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    delta |= ~OP_MASK_DSPSFT;
3664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%d", delta);
3665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case ':': /* dsp 7-bit signed immediate in bit 19 */
3668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  delta = ((l >> OP_SH_DSPSFT_7) & OP_MASK_DSPSFT_7);
3669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (delta & 0x40) /* test sign bit */
3670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    delta |= ~OP_MASK_DSPSFT_7;
3671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%d", delta);
3672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '\'':
3675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_RDDSP) & OP_MASK_RDDSP);
3677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '@': /* dsp 10-bit signed immediate in bit 16 */
3680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  delta = ((l >> OP_SH_IMM10) & OP_MASK_IMM10);
3681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (delta & 0x200) /* test sign bit */
3682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    delta |= ~OP_MASK_IMM10;
3683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%d", delta);
3684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '!':
3687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_MT_U) & OP_MASK_MT_U);
3689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '$':
3692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_MT_H) & OP_MASK_MT_H);
3694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '*':
3697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$ac%ld",
3698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_MTACC_T) & OP_MASK_MTACC_T);
3699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '&':
3702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$ac%ld",
3703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_MTACC_D) & OP_MASK_MTACC_D);
3704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'g':
3707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* Coprocessor register for CTTC1, MTTC2, MTHC2, CTTC2.  */
3708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$%ld",
3709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_RD) & OP_MASK_RD);
3710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 's':
3713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'b':
3714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'r':
3715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'v':
3716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_gpr_names[(l >> OP_SH_RS) & OP_MASK_RS]);
3718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 't':
3721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'w':
3722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]);
3724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'i':
3727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'u':
3728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_IMMEDIATE) & OP_MASK_IMMEDIATE);
3730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'j': /* Same as i, but sign-extended.  */
3733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'o':
3734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA;
3735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (delta & 0x8000)
3736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    delta |= ~0xffff;
3737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%d",
3738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 delta);
3739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'h':
3742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%x",
3743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (unsigned int) ((l >> OP_SH_PREFX)
3744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli						 & OP_MASK_PREFX));
3745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'k':
3748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%x",
3749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (unsigned int) ((l >> OP_SH_CACHE)
3750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli						 & OP_MASK_CACHE));
3751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'a':
3754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  info->target = (((pc + 4) & ~(bfd_vma) 0x0fffffff)
3755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			  | (((l >> OP_SH_TARGET) & OP_MASK_TARGET) << 2));
3756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* For gdb disassembler, force odd address on jalx.  */
3757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (info->flavour == bfd_target_unknown_flavour
3758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      && strcmp (opp->name, "jalx") == 0)
3759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->target |= 1;
3760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->print_address_func) (info->target, info);
3761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'p':
3764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* Sign extend the displacement.  */
3765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  delta = (l >> OP_SH_DELTA) & OP_MASK_DELTA;
3766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (delta & 0x8000)
3767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    delta |= ~0xffff;
3768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  info->target = (delta << 2) + pc + INSNLEN;
3769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->print_address_func) (info->target, info);
3770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'd':
3773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_gpr_names[(l >> OP_SH_RD) & OP_MASK_RD]);
3775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'U':
3778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
3779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    /* First check for both rd and rt being equal.  */
3780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    unsigned int reg = (l >> OP_SH_RD) & OP_MASK_RD;
3781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (reg == ((l >> OP_SH_RT) & OP_MASK_RT))
3782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "%s",
3783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     mips_gpr_names[reg]);
3784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else
3785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		/* If one is zero use the other.  */
3787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		if (reg == 0)
3788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "%s",
3789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					 mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]);
3790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		else if (((l >> OP_SH_RT) & OP_MASK_RT) == 0)
3791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "%s",
3792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					 mips_gpr_names[reg]);
3793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		else /* Bogus, result depends on processor.  */
3794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "%s or %s",
3795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					 mips_gpr_names[reg],
3796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					 mips_gpr_names[(l >> OP_SH_RT) & OP_MASK_RT]);
3797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
3799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'z':
3802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]);
3803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '<':
3806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_SHAMT) & OP_MASK_SHAMT);
3808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'c':
3811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_CODE) & OP_MASK_CODE);
3813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'q':
3816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_CODE2) & OP_MASK_CODE2);
3818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'C':
3821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_COPZ) & OP_MASK_COPZ);
3823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'B':
3826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_CODE20) & OP_MASK_CODE20);
3829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'J':
3832409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "0x%lx",
3833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_CODE19) & OP_MASK_CODE19);
3834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'S':
3837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'V':
3838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_fpr_names[(l >> OP_SH_FS) & OP_MASK_FS]);
3840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'T':
3843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'W':
3844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_fpr_names[(l >> OP_SH_FT) & OP_MASK_FT]);
3846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'D':
3849409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_fpr_names[(l >> OP_SH_FD) & OP_MASK_FD]);
3851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'R':
3854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_fpr_names[(l >> OP_SH_FR) & OP_MASK_FR]);
3856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'E':
3859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* Coprocessor register for lwcN instructions, et al.
3860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     Note that there is no load/store cp0 instructions, and
3862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     that FPU (cp1) instructions disassemble this field using
3863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     'T' format.  Therefore, until we gain understanding of
3864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     cp2 register names, we can simply print the register
3865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     numbers.  */
3866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$%ld",
3867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_RT) & OP_MASK_RT);
3868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'G':
3871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* Coprocessor register for mtcN instructions, et al.  Note
3872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     that FPU (cp1) instructions disassemble this field using
3873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     'S' format.  Therefore, we only need to worry about cp0,
3874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	     cp2, and cp3.  */
3875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  op = (l >> OP_SH_OP) & OP_MASK_OP;
3876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (op == OP_OP_COP0)
3877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s",
3878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   mips_cp0_names[(l >> OP_SH_RD) & OP_MASK_RD]);
3879409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  else
3880409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "$%ld",
3881409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   (l >> OP_SH_RD) & OP_MASK_RD);
3882409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3883409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3884409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'K':
3885409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s",
3886409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 mips_hwr_names[(l >> OP_SH_RD) & OP_MASK_RD]);
3887409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3888409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3889409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'N':
3890409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream,
3891409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 ((opp->pinfo & (FP_D | FP_S)) != 0
3892409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				  ? "$fcc%ld" : "$cc%ld"),
3893409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_BCC) & OP_MASK_BCC);
3894409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3895409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3896409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'M':
3897409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$fcc%ld",
3898409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_CCC) & OP_MASK_CCC);
3899409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3900409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3901409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'P':
3902409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3903409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_PERFREG) & OP_MASK_PERFREG);
3904409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3905409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3906409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'e':
3907409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3908409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_VECBYTE) & OP_MASK_VECBYTE);
3909409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3910409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3911409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case '%':
3912409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3913409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_VECALIGN) & OP_MASK_VECALIGN);
3914409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3915409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3916409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'H':
3917409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3918409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_SEL) & OP_MASK_SEL);
3919409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3920409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3921409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'O':
3922409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%ld",
3923409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_ALN) & OP_MASK_ALN);
3924409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3925409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3926409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'Q':
3927409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
3928409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    unsigned int vsel = (l >> OP_SH_VSEL) & OP_MASK_VSEL;
3929409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3930409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if ((vsel & 0x10) == 0)
3931409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3932409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		int fmt;
3933409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3934409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		vsel &= 0x0f;
3935409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		for (fmt = 0; fmt < 3; fmt++, vsel >>= 1)
3936409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  if ((vsel & 1) == 0)
3937409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    break;
3938409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		(*info->fprintf_func) (info->stream, "$v%ld[%d]",
3939409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				       (l >> OP_SH_FT) & OP_MASK_FT,
3940409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				       vsel >> 1);
3941409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3942409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else if ((vsel & 0x08) == 0)
3943409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3944409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		(*info->fprintf_func) (info->stream, "$v%ld",
3945409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				       (l >> OP_SH_FT) & OP_MASK_FT);
3946409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3947409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else
3948409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
3949409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		(*info->fprintf_func) (info->stream, "0x%lx",
3950409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				       (l >> OP_SH_FT) & OP_MASK_FT);
3951409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
3952409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
3953409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3954409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3955409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'X':
3956409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$v%ld",
3957409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_FD) & OP_MASK_FD);
3958409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3959409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3960409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'Y':
3961409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$v%ld",
3962409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_FS) & OP_MASK_FS);
3963409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3964409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3965409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	case 'Z':
3966409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "$v%ld",
3967409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (l >> OP_SH_FT) & OP_MASK_FT);
3968409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  break;
3969409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3970409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	default:
3971409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* xgettext:c-format */
3972409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream,
3973409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 _("# internal error, undefined modifier(%c)"),
3974409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 *d);
3975409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  return;
3976409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
3977409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
3978409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3979409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3980409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Check if the object uses NewABI conventions.  */
3981409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0
3982409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int
3983409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliis_newabi (header)
3984409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli     Elf_Internal_Ehdr *header;
3985409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
3986409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* There are no old-style ABIs which use 64-bit ELF.  */
3987409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (header->e_ident[EI_CLASS] == ELFCLASS64)
3988409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return 1;
3989409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3990409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* If a 32-bit ELF file, n32 is a new-style ABI.  */
3991409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if ((header->e_flags & EF_MIPS_ABI2) != 0)
3992409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return 1;
3993409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3994409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return 0;
3995409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
3996409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
3997409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
3998409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Print the mips instruction at address MEMADDR in debugged memory,
3999409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   on using INFO.  Returns length of the instruction, in bytes, which is
4000409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   always INSNLEN.  BIGENDIAN must be 1 if this is big-endian code, 0 if
4001409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   this is little-endian code.  */
4002409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4003409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int
4004409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_mips (bfd_vma memaddr,
4005409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 unsigned long int word,
4006409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		 struct disassemble_info *info)
4007409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4008409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_opcode *op;
4009409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  static bfd_boolean init = 0;
4010409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  static const struct mips_opcode *mips_hash[OP_MASK_OP + 1];
4011409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4012409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Build a hash table to shorten the search time.  */
4013409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (! init)
4014409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4015409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      unsigned int i;
4016409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4017409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      for (i = 0; i <= OP_MASK_OP; i++)
4018409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
4019409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  for (op = mips_opcodes; op < &mips_opcodes[NUMOPCODES]; op++)
4020409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
4021409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (op->pinfo == INSN_MACRO
4022409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  || (no_aliases && (op->pinfo2 & INSN2_ALIAS)))
4023409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		continue;
4024409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP))
4025409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4026409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  mips_hash[i] = op;
4027409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  break;
4028409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4029409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
4030409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
4031409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4032409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      init = 1;
4033409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4034409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4035409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->bytes_per_chunk = INSNLEN;
4036409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->display_endian = info->endian;
4037409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_info_valid = 1;
4038409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->branch_delay_insns = 0;
4039409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->data_size = 0;
4040409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_type = dis_nonbranch;
4041409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->target = 0;
4042409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->target2 = 0;
4043409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4044409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  op = mips_hash[(word >> OP_SH_OP) & OP_MASK_OP];
4045409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (op != NULL)
4046409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4047409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      for (; op < &mips_opcodes[NUMOPCODES]; op++)
4048409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
4049409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (op->pinfo != INSN_MACRO
4050409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      && !(no_aliases && (op->pinfo2 & INSN2_ALIAS))
4051409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      && (word & op->mask) == op->match)
4052409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
4053409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      const char *d;
4054409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4055409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      /* We always allow to disassemble the jalx instruction.  */
4056409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (! OPCODE_IS_MEMBER (op, mips_isa, mips_processor)
4057409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  && strcmp (op->name, "jalx"))
4058409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		continue;
4059409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4060409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      /* Figure out instruction type and branch delay information.  */
4061409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0)
4062409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	        {
4063409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  if ((info->insn_type & INSN_WRITE_GPR_31) != 0)
4064409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    info->insn_type = dis_jsr;
4065409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  else
4066409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    info->insn_type = dis_branch;
4067409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  info->branch_delay_insns = 1;
4068409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4069409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      else if ((op->pinfo & (INSN_COND_BRANCH_DELAY
4070409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     | INSN_COND_BRANCH_LIKELY)) != 0)
4071409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4072409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  if ((info->insn_type & INSN_WRITE_GPR_31) != 0)
4073409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    info->insn_type = dis_condjsr;
4074409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  else
4075409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    info->insn_type = dis_condbranch;
4076409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  info->branch_delay_insns = 1;
4077409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4078409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      else if ((op->pinfo & (INSN_STORE_MEMORY
4079409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     | INSN_LOAD_MEMORY_DELAY)) != 0)
4080409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		info->insn_type = dis_dref;
4081409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4082409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "%s", op->name);
4083409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4084409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      d = op->args;
4085409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (d != NULL && *d != '\0')
4086409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4087409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "\t");
4088409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  print_insn_args (d, word, memaddr, info, op);
4089409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4090409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4091409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      return INSNLEN;
4092409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
4093409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
4094409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4095409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4096409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Handle undefined instructions.  */
4097409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_type = dis_noninsn;
4098409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  (*info->fprintf_func) (info->stream, "0x%lx", word);
4099409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return INSNLEN;
4100409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4101409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4102409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* In an environment where we do not know the symbol type of the
4103409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instruction we are forced to assume that the low order bit of the
4104409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   instructions' address may mark it as a mips16 instruction.  If we
4105409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   are single stepping, or the pc is within the disassembled function,
4106409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   this works.  Otherwise, we need a clue.  Sometimes.  */
4107409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4108409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int
4109409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli_print_insn_mips (bfd_vma memaddr,
4110409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  struct disassemble_info *info,
4111409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  enum bfd_endian endianness)
4112409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4113409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  bfd_byte buffer[INSNLEN];
4114409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int status;
4115409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4116409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  set_default_mips_dis_options (info);
4117409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  parse_mips_dis_options (info->disassembler_options);
4118409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4119409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0
4120409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 1
4121409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* FIXME: If odd address, this is CLEARLY a mips 16 instruction.  */
4122409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Only a few tools will work this way.  */
4123409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (memaddr & 0x01)
4124409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return print_insn_mips16 (memaddr, info);
4125409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
4126409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4127409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if SYMTAB_AVAILABLE
4128409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (info->mach == bfd_mach_mips16
4129409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      || (info->flavour == bfd_target_elf_flavour
4130409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  && info->symbols != NULL
4131409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  && ((*(elf_symbol_type **) info->symbols)->internal_elf_sym.st_other
4132409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      == STO_MIPS16)))
4133409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    return print_insn_mips16 (memaddr, info);
4134409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
4135409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
4136409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4137409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  status = (*info->read_memory_func) (memaddr, buffer, INSNLEN, info);
4138409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (status == 0)
4139409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4140409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      unsigned long insn;
4141409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4142409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (endianness == BFD_ENDIAN_BIG)
4143409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	insn = (unsigned long) bfd_getb32 (buffer);
4144409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      else
4145409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	insn = (unsigned long) bfd_getl32 (buffer);
4146409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4147409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return print_insn_mips (memaddr, insn, info);
4148409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4149409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  else
4150409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4151409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->memory_error_func) (status, memaddr, info);
4152409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return -1;
4153409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4154409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4155409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4156409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint
4157409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_big_mips (bfd_vma memaddr, struct disassemble_info *info)
4158409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4159409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return _print_insn_mips (memaddr, info, BFD_ENDIAN_BIG);
4160409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4161409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4162409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliint
4163409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_little_mips (bfd_vma memaddr, struct disassemble_info *info)
4164409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4165409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return _print_insn_mips (memaddr, info, BFD_ENDIAN_LITTLE);
4166409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4167409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4168409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Disassemble mips16 instructions.  */
4169409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#if 0
4170409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic int
4171409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_insn_mips16 (bfd_vma memaddr, struct disassemble_info *info)
4172409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4173409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int status;
4174409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  bfd_byte buffer[2];
4175409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int length;
4176409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int insn;
4177409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  bfd_boolean use_extend;
4178409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  int extend = 0;
4179409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  const struct mips_opcode *op, *opend;
4180409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4181409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->bytes_per_chunk = 2;
4182409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->display_endian = info->endian;
4183409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_info_valid = 1;
4184409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->branch_delay_insns = 0;
4185409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->data_size = 0;
4186409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_type = dis_nonbranch;
4187409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->target = 0;
4188409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->target2 = 0;
4189409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4190409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  status = (*info->read_memory_func) (memaddr, buffer, 2, info);
4191409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (status != 0)
4192409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4193409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->memory_error_func) (status, memaddr, info);
4194409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      return -1;
4195409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4196409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4197409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  length = 2;
4198409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4199409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (info->endian == BFD_ENDIAN_BIG)
4200409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    insn = bfd_getb16 (buffer);
4201409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  else
4202409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    insn = bfd_getl16 (buffer);
4203409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4204409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* Handle the extend opcode specially.  */
4205409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  use_extend = FALSE;
4206409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if ((insn & 0xf800) == 0xf000)
4207409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4208409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      use_extend = TRUE;
4209409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      extend = insn & 0x7ff;
4210409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4211409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      memaddr += 2;
4212409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4213409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      status = (*info->read_memory_func) (memaddr, buffer, 2, info);
4214409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (status != 0)
4215409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
4216409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "extend 0x%x",
4217409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (unsigned int) extend);
4218409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->memory_error_func) (status, memaddr, info);
4219409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  return -1;
4220409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
4221409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4222409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (info->endian == BFD_ENDIAN_BIG)
4223409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	insn = bfd_getb16 (buffer);
4224409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      else
4225409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	insn = bfd_getl16 (buffer);
4226409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4227409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* Check for an extend opcode followed by an extend opcode.  */
4228409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if ((insn & 0xf800) == 0xf000)
4229409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
4230409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "extend 0x%x",
4231409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				 (unsigned int) extend);
4232409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  info->insn_type = dis_noninsn;
4233409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  return length;
4234409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
4235409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4236409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      length += 2;
4237409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4238409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4239409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  /* FIXME: Should probably use a hash table on the major opcode here.  */
4240409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4241409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  opend = mips16_opcodes + bfd_mips16_num_opcodes;
4242409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (op = mips16_opcodes; op < opend; op++)
4243409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4244409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (op->pinfo != INSN_MACRO
4245409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  && !(no_aliases && (op->pinfo2 & INSN2_ALIAS))
4246409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  && (insn & op->mask) == op->match)
4247409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	{
4248409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  const char *s;
4249409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4250409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (strchr (op->args, 'a') != NULL)
4251409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
4252409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (use_extend)
4253409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4254409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  (*info->fprintf_func) (info->stream, "extend 0x%x",
4255409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					 (unsigned int) extend);
4256409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  info->insn_type = dis_noninsn;
4257409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  return length - 2;
4258409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4259409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4260409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      use_extend = FALSE;
4261409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4262409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      memaddr += 2;
4263409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4264409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      status = (*info->read_memory_func) (memaddr, buffer, 2,
4265409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli						  info);
4266409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (status == 0)
4267409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4268409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  use_extend = TRUE;
4269409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  if (info->endian == BFD_ENDIAN_BIG)
4270409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    extend = bfd_getb16 (buffer);
4271409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  else
4272409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    extend = bfd_getl16 (buffer);
4273409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  length += 2;
4274409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4275409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
4276409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4277409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%s", op->name);
4278409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if (op->args[0] != '\0')
4279409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "\t");
4280409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4281409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  for (s = op->args; *s != '\0'; s++)
4282409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
4283409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (*s == ','
4284409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  && s[1] == 'w'
4285409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  && (((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX)
4286409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		      == ((insn >> MIPS16OP_SH_RY) & MIPS16OP_MASK_RY)))
4287409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4288409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  /* Skip the register and the comma.  */
4289409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  ++s;
4290409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  continue;
4291409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4292409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (*s == ','
4293409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  && s[1] == 'v'
4294409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  && (((insn >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ)
4295409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		      == ((insn >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX)))
4296409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		{
4297409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  /* Skip the register and the comma.  */
4298409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  ++s;
4299409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  continue;
4300409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		}
4301409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      print_mips16_insn_arg (*s, op, insn, use_extend, extend, memaddr,
4302409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     info);
4303409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
4304409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4305409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  if ((op->pinfo & INSN_UNCOND_BRANCH_DELAY) != 0)
4306409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    {
4307409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      info->branch_delay_insns = 1;
4308409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      if (info->insn_type != dis_jsr)
4309409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		info->insn_type = dis_branch;
4310409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    }
4311409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4312409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  return length;
4313409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	}
4314409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4315409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4316409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  if (use_extend)
4317409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    (*info->fprintf_func) (info->stream, "0x%x", extend | 0xf000);
4318409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  (*info->fprintf_func) (info->stream, "0x%x", insn);
4319409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  info->insn_type = dis_noninsn;
4320409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4321409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  return length;
4322409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4323409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4324409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli/* Disassemble an operand for a mips16 instruction.  */
4325409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4326409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallistatic void
4327409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_mips16_insn_arg (char type,
4328409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       const struct mips_opcode *op,
4329409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       int l,
4330409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       bfd_boolean use_extend,
4331409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       int extend,
4332409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       bfd_vma memaddr,
4333409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		       struct disassemble_info *info)
4334409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4335409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  switch (type)
4336409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    {
4337409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case ',':
4338409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '(':
4339409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case ')':
4340409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%c", type);
4341409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4342409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4343409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'y':
4344409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'w':
4345409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4346409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips16_reg_names(((l >> MIPS16OP_SH_RY)
4347409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					       & MIPS16OP_MASK_RY)));
4348409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4349409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4350409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'x':
4351409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'v':
4352409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4353409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips16_reg_names(((l >> MIPS16OP_SH_RX)
4354409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					       & MIPS16OP_MASK_RX)));
4355409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4356409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4357409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'z':
4358409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4359409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips16_reg_names(((l >> MIPS16OP_SH_RZ)
4360409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					       & MIPS16OP_MASK_RZ)));
4361409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4362409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4363409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'Z':
4364409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4365409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips16_reg_names(((l >> MIPS16OP_SH_MOVE32Z)
4366409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					       & MIPS16OP_MASK_MOVE32Z)));
4367409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4368409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4369409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '0':
4370409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[0]);
4371409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4372409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4373409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'S':
4374409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[29]);
4375409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4376409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4377409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'P':
4378409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "$pc");
4379409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4380409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4381409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'R':
4382409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[31]);
4383409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4384409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4385409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'X':
4386409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4387409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips_gpr_names[((l >> MIPS16OP_SH_REGR32)
4388409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli					    & MIPS16OP_MASK_REGR32)]);
4389409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4390409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4391409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'Y':
4392409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s",
4393409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     mips_gpr_names[MIPS16OP_EXTRACT_REG32R (l)]);
4394409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4395409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4396409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '<':
4397409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '>':
4398409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '[':
4399409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case ']':
4400409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '4':
4401409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '5':
4402409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'H':
4403409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'W':
4404409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'D':
4405409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'j':
4406409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '6':
4407409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case '8':
4408409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'V':
4409409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'C':
4410409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'U':
4411409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'k':
4412409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'K':
4413409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'p':
4414409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'q':
4415409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'A':
4416409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'B':
4417409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'E':
4418409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      {
4419409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	int immed, nbits, shift, signedp, extbits, pcrel, extu, branch;
4420409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4421409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	shift = 0;
4422409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	signedp = 0;
4423409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	extbits = 16;
4424409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	pcrel = 0;
4425409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	extu = 0;
4426409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	branch = 0;
4427409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	switch (type)
4428409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4429409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '<':
4430409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 3;
4431409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ;
4432409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extbits = 5;
4433409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extu = 1;
4434409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4435409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '>':
4436409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 3;
4437409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX;
4438409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extbits = 5;
4439409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extu = 1;
4440409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4441409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '[':
4442409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 3;
4443409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_RZ) & MIPS16OP_MASK_RZ;
4444409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extbits = 6;
4445409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extu = 1;
4446409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4447409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case ']':
4448409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 3;
4449409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_RX) & MIPS16OP_MASK_RX;
4450409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extbits = 6;
4451409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extu = 1;
4452409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4453409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '4':
4454409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 4;
4455409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM4) & MIPS16OP_MASK_IMM4;
4456409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4457409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extbits = 15;
4458409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4459409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '5':
4460409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4461409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4462409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4463409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 1;
4464409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4465409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'H':
4466409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4467409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 1;
4468409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4469409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4470409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 2;
4471409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4472409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'W':
4473409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4474409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 2;
4475409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4476409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if ((op->pinfo & MIPS16_INSN_READ_PC) == 0
4477409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		&& (op->pinfo & MIPS16_INSN_READ_SP) == 0)
4478409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
4479409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		info->insn_type = dis_dref;
4480409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		info->data_size = 4;
4481409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
4482409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4483409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'D':
4484409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4485409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 3;
4486409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4487409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4488409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 8;
4489409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4490409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'j':
4491409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4492409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4493409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4494409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4495409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '6':
4496409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 6;
4497409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6;
4498409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4499409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case '8':
4500409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4501409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4502409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4503409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'V':
4504409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4505409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 2;
4506409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4507409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    /* FIXME: This might be lw, or it might be addiu to $sp or
4508409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli               $pc.  We assume it's load.  */
4509409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4510409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 4;
4511409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4512409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'C':
4513409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4514409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 3;
4515409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4516409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4517409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 8;
4518409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4519409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'U':
4520409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4521409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4522409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    extu = 1;
4523409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4524409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'k':
4525409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4526409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4527409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4528409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4529409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'K':
4530409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4531409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 3;
4532409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4533409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4534409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4535409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'p':
4536409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4537409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4538409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4539409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    pcrel = 1;
4540409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    branch = 1;
4541409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_condbranch;
4542409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4543409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'q':
4544409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 11;
4545409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM11) & MIPS16OP_MASK_IMM11;
4546409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    signedp = 1;
4547409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    pcrel = 1;
4548409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    branch = 1;
4549409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_branch;
4550409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4551409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'A':
4552409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 8;
4553409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 2;
4554409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM8) & MIPS16OP_MASK_IMM8;
4555409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    pcrel = 1;
4556409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    /* FIXME: This can be lw or la.  We assume it is lw.  */
4557409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4558409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 4;
4559409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4560409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'B':
4561409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4562409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 3;
4563409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4564409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    pcrel = 1;
4565409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->insn_type = dis_dref;
4566409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->data_size = 8;
4567409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4568409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  case 'E':
4569409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    nbits = 5;
4570409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    shift = 2;
4571409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed = (l >> MIPS16OP_SH_IMM5) & MIPS16OP_MASK_IMM5;
4572409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    pcrel = 1;
4573409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    break;
4574409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  default:
4575409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    abort ();
4576409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4577409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4578409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (! use_extend)
4579409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4580409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (signedp && immed >= (1 << (nbits - 1)))
4581409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed -= 1 << nbits;
4582409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed <<= shift;
4583409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if ((type == '<' || type == '>' || type == '[' || type == ']')
4584409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		&& immed == 0)
4585409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed = 8;
4586409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4587409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	else
4588409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4589409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (extbits == 16)
4590409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed |= ((extend & 0x1f) << 11) | (extend & 0x7e0);
4591409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else if (extbits == 15)
4592409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed |= ((extend & 0xf) << 11) | (extend & 0x7f0);
4593409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else
4594409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed = ((extend >> 6) & 0x1f) | (extend & 0x20);
4595409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    immed &= (1 << extbits) - 1;
4596409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (! extu && immed >= (1 << (extbits - 1)))
4597409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      immed -= 1 << extbits;
4598409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4599409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4600409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (! pcrel)
4601409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  (*info->fprintf_func) (info->stream, "%d", immed);
4602409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	else
4603409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4604409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    bfd_vma baseaddr;
4605409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4606409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (branch)
4607409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
4608409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		immed *= 2;
4609409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		baseaddr = memaddr + 2;
4610409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
4611409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else if (use_extend)
4612409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      baseaddr = memaddr - 2;
4613409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    else
4614409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      {
4615409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		int status;
4616409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		bfd_byte buffer[2];
4617409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4618409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		baseaddr = memaddr;
4619409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4620409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		/* If this instruction is in the delay slot of a jr
4621409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   instruction, the base address is the address of the
4622409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   jr instruction.  If it is in the delay slot of jalr
4623409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   instruction, the base address is the address of the
4624409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   jalr instruction.  This test is unreliable: we have
4625409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   no way of knowing whether the previous word is
4626409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                   instruction or data.  */
4627409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		status = (*info->read_memory_func) (memaddr - 4, buffer, 2,
4628409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli						    info);
4629409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		if (status == 0
4630409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    && (((info->endian == BFD_ENDIAN_BIG
4631409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			  ? bfd_getb16 (buffer)
4632409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			  : bfd_getl16 (buffer))
4633409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			 & 0xf800) == 0x1800))
4634409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  baseaddr = memaddr - 4;
4635409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		else
4636409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  {
4637409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    status = (*info->read_memory_func) (memaddr - 2, buffer,
4638409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli							2, info);
4639409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		    if (status == 0
4640409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			&& (((info->endian == BFD_ENDIAN_BIG
4641409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			      ? bfd_getb16 (buffer)
4642409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			      : bfd_getl16 (buffer))
4643409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			     & 0xf81f) == 0xe800))
4644409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		      baseaddr = memaddr - 2;
4645409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		  }
4646409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      }
4647409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    info->target = (baseaddr & ~((1 << shift) - 1)) + immed;
4648409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (pcrel && branch
4649409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli		&& info->flavour == bfd_target_unknown_flavour)
4650409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      /* For gdb disassembler, maintain odd address.  */
4651409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      info->target |= 1;
4652409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->print_address_func) (info->target, info);
4653409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4654409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      }
4655409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4656409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4657409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'a':
4658409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      {
4659409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	int jalx = l & 0x400;
4660409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4661409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (! use_extend)
4662409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  extend = 0;
4663409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	l = ((l & 0x1f) << 23) | ((l & 0x3e0) << 13) | (extend << 2);
4664409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (!jalx && info->flavour == bfd_target_unknown_flavour)
4665409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  /* For gdb disassembler, maintain odd address.  */
4666409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  l |= 1;
4667409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      }
4668409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      info->target = ((memaddr + 4) & ~(bfd_vma) 0x0fffffff) | l;
4669409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->print_address_func) (info->target, info);
4670409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      info->insn_type = dis_jsr;
4671409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      info->branch_delay_insns = 1;
4672409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4673409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4674409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'l':
4675409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'L':
4676409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      {
4677409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	int need_comma, amask, smask;
4678409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4679409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	need_comma = 0;
4680409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4681409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	l = (l >> MIPS16OP_SH_IMM6) & MIPS16OP_MASK_IMM6;
4682409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4683409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	amask = (l >> 3) & 7;
4684409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4685409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (amask > 0 && amask < 5)
4686409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4687409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]);
4688409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (amask > 1)
4689409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "-%s",
4690409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     mips_gpr_names[amask + 3]);
4691409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    need_comma = 1;
4692409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4693409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4694409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	smask = (l >> 1) & 3;
4695409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (smask == 3)
4696409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4697409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s??",
4698409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   need_comma ? "," : "");
4699409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    need_comma = 1;
4700409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4701409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	else if (smask > 0)
4702409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4703409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s%s",
4704409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   need_comma ? "," : "",
4705409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   mips_gpr_names[16]);
4706409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (smask > 1)
4707409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "-%s",
4708409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				     mips_gpr_names[smask + 15]);
4709409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    need_comma = 1;
4710409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4711409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4712409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (l & 1)
4713409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4714409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s%s",
4715409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   need_comma ? "," : "",
4716409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   mips_gpr_names[31]);
4717409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    need_comma = 1;
4718409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4719409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4720409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	if (amask == 5 || amask == 6)
4721409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  {
4722409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    (*info->fprintf_func) (info->stream, "%s$f0",
4723409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli				   need_comma ? "," : "");
4724409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	    if (amask == 6)
4725409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	      (*info->fprintf_func) (info->stream, "-$f1");
4726409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	  }
4727409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      }
4728409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4729409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4730409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'm':
4731409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    case 'M':
4732409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* MIPS16e save/restore.  */
4733409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      {
4734409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      int need_comma = 0;
4735409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      int amask, args, statics;
4736409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      int nsreg, smask;
4737409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      int framesz;
4738409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      int i, j;
4739409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4740409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      l = l & 0x7f;
4741409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (use_extend)
4742409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        l |= extend << 16;
4743409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4744409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      amask = (l >> 16) & 0xf;
4745409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (amask == MIPS16_ALL_ARGS)
4746409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        {
4747409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          args = 4;
4748409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          statics = 0;
4749409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        }
4750409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      else if (amask == MIPS16_ALL_STATICS)
4751409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        {
4752409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          args = 0;
4753409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          statics = 4;
4754409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        }
4755409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      else
4756409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        {
4757409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          args = amask >> 2;
4758409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          statics = amask & 3;
4759409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        }
4760409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4761409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (args > 0) {
4762409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          (*info->fprintf_func) (info->stream, "%s", mips_gpr_names[4]);
4763409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          if (args > 1)
4764409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli            (*info->fprintf_func) (info->stream, "-%s",
4765409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                                   mips_gpr_names[4 + args - 1]);
4766409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          need_comma = 1;
4767409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      }
4768409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4769409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      framesz = (((l >> 16) & 0xf0) | (l & 0x0f)) * 8;
4770409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (framesz == 0 && !use_extend)
4771409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        framesz = 128;
4772409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4773409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func) (info->stream, "%s%d",
4774409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                             need_comma ? "," : "",
4775409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                             framesz);
4776409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4777409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (l & 0x40)                   /* $ra */
4778409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[31]);
4779409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4780409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      nsreg = (l >> 24) & 0x7;
4781409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      smask = 0;
4782409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (l & 0x20)                   /* $s0 */
4783409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        smask |= 1 << 0;
4784409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (l & 0x10)                   /* $s1 */
4785409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        smask |= 1 << 1;
4786409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (nsreg > 0)                  /* $s2-$s8 */
4787409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        smask |= ((1 << nsreg) - 1) << 2;
4788409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4789409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* Find first set static reg bit.  */
4790409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      for (i = 0; i < 9; i++)
4791409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        {
4792409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli          if (smask & (1 << i))
4793409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli            {
4794409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli              (*info->fprintf_func) (info->stream, ",%s",
4795409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                                     mips_gpr_names[i == 8 ? 30 : (16 + i)]);
4796409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli              /* Skip over string of set bits.  */
4797409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli              for (j = i; smask & (2 << j); j++)
4798409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                continue;
4799409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli              if (j > i)
4800409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                (*info->fprintf_func) (info->stream, "-%s",
4801409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                                       mips_gpr_names[j == 8 ? 30 : (16 + j)]);
4802409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli              i = j + 1;
4803409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli            }
4804409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        }
4805409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4806409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* Statics $ax - $a3.  */
4807409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      if (statics == 1)
4808409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        (*info->fprintf_func) (info->stream, ",%s", mips_gpr_names[7]);
4809409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      else if (statics > 0)
4810409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli        (*info->fprintf_func) (info->stream, ",%s-%s",
4811409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                               mips_gpr_names[7 - statics + 1],
4812409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                               mips_gpr_names[7]);
4813409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      }
4814409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      break;
4815409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4816409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    default:
4817409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      /* xgettext:c-format */
4818409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      (*info->fprintf_func)
4819409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	(info->stream,
4820409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 _("# internal disassembler error, unrecognised modifier (%c)"),
4821409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli	 type);
4822409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      abort ();
4823409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    }
4824409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4825409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4826409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapallivoid
4827409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliprint_mips_disassembler_options (FILE *stream)
4828409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli{
4829409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  unsigned int i;
4830409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4831409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4832409c7b66435cf5947cab6bf0710f92507317f22eBhanu ChetlapalliThe following MIPS specific disassembler options are supported for use\n\
4833409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalliwith the -M switch (multiple options should be separated by commas):\n"));
4834409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4835409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4836409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  gpr-names=ABI            Print GPR names according to  specified ABI.\n\
4837409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           Default: based on binary being disassembled.\n"));
4838409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4839409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4840409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fpr-names=ABI            Print FPR names according to specified ABI.\n\
4841409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           Default: numeric.\n"));
4842409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4843409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4844409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  cp0-names=ARCH           Print CP0 register names according to\n\
4845409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           specified architecture.\n\
4846409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           Default: based on binary being disassembled.\n"));
4847409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4848409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
48495aaf1290494bf7c8fe521d817fd4a040c88b3750David 'Digit' Turner  hwr-names=ARCH           Print HWR names according to specified\n\
4850409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli			   architecture.\n\
4851409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           Default: based on binary being disassembled.\n"));
4852409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4853409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4854409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  reg-names=ABI            Print GPR and FPR names according to\n\
4855409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           specified ABI.\n"));
4856409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4857409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4858409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  reg-names=ARCH           Print CP0 register and HWR names according to\n\
4859409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli                           specified architecture.\n"));
4860409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4861409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4862409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  For the options above, the following values are supported for \"ABI\":\n\
4863409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "));
4864409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0; i < ARRAY_SIZE (mips_abi_choices); i++)
4865409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    fprintf (stream, " %s", mips_abi_choices[i].name);
4866409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n"));
4867409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4868409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n\
4869409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  For the options above, The following values are supported for \"ARCH\":\n\
4870409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli   "));
4871409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  for (i = 0; i < ARRAY_SIZE (mips_arch_choices); i++)
4872409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli    if (*mips_arch_choices[i].name != '\0')
4873409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli      fprintf (stream, " %s", mips_arch_choices[i].name);
4874409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n"));
4875409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli
4876409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli  fprintf (stream, _("\n"));
4877409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli}
4878409c7b66435cf5947cab6bf0710f92507317f22eBhanu Chetlapalli#endif
4879