* mips-opc.c (deret,dmult,dmultu,madd,maddu,pref,sdbbp):
[deliverable/binutils-gdb.git] / opcodes / mips-opc.c
CommitLineData
45b14705 1/* mips.h. Mips opcode list for GDB, the GNU debugger.
a21e1e96 2 Copyright 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
45b14705
ILT
3 Contributed by Ralph Campbell and OSF
4 Commented and modified by Ian Lance Taylor, Cygnus Support
5
6This file is part of GDB, GAS, and the GNU binutils.
7
8GDB, GAS, and the GNU binutils are free software; you can redistribute
9them and/or modify them under the terms of the GNU General Public
10License as published by the Free Software Foundation; either version
111, or (at your option) any later version.
12
13GDB, GAS, and the GNU binutils are distributed in the hope that they
14will be useful, but WITHOUT ANY WARRANTY; without even the implied
15warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
16the GNU General Public License for more details.
17
18You should have received a copy of the GNU General Public License
19along with this file; see the file COPYING. If not, write to the Free
8d67dc30 20Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
45b14705
ILT
21
22#include <stdio.h>
23#include "ansidecl.h"
24#include "opcode/mips.h"
25
26/* Short hand so the lines aren't too long. */
27
2bef2d3e
ILT
28#define LDD INSN_LOAD_MEMORY_DELAY
29#define LCD INSN_LOAD_COPROC_DELAY
45b14705
ILT
30#define UBD INSN_UNCOND_BRANCH_DELAY
31#define CBD INSN_COND_BRANCH_DELAY
2bef2d3e
ILT
32#define COD INSN_COPROC_MOVE_DELAY
33#define CLD INSN_COPROC_MEMORY_DELAY
34#define CBL INSN_COND_BRANCH_LIKELY
9978cd4d 35#define TRAP INSN_TRAP
942a4965 36#define SM INSN_STORE_MEMORY
45b14705
ILT
37
38#define WR_d INSN_WRITE_GPR_D
39#define WR_t INSN_WRITE_GPR_T
40#define WR_31 INSN_WRITE_GPR_31
41#define WR_D INSN_WRITE_FPR_D
42#define WR_T INSN_WRITE_FPR_T
2bef2d3e 43#define WR_S INSN_WRITE_FPR_S
45b14705
ILT
44#define RD_s INSN_READ_GPR_S
45#define RD_b INSN_READ_GPR_S
46#define RD_t INSN_READ_GPR_T
47#define RD_S INSN_READ_FPR_S
48#define RD_T INSN_READ_FPR_T
8d67dc30 49#define RD_R INSN_READ_FPR_R
45b14705
ILT
50#define WR_CC INSN_WRITE_COND_CODE
51#define RD_CC INSN_READ_COND_CODE
52#define RD_C0 INSN_COP
53#define RD_C1 INSN_COP
54#define RD_C2 INSN_COP
55#define RD_C3 INSN_COP
56#define WR_C0 INSN_COP
57#define WR_C1 INSN_COP
58#define WR_C2 INSN_COP
59#define WR_C3 INSN_COP
60#define WR_HI INSN_WRITE_HI
61#define WR_LO INSN_WRITE_LO
62#define RD_HI INSN_READ_HI
63#define RD_LO INSN_READ_LO
64
a3066d9a
KR
65/* start-sanitize-vr5400 */
66#define WR_HILO WR_HI|WR_LO
67#define RD_HILO RD_HI|RD_LO
68#define MOD_HILO WR_HILO|RD_HILO
69/* end-sanitize-vr5400 */
581c03af 70
4bb0ae10 71#define I1 INSN_ISA1
2bef2d3e
ILT
72#define I2 INSN_ISA2
73#define I3 INSN_ISA3
8d67dc30 74#define I4 INSN_ISA4
4bb0ae10 75#define P3 INSN_4650
8d67dc30
ILT
76#define L1 INSN_4010
77#define V1 INSN_4100
d0efa46b 78#define T3 INSN_3900
0cca41d4
GRK
79/* start-sanitize-tx49 */
80#define T4 INSN_4900
81/* end-sanitize-tx49 */
a3066d9a
KR
82/* start-sanitize-vr5400 */
83#define N5 INSN_5400
84/* end-sanitize-vr5400 */
a2768484 85/* start-sanitize-r5900 */
4bb0ae10 86#define T5 INSN_5900
a2768484 87/* end-sanitize-r5900 */
276c2d7d 88
80ae705d 89#define G1 (T3 \
0cca41d4
GRK
90/* start-sanitize-tx49 */ \
91 | T4 \
92/* end-sanitize-tx49 */ \
80ae705d
GRK
93/* start-sanitize-r5900 */ \
94 | T5 \
95/* end-sanitize-r5900 */ \
96 )
276c2d7d 97
0cca41d4
GRK
98#define G2 (T3 \
99/* start-sanitize-tx49 */ \
100 | T4 \
101/* end-sanitize-tx49 */ \
102 )
103
276c2d7d 104
45b14705
ILT
105/* The order of overloaded instructions matters. Label arguments and
106 register arguments look the same. Instructions that can have either
107 for arguments must apear in the correct order in this table for the
108 assembler to pick the right one. In other words, entries with
109 immediate operands must apear after the same instruction with
110 registers.
111
112 Many instructions are short hand for other instructions (i.e., The
113 jal <register> instruction is short for jalr <register>). */
114
a2768484 115const struct mips_opcode mips_builtin_opcodes[] = {
45b14705
ILT
116/* These instructions appear first so that the disassembler will find
117 them first. The assemblers uses a hash table based on the
118 instruction name anyhow. */
a2768484 119/* name, args, mask, match, pinfo */
4bb0ae10
JL
120{"nop", "", 0x00000000, 0xffffffff, 0, I1 },
121{"li", "t,j", 0x24000000, 0xffe00000, WR_t, I1 }, /* addiu */
122{"li", "t,i", 0x34000000, 0xffe00000, WR_t, I1 }, /* ori */
d0efa46b
JL
123{"li", "t,I", 0, (int) M_LI, INSN_MACRO },
124{"move", "d,s", 0x0000002d, 0xfc1f07ff, WR_d|RD_s, I3 },/* daddu */
4bb0ae10
JL
125{"move", "d,s", 0x00000021, 0xfc1f07ff, WR_d|RD_s, I1 },/* addu */
126{"move", "d,s", 0x00000025, 0xfc1f07ff, WR_d|RD_s, I1 },/* or */
127{"b", "p", 0x10000000, 0xffff0000, UBD, I1 },/* beq 0,0 */
128{"b", "p", 0x04010000, 0xffff0000, UBD, I1 },/* bgez 0 */
129{"bal", "p", 0x04110000, 0xffff0000, UBD|WR_31, I1 },/* bgezal 0*/
d0efa46b
JL
130
131{"abs", "d,v", 0, (int) M_ABS, INSN_MACRO },
4bb0ae10
JL
132{"abs.s", "D,V", 0x46000005, 0xffff003f, WR_D|RD_S|FP_S, I1 },
133{"abs.d", "D,V", 0x46200005, 0xffff003f, WR_D|RD_S|FP_D, I1 },
134{"add", "d,v,t", 0x00000020, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
d0efa46b 135{"add", "t,r,I", 0, (int) M_ADD_I, INSN_MACRO },
4bb0ae10
JL
136{"add.s", "D,V,T", 0x46000000, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1},
137{"add.d", "D,V,T", 0x46200000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1},
138{"addi", "t,r,j", 0x20000000, 0xfc000000, WR_t|RD_s, I1 },
139{"addiu", "t,r,j", 0x24000000, 0xfc000000, WR_t|RD_s, I1 },
140{"addu", "d,v,t", 0x00000021, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
d0efa46b 141{"addu", "t,r,I", 0, (int) M_ADDU_I, INSN_MACRO },
4bb0ae10 142{"and", "d,v,t", 0x00000024, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
d0efa46b 143{"and", "t,r,I", 0, (int) M_AND_I, INSN_MACRO },
4bb0ae10 144{"andi", "t,r,i", 0x30000000, 0xfc000000, WR_t|RD_s, I1 },
45b14705
ILT
145/* b is at the top of the table. */
146/* bal is at the top of the table. */
4bb0ae10
JL
147{"bc0f", "p", 0x41000000, 0xffff0000, CBD|RD_CC, I1 },
148{"bc0fl", "p", 0x41020000, 0xffff0000, CBL|RD_CC, I2|T3 },
149{"bc1f", "p", 0x45000000, 0xffff0000, CBD|RD_CC|FP_S, I1 },
150{"bc1f", "N,p", 0x45000000, 0xffe30000, CBD|RD_CC|FP_S, I4 },
151{"bc1fl", "p", 0x45020000, 0xffff0000, CBL|RD_CC|FP_S, I2|T3 },
152{"bc1fl", "N,p", 0x45020000, 0xffe30000, CBL|RD_CC|FP_S, I4 },
153{"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC, I1 },
154{"bc2fl", "p", 0x49020000, 0xffff0000, CBL|RD_CC, I2|T3 },
155{"bc3f", "p", 0x4d000000, 0xffff0000, CBD|RD_CC, I1 },
156{"bc3fl", "p", 0x4d020000, 0xffff0000, CBL|RD_CC, I2|T3 },
157{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC, I1 },
158{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC, I2|T3 },
159{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC|FP_S, I1 },
160{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, I4 },
161{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|FP_S, I2|T3 },
162{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, I4 },
163{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC, I1 },
164{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC, I2|T3 },
165{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC, I1 },
166{"bc3tl", "p", 0x4d030000, 0xffff0000, CBL|RD_CC, I2|T3 },
167{"beqz", "s,p", 0x10000000, 0xfc1f0000, CBD|RD_s, I1 },
d7727fe9 168{"beqzl", "s,p", 0x50000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
4bb0ae10 169{"beq", "s,t,p", 0x10000000, 0xfc000000, CBD|RD_s|RD_t, I1 },
d0efa46b 170{"beq", "s,I,p", 0, (int) M_BEQ_I, INSN_MACRO },
4bb0ae10 171{"beql", "s,t,p", 0x50000000, 0xfc000000, CBL|RD_s|RD_t, I2|T3 },
d0efa46b
JL
172{"beql", "s,I,p", 2, (int) M_BEQL_I, INSN_MACRO },
173{"bge", "s,t,p", 0, (int) M_BGE, INSN_MACRO },
174{"bge", "s,I,p", 0, (int) M_BGE_I, INSN_MACRO },
175{"bgel", "s,t,p", 2, (int) M_BGEL, INSN_MACRO },
176{"bgel", "s,I,p", 2, (int) M_BGEL_I, INSN_MACRO },
177{"bgeu", "s,t,p", 0, (int) M_BGEU, INSN_MACRO },
178{"bgeu", "s,I,p", 0, (int) M_BGEU_I, INSN_MACRO },
179{"bgeul", "s,t,p", 2, (int) M_BGEUL, INSN_MACRO },
180{"bgeul", "s,I,p", 2, (int) M_BGEUL_I, INSN_MACRO },
4bb0ae10
JL
181{"bgez", "s,p", 0x04010000, 0xfc1f0000, CBD|RD_s, I1 },
182{"bgezl", "s,p", 0x04030000, 0xfc1f0000, CBL|RD_s, I2|T3 },
183{"bgezal", "s,p", 0x04110000, 0xfc1f0000, CBD|RD_s|WR_31, I1 },
184{"bgezall", "s,p", 0x04130000, 0xfc1f0000, CBL|RD_s, I2|T3 },
d0efa46b
JL
185{"bgt", "s,t,p", 0, (int) M_BGT, INSN_MACRO },
186{"bgt", "s,I,p", 0, (int) M_BGT_I, INSN_MACRO },
187{"bgtl", "s,t,p", 2, (int) M_BGTL, INSN_MACRO },
188{"bgtl", "s,I,p", 2, (int) M_BGTL_I, INSN_MACRO },
189{"bgtu", "s,t,p", 0, (int) M_BGTU, INSN_MACRO },
190{"bgtu", "s,I,p", 0, (int) M_BGTU_I, INSN_MACRO },
191{"bgtul", "s,t,p", 2, (int) M_BGTUL, INSN_MACRO },
192{"bgtul", "s,I,p", 2, (int) M_BGTUL_I, INSN_MACRO },
4bb0ae10
JL
193{"bgtz", "s,p", 0x1c000000, 0xfc1f0000, CBD|RD_s, I1 },
194{"bgtzl", "s,p", 0x5c000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
d0efa46b
JL
195{"ble", "s,t,p", 0, (int) M_BLE, INSN_MACRO },
196{"ble", "s,I,p", 0, (int) M_BLE_I, INSN_MACRO },
197{"blel", "s,t,p", 2, (int) M_BLEL, INSN_MACRO },
198{"blel", "s,I,p", 2, (int) M_BLEL_I, INSN_MACRO },
199{"bleu", "s,t,p", 0, (int) M_BLEU, INSN_MACRO },
200{"bleu", "s,I,p", 0, (int) M_BLEU_I, INSN_MACRO },
201{"bleul", "s,t,p", 2, (int) M_BLEUL, INSN_MACRO },
202{"bleul", "s,I,p", 2, (int) M_BLEUL_I, INSN_MACRO },
4bb0ae10
JL
203{"blez", "s,p", 0x18000000, 0xfc1f0000, CBD|RD_s, I1 },
204{"blezl", "s,p", 0x58000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
d0efa46b
JL
205{"blt", "s,t,p", 0, (int) M_BLT, INSN_MACRO },
206{"blt", "s,I,p", 0, (int) M_BLT_I, INSN_MACRO },
207{"bltl", "s,t,p", 2, (int) M_BLTL, INSN_MACRO },
208{"bltl", "s,I,p", 2, (int) M_BLTL_I, INSN_MACRO },
209{"bltu", "s,t,p", 0, (int) M_BLTU, INSN_MACRO },
210{"bltu", "s,I,p", 0, (int) M_BLTU_I, INSN_MACRO },
211{"bltul", "s,t,p", 2, (int) M_BLTUL, INSN_MACRO },
4bb0ae10
JL
212{"bltul", "s,I,p", 2, (int) M_BLTUL_I, INSN_MACRO },
213{"bltz", "s,p", 0x04000000, 0xfc1f0000, CBD|RD_s, I1 },
214{"bltzl", "s,p", 0x04020000, 0xfc1f0000, CBL|RD_s, I2|T3 },
215{"bltzal", "s,p", 0x04100000, 0xfc1f0000, CBD|RD_s|WR_31, I1 },
216{"bltzall", "s,p", 0x04120000, 0xfc1f0000, CBL|RD_s, I2|T3 },
217{"bnez", "s,p", 0x14000000, 0xfc1f0000, CBD|RD_s, I1 },
d7727fe9 218{"bnezl", "s,p", 0x54000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
4bb0ae10
JL
219{"bne", "s,t,p", 0x14000000, 0xfc000000, CBD|RD_s|RD_t, I1 },
220{"bne", "s,I,p", 0, (int) M_BNE_I, INSN_MACRO },
221{"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t, I2|T3 },
222{"bnel", "s,I,p", 2, (int) M_BNEL_I, INSN_MACRO },
223{"break", "", 0x0000000d, 0xffffffff, TRAP, I1 },
224{"break", "c", 0x0000000d, 0xfc00003f, TRAP, I1 },
225{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
226{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
227{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
228{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
229{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
230{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
231{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
232{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
233{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
234{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
235{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
236{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
237{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
238{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
239{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
240{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
241{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
242{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
243{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
244{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
245{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
246{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
247{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
248{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
249{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
250{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
251{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
252{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
253{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
254{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
255{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
256{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
257{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
258{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
259{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
260{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
261{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
262{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
263{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
264{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
265{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
266{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
267{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
268{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
269{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
270{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
271{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
272{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
273{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
274{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
275{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
276{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
277{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
278{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
279{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
280{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
281{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
282{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
283{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
284{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
285{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
286{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4 },
287{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
288{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4 },
d0efa46b 289{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b, I3 },
4bb0ae10
JL
290{"ceil.l.d", "D,S", 0x4620000a, 0xffff003f, WR_D|RD_S|FP_D, I3 },
291{"ceil.l.s", "D,S", 0x4600000a, 0xffff003f, WR_D|RD_S|FP_S, I3 },
292{"ceil.w.d", "D,S", 0x4620000e, 0xffff003f, WR_D|RD_S|FP_D, I2 },
293{"ceil.w.s", "D,S", 0x4600000e, 0xffff003f, WR_D|RD_S|FP_S, I2 },
294{"cfc0", "t,G", 0x40400000, 0xffe007ff, LCD|WR_t|RD_C0, I1 },
295{"cfc1", "t,G", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, I1 },
296{"cfc1", "t,S", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, I1 },
297{"cfc2", "t,G", 0x48400000, 0xffe007ff, LCD|WR_t|RD_C2, I1 },
298{"cfc3", "t,G", 0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3, I1 },
299{"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
300{"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, I1 },
301{"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, I1 },
302{"ctc2", "t,G", 0x48c00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
303{"ctc3", "t,G", 0x4cc00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
304{"cvt.d.l", "D,S", 0x46a00021, 0xffff003f, WR_D|RD_S|FP_D, I3 },
305{"cvt.d.s", "D,S", 0x46000021, 0xffff003f, WR_D|RD_S|FP_D|FP_S, I1 },
306{"cvt.d.w", "D,S", 0x46800021, 0xffff003f, WR_D|RD_S|FP_D, I1 },
307{"cvt.l.d", "D,S", 0x46200025, 0xffff003f, WR_D|RD_S|FP_D, I3 },
308{"cvt.l.s", "D,S", 0x46000025, 0xffff003f, WR_D|RD_S|FP_S, I3 },
309{"cvt.s.l", "D,S", 0x46a00020, 0xffff003f, WR_D|RD_S|FP_S, I3 },
310{"cvt.s.d", "D,S", 0x46200020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, I1 },
311{"cvt.s.w", "D,S", 0x46800020, 0xffff003f, WR_D|RD_S|FP_S, I1 },
312{"cvt.w.d", "D,S", 0x46200024, 0xffff003f, WR_D|RD_S|FP_D, I1 },
313{"cvt.w.s", "D,S", 0x46000024, 0xffff003f, WR_D|RD_S|FP_S, I1 },
27faaa41 314{"dabs", "d,v", 3, (int) M_DABS, INSN_MACRO },
d0efa46b 315{"dadd", "d,v,t", 0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
2bef2d3e 316{"dadd", "t,r,I", 3, (int) M_DADD_I, INSN_MACRO },
d0efa46b
JL
317{"daddi", "t,r,j", 0x60000000, 0xfc000000, WR_t|RD_s, I3 },
318{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_t|RD_s, I3 },
319{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
2bef2d3e 320{"daddu", "t,r,I", 3, (int) M_DADDU_I, INSN_MACRO },
a3066d9a
KR
321 /* start-sanitize-vr5400 */
322{"dbreak", "", 0x7000003f, 0xffffffff, 0, N5 },
323 /* end-sanitize-vr5400 */
a21e1e96 324/* dctr and dctw are used on the r5000. */
d0efa46b
JL
325{"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_b, I3 },
326{"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_b, I3 },
0cca41d4 327{"deret", "", 0x4200001f, 0xffffffff, 0, G2 },
a9c686ad 328/* For ddiv, see the comments about div. */
d0efa46b 329{"ddiv", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3 },
a9c686ad 330{"ddiv", "d,v,t", 3, (int) M_DDIV_3, INSN_MACRO },
2bef2d3e 331{"ddiv", "d,v,I", 3, (int) M_DDIV_3I, INSN_MACRO },
a9c686ad 332/* For ddivu, see the comments about div. */
d0efa46b 333{"ddivu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3 },
a9c686ad 334{"ddivu", "d,v,t", 3, (int) M_DDIVU_3, INSN_MACRO },
2bef2d3e 335{"ddivu", "d,v,I", 3, (int) M_DDIVU_3I, INSN_MACRO },
a9c686ad
ILT
336/* The MIPS assembler treats the div opcode with two operands as
337 though the first operand appeared twice (the first operand is both
338 a source and a destination). To get the div machine instruction,
547998d2 339 you must use an explicit destination of $0. */
4bb0ae10
JL
340{"div", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
341{"div", "z,t", 0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
a9c686ad 342{"div", "d,v,t", 0, (int) M_DIV_3, INSN_MACRO },
45b14705 343{"div", "d,v,I", 0, (int) M_DIV_3I, INSN_MACRO },
276c2d7d 344 /* start-sanitize-r5900 */
d0efa46b 345{"div1", "s,t", 0x7000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 346 /* end-sanitize-r5900 */
4bb0ae10
JL
347{"div.d", "D,V,T", 0x46200003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
348{"div.s", "D,V,T", 0x46000003, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
a9c686ad 349/* For divu, see the comments about div. */
4bb0ae10
JL
350{"divu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
351{"divu", "z,t", 0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
a9c686ad 352{"divu", "d,v,t", 0, (int) M_DIVU_3, INSN_MACRO },
45b14705 353{"divu", "d,v,I", 0, (int) M_DIVU_3I, INSN_MACRO },
276c2d7d 354 /* start-sanitize-r5900 */
d0efa46b 355{"divu1", "s,t", 0x7000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 356 /* end-sanitize-r5900 */
8d67dc30 357{"dla", "t,A(b)", 3, (int) M_DLA_AB, INSN_MACRO },
d0efa46b
JL
358{"dli", "t,j", 0x24000000, 0xffe00000, WR_t, I3 }, /* addiu */
359{"dli", "t,i", 0x34000000, 0xffe00000, WR_t, I3 }, /* ori */
8d67dc30 360{"dli", "t,I", 3, (int) M_DLI, INSN_MACRO },
d0efa46b
JL
361{"dmadd16", "s,t", 0x00000029, 0xfc00ffff, RD_s|RD_t|WR_LO|RD_LO, V1 },
362{"dmfc0", "t,G", 0x40200000, 0xffe007ff, LCD|WR_t|RD_C0, I3 },
363{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, I3 },
4bb0ae10
JL
364{"dmfc1", "t,S", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I3 },
365{"dmtc1", "t,S", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I3 },
2bef2d3e
ILT
366{"dmul", "d,v,t", 3, (int) M_DMUL, INSN_MACRO },
367{"dmul", "d,v,I", 3, (int) M_DMUL_I, INSN_MACRO },
368{"dmulo", "d,v,t", 3, (int) M_DMULO, INSN_MACRO },
369{"dmulo", "d,v,I", 3, (int) M_DMULO_I, INSN_MACRO },
370{"dmulou", "d,v,t", 3, (int) M_DMULOU, INSN_MACRO },
371{"dmulou", "d,v,I", 3, (int) M_DMULOU_I, INSN_MACRO },
0cca41d4
GRK
372{"dmult", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3},
373{"dmult", "d,s,t", 0x0000001c, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T4},
374{"dmultu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3},
375{"dmultu", "d,s,t", 0x0000001d, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T4},
d0efa46b
JL
376{"dneg", "d,w", 0x0000002e, 0xffe007ff, WR_d|RD_t, I3 }, /* dsub 0 */
377{"dnegu", "d,w", 0x0000002f, 0xffe007ff, WR_d|RD_t, I3 }, /* dsubu 0*/
378{"drem", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3 },
2bef2d3e
ILT
379{"drem", "d,v,t", 3, (int) M_DREM_3, INSN_MACRO },
380{"drem", "d,v,I", 3, (int) M_DREM_3I, INSN_MACRO },
d0efa46b 381{"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I3 },
2bef2d3e
ILT
382{"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO },
383{"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO },
a3066d9a
KR
384 /* start-sanitize-vr5400 */
385{"dret", "", 0x7000003e, 0xffffffff, 0, N5 },
386{"drorv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, N5 },
387{"dror32", "d,t,>", 0x0020003e, 0xffe0003f, WR_d|RD_t, N5 },
388{"dror", "d,t,<", 0x00200036, 0xffe0003f, WR_d|RD_t, N5 },
389 /* end-sanitize-vr5400 */
d0efa46b
JL
390{"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
391{"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t, I3 },
392{"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsllv */
393{"dsll", "d,w,>", 0x0000003c, 0xffe0003f, WR_d|RD_t, I3 }, /* dsll32 */
394{"dsll", "d,w,<", 0x00000038, 0xffe0003f, WR_d|RD_t, I3 },
395{"dsrav", "d,t,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
396{"dsra32", "d,w,<", 0x0000003f, 0xffe0003f, WR_d|RD_t, I3 },
397{"dsra", "d,w,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsrav */
398{"dsra", "d,w,>", 0x0000003f, 0xffe0003f, WR_d|RD_t, I3 }, /* dsra32 */
399{"dsra", "d,w,<", 0x0000003b, 0xffe0003f, WR_d|RD_t, I3 },
400{"dsrlv", "d,t,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
401{"dsrl32", "d,w,<", 0x0000003e, 0xffe0003f, WR_d|RD_t, I3 },
402{"dsrl", "d,w,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsrlv */
403{"dsrl", "d,w,>", 0x0000003e, 0xffe0003f, WR_d|RD_t, I3 }, /* dsrl32 */
404{"dsrl", "d,w,<", 0x0000003a, 0xffe0003f, WR_d|RD_t, I3 },
405{"dsub", "d,v,t", 0x0000002e, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
2bef2d3e 406{"dsub", "d,v,I", 3, (int) M_DSUB_I, INSN_MACRO },
d0efa46b 407{"dsubu", "d,v,t", 0x0000002f, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
2bef2d3e 408{"dsubu", "d,v,I", 3, (int) M_DSUBU_I, INSN_MACRO },
b0326e92 409{"eret", "", 0x42000018, 0xffffffff, 0, I3 },
4bb0ae10
JL
410{"floor.l.d", "D,S", 0x4620000b, 0xffff003f, WR_D|RD_S|FP_D, I3 },
411{"floor.l.s", "D,S", 0x4600000b, 0xffff003f, WR_D|RD_S|FP_S, I3 },
412{"floor.w.d", "D,S", 0x4620000f, 0xffff003f, WR_D|RD_S|FP_D, I2 },
413{"floor.w.s", "D,S", 0x4600000f, 0xffff003f, WR_D|RD_S|FP_S, I2 },
d0efa46b
JL
414{"flushi", "", 0xbc010000, 0xffffffff, 0, L1 },
415{"flushd", "", 0xbc020000, 0xffffffff, 0, L1 },
416{"flushid", "", 0xbc030000, 0xffffffff, 0, L1 },
417{"hibernate","", 0x42000023, 0xffffffff, 0, V1 },
4bb0ae10
JL
418{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, I1 },
419{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, I1 }, /* jr */
942a4965
ILT
420/* SVR4 PIC code requires special handling for j, so it must be a
421 macro. */
422{"j", "a", 0, (int) M_J_A, INSN_MACRO },
423/* This form of j is used by the disassembler and internally by the
424 assembler, but will never match user input (because the line above
425 will match first). */
4bb0ae10
JL
426{"j", "a", 0x08000000, 0xfc000000, UBD, I1 },
427{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, I1 },
428{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, I1 },
942a4965
ILT
429/* SVR4 PIC code requires special handling for jal, so it must be a
430 macro. */
431{"jal", "d,s", 0, (int) M_JAL_2, INSN_MACRO },
432{"jal", "s", 0, (int) M_JAL_1, INSN_MACRO },
433{"jal", "a", 0, (int) M_JAL_A, INSN_MACRO },
434/* This form of jal is used by the disassembler and internally by the
435 assembler, but will never match user input (because the line above
436 will match first). */
4bb0ae10 437{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31, I1 },
b7dd310d
GRK
438 /* jalx really should only be avaliable if mips16 is available,
439 but for now make it I1. */
440{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, I1 },
45b14705 441{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO },
4bb0ae10 442{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 443{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO },
4bb0ae10 444{"lbu", "t,o(b)", 0x90000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 445{"lbu", "t,A(b)", 0, (int) M_LBU_AB, INSN_MACRO },
d0efa46b 446{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_t|RD_b, I3 },
45b14705
ILT
447{"ld", "t,o(b)", 0, (int) M_LD_OB, INSN_MACRO },
448{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO },
4bb0ae10
JL
449{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 },
450{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 },
2bef2d3e
ILT
451{"ldc1", "T,A(b)", 2, (int) M_LDC1_AB, INSN_MACRO },
452{"ldc1", "E,A(b)", 2, (int) M_LDC1_AB, INSN_MACRO },
4bb0ae10 453{"l.d", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 }, /* ldc1 */
942a4965
ILT
454{"l.d", "T,o(b)", 0, (int) M_L_DOB, INSN_MACRO },
455{"l.d", "T,A(b)", 0, (int) M_L_DAB, INSN_MACRO },
d0efa46b 456{"ldc2", "E,o(b)", 0xd8000000, 0xfc000000, CLD|RD_b|WR_CC, I2 },
2bef2d3e 457{"ldc2", "E,A(b)", 2, (int) M_LDC2_AB, INSN_MACRO },
d0efa46b 458{"ldc3", "E,o(b)", 0xdc000000, 0xfc000000, CLD|RD_b|WR_CC, I2 },
2bef2d3e 459{"ldc3", "E,A(b)", 2, (int) M_LDC3_AB, INSN_MACRO },
d0efa46b 460{"ldl", "t,o(b)", 0x68000000, 0xfc000000, LDD|WR_t|RD_b, I3 },
2bef2d3e 461{"ldl", "t,A(b)", 3, (int) M_LDL_AB, INSN_MACRO },
d0efa46b 462{"ldr", "t,o(b)", 0x6c000000, 0xfc000000, LDD|WR_t|RD_b, I3 },
2bef2d3e 463{"ldr", "t,A(b)", 3, (int) M_LDR_AB, INSN_MACRO },
d0efa46b 464{"ldxc1", "D,t(b)", 0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b, I4 },
4bb0ae10 465{"lh", "t,o(b)", 0x84000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 466{"lh", "t,A(b)", 0, (int) M_LH_AB, INSN_MACRO },
4bb0ae10 467{"lhu", "t,o(b)", 0x94000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705
ILT
468{"lhu", "t,A(b)", 0, (int) M_LHU_AB, INSN_MACRO },
469/* li is at the start of the table. */
470{"li.d", "t,F", 0, (int) M_LI_D, INSN_MACRO },
471{"li.d", "T,L", 0, (int) M_LI_DD, INSN_MACRO },
472{"li.s", "t,f", 0, (int) M_LI_S, INSN_MACRO },
473{"li.s", "T,l", 0, (int) M_LI_SS, INSN_MACRO },
d0efa46b 474{"ll", "t,o(b)", 0xc0000000, 0xfc000000, LDD|RD_b|WR_t, I2 },
2bef2d3e 475{"ll", "t,A(b)", 2, (int) M_LL_AB, INSN_MACRO },
d0efa46b 476{"lld", "t,o(b)", 0xd0000000, 0xfc000000, LDD|RD_b|WR_t, I3 },
2bef2d3e 477{"lld", "t,A(b)", 3, (int) M_LLD_AB, INSN_MACRO },
4bb0ae10 478{"lui", "t,u", 0x3c000000, 0xffe00000, WR_t, I1 },
276c2d7d 479 /* start-sanitize-r5900 */
d0efa46b 480{"lq", "t,o(b)", 0x78000000, 0xfc000000, WR_t|RD_b, T5 },
276c2d7d 481 /* end-sanitize-r5900 */
4bb0ae10 482{"lw", "t,o(b)", 0x8c000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 483{"lw", "t,A(b)", 0, (int) M_LW_AB, INSN_MACRO },
4bb0ae10 484{"lwc0", "E,o(b)", 0xc0000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
45b14705 485{"lwc0", "E,A(b)", 0, (int) M_LWC0_AB, INSN_MACRO },
4bb0ae10
JL
486{"lwc1", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 },
487{"lwc1", "E,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 },
45b14705
ILT
488{"lwc1", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
489{"lwc1", "E,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
4bb0ae10 490{"l.s", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 }, /* lwc1 */
45b14705 491{"l.s", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
4bb0ae10 492{"lwc2", "E,o(b)", 0xc8000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
45b14705 493{"lwc2", "E,A(b)", 0, (int) M_LWC2_AB, INSN_MACRO },
4bb0ae10 494{"lwc3", "E,o(b)", 0xcc000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
45b14705 495{"lwc3", "E,A(b)", 0, (int) M_LWC3_AB, INSN_MACRO },
4bb0ae10 496{"lwl", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 497{"lwl", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO },
d0efa46b 498{"lcache", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, I2 }, /* same */
2bef2d3e 499{"lcache", "t,A(b)", 2, (int) M_LWL_AB, INSN_MACRO }, /* as lwl */
4bb0ae10 500{"lwr", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
45b14705 501{"lwr", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO },
d0efa46b 502{"flush", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, I2 }, /* same */
2bef2d3e 503{"flush", "t,A(b)", 2, (int) M_LWR_AB, INSN_MACRO }, /* as lwr */
d0efa46b 504{"lwu", "t,o(b)", 0x9c000000, 0xfc000000, LDD|RD_b|WR_t, I3 },
2bef2d3e 505{"lwu", "t,A(b)", 3, (int) M_LWU_AB, INSN_MACRO },
d0efa46b 506{"lwxc1", "D,t(b)", 0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b, I4 },
a3066d9a
KR
507 /* start-sanitize-vr5400 */
508{"macc", "d,s,t", 0x00000158, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
509{"maccu", "d,s,t", 0x00000159, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
510{"macchi", "d,s,t", 0x00000358, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
511{"macchiu", "d,s,t", 0x00000359, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
512 /* end-sanitize-vr5400 */
d0efa46b
JL
513{"mad", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO, P3 },
514{"madu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO, P3 },
515{"addciu", "t,r,j", 0x70000000, 0xfc000000, WR_t|RD_s,L1 },
4bb0ae10
JL
516{"madd.d", "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
517{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
518/* start-sanitize-r5900 */
519{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, T5 },
a2768484 520 /* end-sanitize-r5900 */
d0efa46b 521{"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, L1 },
0cca41d4
GRK
522{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, G1 },
523{"madd", "d,s,t", 0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1 },
276c2d7d 524 /* start-sanitize-r5900 */
d0efa46b
JL
525{"madd1", "s,t", 0x70000020, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
526{"madd1", "d,s,t", 0x70000020, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5 },
276c2d7d 527 /* end-sanitize-r5900 */
d0efa46b 528{"maddu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, L1 },
0cca41d4
GRK
529{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, G1 },
530{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1 },
276c2d7d 531 /* start-sanitize-r5900 */
d0efa46b
JL
532{"maddu1", "s,t", 0x70000021, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
533{"maddu1", "d,s,t", 0x70000021, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5 },
276c2d7d 534 /* end-sanitize-r5900 */
d0efa46b 535{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO, V1 },
a3066d9a
KR
536 /* start-sanitize-vr5400 */
537{"mfpc", "t,P", 0x4000c801, 0xffe0ffc1, RD_C0|WR_t, N5 },
538{"mfps", "t,P", 0x4000c800, 0xffe0ffc1, RD_C0|WR_t, N5 },
539{"mtpc", "t,P", 0x4080c801, 0xffe0ffc1, WR_C0|RD_t, N5 },
540{"mtps", "t,P", 0x4080c800, 0xffe0ffc1, WR_C0|RD_t, N5 },
541 /* end-sanitize-vr5400 */
4bb0ae10
JL
542{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0, I1 },
543{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
544{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
545{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2, I1 },
546{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, I1 },
a3066d9a
KR
547 /* start-sanitize-vr5400 */
548{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, N5 },
549 /* end-sanitize-vr5400 */
4bb0ae10 550{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, I1 },
276c2d7d 551 /* start-sanitize-r5900 */
d0efa46b 552{"mfhi1", "d", 0x70000010, 0xffff07ff, WR_d|RD_HI, T5 },
276c2d7d 553 /* end-sanitize-r5900 */
4bb0ae10 554{"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO, I1 },
276c2d7d 555 /* start-sanitize-r5900 */
d0efa46b
JL
556{"mflo1", "d", 0x70000012, 0xffff07ff, WR_d|RD_LO, T5 },
557{"mfsa", "d", 0x00000028, 0xffff07ff, WR_d, T5 },
276c2d7d 558 /* end-sanitize-r5900 */
4bb0ae10
JL
559{"mov.d", "D,S", 0x46200006, 0xffff003f, WR_D|RD_S|FP_D, I1 },
560{"mov.s", "D,S", 0x46000006, 0xffff003f, WR_D|RD_S|FP_S, I1 },
561{"movf", "d,s,N", 0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_D|FP_S, I4 },
562{"movf.d", "D,S,N", 0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I4 },
563{"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, I4 },
d0efa46b 564{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, I4 },
a2768484 565 /* start-sanitize-r5900 */
4bb0ae10 566{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
a2768484 567 /* end-sanitize-r5900 */
a0539c61 568{"ffc", "d,v", 0x0000000b, 0xfc1f07ff, WR_d|RD_s,L1 },
4bb0ae10
JL
569{"movn.d", "D,S,t", 0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I4 },
570{"movn.s", "D,S,t", 0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, I4 },
d0efa46b 571{"movt", "d,s,N", 0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC, I4 },
4bb0ae10
JL
572{"movt.d", "D,S,N", 0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I4 },
573{"movt.s", "D,S,N", 0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, I4 },
d0efa46b 574{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, I4 },
a2768484 575 /* start-sanitize-r5900 */
4bb0ae10 576{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
a2768484 577 /* end-sanitize-r5900 */
a0539c61 578{"ffs", "d,v", 0x0000000a, 0xfc1f07ff, WR_d|RD_s,L1 },
4bb0ae10
JL
579{"movz.d", "D,S,t", 0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I4 },
580{"movz.s", "D,S,t", 0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, I4 },
a3066d9a
KR
581 /* start-sanitize-vr5400 */
582{"msac", "d,s,t", 0x000001d8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
583{"msacu", "d,s,t", 0x000001d9, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
584{"msachi", "d,s,t", 0x000003d8, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
585{"msachiu", "d,s,t", 0x000003d9, 0xfc0007ff, RD_s|RD_t|MOD_HILO|WR_d, N5 },
586 /* end-sanitize-vr5400 */
45b14705 587/* move is at the top of the table. */
4bb0ae10
JL
588{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
589{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
590/* start-sanitize-r5900 */
591{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, T5 },
592/* end-sanitize-r5900 */
593{"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,L1 },
594{"msubu", "s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO,L1 },
595{"mtc0", "t,G", 0x40800000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, I1 },
596{"mtc1", "t,S", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I1 },
597{"mtc1", "t,G", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I1 },
598{"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, I1 },
599{"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, I1 },
a3066d9a
KR
600 /* start-sanitize-vr5400 */
601{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, N5 },
602 /* end-sanitize-vr5400 */
4bb0ae10 603{"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI, I1 },
276c2d7d 604 /* start-sanitize-r5900 */
d0efa46b 605{"mthi1", "s", 0x70000011, 0xfc1fffff, RD_s|WR_HI, T5 },
276c2d7d 606 /* end-sanitize-r5900 */
4bb0ae10 607{"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO, I1 },
276c2d7d 608 /* start-sanitize-r5900 */
d0efa46b 609{"mtlo1", "s", 0x70000013, 0xfc1fffff, RD_s|WR_LO, T5 },
6546a590 610{"mtsa", "s", 0x00000029, 0xfc1fffff, RD_s, T5 },
d0efa46b
JL
611{"mtsab", "s,j", 0x04180000, 0xfc1f0000, RD_s, T5 },
612{"mtsah", "s,j", 0x04190000, 0xfc1f0000, RD_s, T5 },
276c2d7d 613 /* end-sanitize-r5900 */
4bb0ae10
JL
614{"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
615{"mul.s", "D,V,T", 0x46000002, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
a3066d9a
KR
616 /* start-sanitize-vr5400 */
617{"mulu", "d,s,t", 0x00000059, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
618{"mulhi", "d,s,t", 0x00000258, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
619{"mulhiu", "d,s,t", 0x00000259, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
620{"mul", "d,s,t", 0x00000058, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
621 /* end-sanitize-vr5400 */
d0efa46b 622{"mul", "d,v,t", 0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, P3 },
45b14705
ILT
623{"mul", "d,v,t", 0, (int) M_MUL, INSN_MACRO },
624{"mul", "d,v,I", 0, (int) M_MUL_I, INSN_MACRO },
625{"mulo", "d,v,t", 0, (int) M_MULO, INSN_MACRO },
626{"mulo", "d,v,I", 0, (int) M_MULO_I, INSN_MACRO },
627{"mulou", "d,v,t", 0, (int) M_MULOU, INSN_MACRO },
628{"mulou", "d,v,I", 0, (int) M_MULOU_I, INSN_MACRO },
a3066d9a
KR
629 /* start-sanitize-vr5400 */
630{"muls", "d,s,t", 0x000000d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
631{"mulsu", "d,s,t", 0x000000d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
632{"mulshi", "d,s,t", 0x000002d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
633{"mulshiu", "d,s,t", 0x000002d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
634 /* end-sanitize-vr5400 */
b0326e92 635{"mult", "s,t", 0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1},
80ae705d 636{"mult", "d,s,t", 0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1},
276c2d7d 637 /* start-sanitize-r5900 */
b0326e92 638{"mult1", "d,s,t", 0x70000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5},
276c2d7d 639 /* end-sanitize-r5900 */
b0326e92 640{"multu", "s,t", 0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1},
80ae705d 641{"multu", "d,s,t", 0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, G1},
276c2d7d 642 /* start-sanitize-r5900 */
b0326e92 643{"multu1", "d,s,t", 0x70000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d, T5},
276c2d7d 644 /* end-sanitize-r5900 */
4bb0ae10
JL
645{"neg", "d,w", 0x00000022, 0xffe007ff, WR_d|RD_t, I1 }, /* sub 0 */
646{"negu", "d,w", 0x00000023, 0xffe007ff, WR_d|RD_t, I1 }, /* subu 0 */
647{"neg.d", "D,V", 0x46200007, 0xffff003f, WR_D|RD_S|FP_D, I1 },
648{"neg.s", "D,V", 0x46000007, 0xffff003f, WR_D|RD_S|FP_S, I1 },
649{"nmadd.d", "D,R,S,T", 0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
650{"nmadd.s", "D,R,S,T", 0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
651{"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
652{"nmsub.s", "D,R,S,T", 0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
45b14705 653/* nop is at the start of the table. */
4bb0ae10 654{"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
942a4965 655{"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO },
581c03af 656{"not", "d,v", 0x00000027, 0xfc1f07ff, WR_d|RD_s|RD_t, I1 },/*nor d,s,0*/
4bb0ae10 657{"or", "d,v,t", 0x00000025, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705 658{"or", "t,r,I", 0, (int) M_OR_I, INSN_MACRO },
4bb0ae10 659{"ori", "t,r,i", 0x34000000, 0xfc000000, WR_t|RD_s, I1 },
276c2d7d
GRK
660
661 /* start-sanitize-r5900 */
d0efa46b
JL
662{"pabsh", "d,t", 0x70000168, 0xffe007ff, WR_d|RD_t, T5 },
663{"pabsw", "d,t", 0x70000068, 0xffe007ff, WR_d|RD_t, T5 },
664{"paddb", "d,v,t", 0x70000208, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
665{"paddh", "d,v,t", 0x70000108, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
666{"paddw", "d,v,t", 0x70000008, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
667{"paddsb", "d,v,t", 0x70000608, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
668{"paddsh", "d,v,t", 0x70000508, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
669{"paddsw", "d,v,t", 0x70000408, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
670{"paddub", "d,v,t", 0x70000628, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
671{"padduh", "d,v,t", 0x70000528, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
672{"padduw", "d,v,t", 0x70000428, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
673{"padsbh", "d,v,t", 0x70000128, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
674{"pand", "d,v,t", 0x70000489, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
675{"pceqb", "d,v,t", 0x700002a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
676{"pceqh", "d,v,t", 0x700001a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
677{"pceqw", "d,v,t", 0x700000a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 678
d0efa46b
JL
679{"pcgtb", "d,v,t", 0x70000288, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
680{"pcgth", "d,v,t", 0x70000188, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
681{"pcgtw", "d,v,t", 0x70000088, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 682
d0efa46b 683{"pcpyh", "d,t", 0x700006e9, 0xffe007ff, WR_d|RD_t, T5 },
276c2d7d 684
d0efa46b
JL
685{"pcpyld", "d,v,t", 0x70000389, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
686{"pcpyud", "d,v,t", 0x700003a9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 687
d0efa46b
JL
688{"pdivbw", "s,t", 0x70000749, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
689{"pdivuw", "s,t", 0x70000369, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
690{"pdivw", "s,t", 0x70000349, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 691
d0efa46b
JL
692{"pexch", "d,t", 0x700006a9, 0xffe007ff, WR_d|RD_t, T5 },
693{"pexcw", "d,t", 0x700007a9, 0xffe007ff, WR_d|RD_t, T5 },
694{"pexeh", "d,t", 0x70000689, 0xffe007ff, WR_d|RD_t, T5 },
695{"pexoh", "d,t", 0x70000689, 0xffe007ff, WR_d|RD_t, T5 },
696{"pexew", "d,t", 0x70000789, 0xffe007ff, WR_d|RD_t, T5 },
697{"pexow", "d,t", 0x70000789, 0xffe007ff, WR_d|RD_t, T5 },
276c2d7d 698
d0efa46b 699{"pext5", "d,t", 0x70000788, 0xffe007ff, WR_d|RD_t, T5 },
276c2d7d 700
d0efa46b
JL
701{"pextlb", "d,v,t", 0x70000688, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
702{"pextlh", "d,v,t", 0x70000588, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
703{"pextlw", "d,v,t", 0x70000488, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
704{"pextub", "d,v,t", 0x700006a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
705{"pextuh", "d,v,t", 0x700005a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
706{"pextuw", "d,v,t", 0x700004a8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 707
d0efa46b
JL
708{"phmaddh", "d,v,t", 0x70000449, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
709{"phmsubh", "d,v,t", 0x70000549, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 710
d0efa46b
JL
711{"pinth", "d,v,t", 0x70000289, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
712{"pinteh", "d,v,t", 0x700002a9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
713{"pintoh", "d,v,t", 0x700002a9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 714
d0efa46b 715{"plzcw", "d,v", 0x70000004, 0xfc1f07ff, WR_d|RD_s, T5 },
276c2d7d 716
d0efa46b
JL
717{"pmaddh", "d,v,t", 0x70000409, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
718{"pmadduw", "d,v,t", 0x70000029, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
719{"pmaddw", "d,v,t", 0x70000009, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 720
d0efa46b
JL
721{"pmaxh", "d,v,t", 0x700001c8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
722{"pmaxw", "d,v,t", 0x700000c8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 723
d0efa46b
JL
724{"pmfhi", "d", 0x70000209, 0xffff07ff, WR_d|RD_HI, T5 },
725{"pmflo", "d", 0x70000249, 0xffff07ff, WR_d|RD_LO, T5 },
276c2d7d 726
d0efa46b
JL
727{"pmfhl.lw", "d", 0x70000030, 0xffff07ff, WR_d|RD_LO|RD_HI, T5 },
728{"pmfhl.uw", "d", 0x70000070, 0xffff07ff, WR_d|RD_LO|RD_HI, T5 },
729{"pmfhl.slw","d", 0x700000b0, 0xffff07ff, WR_d|RD_LO|RD_HI, T5 },
730{"pmfhl.lh", "d", 0x700000f0, 0xffff07ff, WR_d|RD_LO|RD_HI, T5 },
731{"pmfhl.sh", "d", 0x70000130, 0xffff07ff, WR_d|RD_LO|RD_HI, T5 },
276c2d7d 732
d0efa46b
JL
733{"pminh", "d,v,t", 0x700001e8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
734{"pminw", "d,v,t", 0x700000e8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 735
d0efa46b
JL
736{"pmsubh", "d,v,t", 0x70000509, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
737{"pmsubw", "d,v,t", 0x70000109, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 738
d0efa46b
JL
739{"pmthi", "v", 0x70000229, 0xfc1fffff, WR_HI|RD_s, T5 },
740{"pmtlo", "v", 0x70000269, 0xfc1fffff, WR_LO|RD_s, T5 },
276c2d7d 741
d0efa46b 742{"pmthl.lw", "v", 0x70000031, 0xfc1fffff, WR_HI|WR_LO|RD_s, T5 },
276c2d7d 743
d0efa46b
JL
744{"pmulth", "d,v,t", 0x70000709, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
745{"pmultuw", "d,v,t", 0x70000329, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
746{"pmultw", "d,v,t", 0x70000309, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO, T5 },
276c2d7d 747
d0efa46b
JL
748{"pnor", "d,v,t", 0x700004e9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
749{"por", "d,v,t", 0x700004a9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 750
d0efa46b 751{"ppac5", "d,t", 0x700007c8, 0xffe007ff, WR_d|RD_t, T5 },
276c2d7d 752
d0efa46b
JL
753{"ppacb", "d,v,t", 0x700006c8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
754{"ppach", "d,v,t", 0x700005c8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
755{"ppacw", "d,v,t", 0x700004c8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 756
d0efa46b
JL
757{"prevh", "d,t", 0x700006c9, 0xffe007ff, WR_d|RD_t, T5 },
758{"prot3w", "d,t", 0x700007c9, 0xffe007ff, WR_d|RD_t, T5 },
276c2d7d 759
d0efa46b
JL
760{"psllh", "d,t,<", 0x70000034, 0xffe0003f, WR_d|RD_t, T5 },
761{"psllvw", "d,t,s", 0x70000089, 0xfc0007ff, WR_d|RD_t|RD_s, T5 },
762{"psllw", "d,t,<", 0x7000003c, 0xffe0003f, WR_d|RD_t, T5 },
276c2d7d 763
d0efa46b
JL
764{"psrah", "d,t,<", 0x70000037, 0xffe0003f, WR_d|RD_t, T5 },
765{"psravw", "d,t,s", 0x700000e9, 0xfc0007ff, WR_d|RD_t|RD_s, T5 },
766{"psraw", "d,t,<", 0x7000003f, 0xffe0003f, WR_d|RD_t, T5 },
276c2d7d 767
d0efa46b
JL
768{"psrlh", "d,t,<", 0x70000036, 0xffe0003f, WR_d|RD_t, T5 },
769{"psrlvw", "d,t,s", 0x700000c9, 0xfc0007ff, WR_d|RD_t|RD_s, T5 },
770{"psrlw", "d,t,<", 0x7000003e, 0xffe0003f, WR_d|RD_t, T5 },
276c2d7d 771
d0efa46b
JL
772{"psubb", "d,v,t", 0x70000248, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
773{"psubh", "d,v,t", 0x70000148, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
774{"psubsb", "d,v,t", 0x70000648, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
775{"psubsh", "d,v,t", 0x70000548, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
776{"psubsw", "d,v,t", 0x70000448, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
777{"psubub", "d,v,t", 0x70000668, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
778{"psubuh", "d,v,t", 0x70000568, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
779{"psubuw", "d,v,t", 0x70000468, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
780{"psubw", "d,v,t", 0x70000048, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d 781
d0efa46b 782{"pxor", "d,v,t", 0x700004c9, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d
GRK
783 /* end-sanitize-r5900 */
784
0cca41d4 785{"pref", "k,o(b)", 0xcc000000, 0xfc000000, RD_b, I4|T4 },
d0efa46b 786{"prefx", "h,t(b)", 0x4c00000f, 0xfc0007ff, RD_b|RD_t, I4 },
276c2d7d
GRK
787
788 /* start-sanitize-r5900 */
d0efa46b 789{"qfsrv", "d,v,t", 0x700006e8, 0xfc0007ff, WR_d|RD_s|RD_t, T5 },
276c2d7d
GRK
790 /* end-sanitize-r5900 */
791
4bb0ae10
JL
792{"recip.d", "D,S", 0x46200015, 0xffff003f, WR_D|RD_S|FP_D, I4 },
793{"recip.s", "D,S", 0x46000015, 0xffff003f, WR_D|RD_S|FP_S, I4 },
794{"rem", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
45b14705
ILT
795{"rem", "d,v,t", 0, (int) M_REM_3, INSN_MACRO },
796{"rem", "d,v,I", 0, (int) M_REM_3I, INSN_MACRO },
4bb0ae10 797{"remu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO, I1 },
45b14705
ILT
798{"remu", "d,v,t", 0, (int) M_REMU_3, INSN_MACRO },
799{"remu", "d,v,I", 0, (int) M_REMU_3I, INSN_MACRO },
b0326e92 800{"rfe", "", 0x42000010, 0xffffffff, 0, I1|T3 },
45b14705
ILT
801{"rol", "d,v,t", 0, (int) M_ROL, INSN_MACRO },
802{"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO },
a3066d9a
KR
803 /* start-sanitize-vr5400 */
804{"ror", "d,t,<", 0x00200002, 0xffe0003f, WR_d|RD_t, N5 },
805 /* end-sanitize-vr5400 */
45b14705
ILT
806{"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO },
807{"ror", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO },
a3066d9a
KR
808 /* start-sanitize-vr5400 */
809{"rorv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, N5 },
810 /* end-sanitize-vr5400 */
4bb0ae10
JL
811{"round.l.d", "D,S", 0x46200008, 0xffff003f, WR_D|RD_S|FP_D, I3 },
812{"round.l.s", "D,S", 0x46000008, 0xffff003f, WR_D|RD_S|FP_S, I3 },
813{"round.w.d", "D,S", 0x4620000c, 0xffff003f, WR_D|RD_S|FP_D, I2 },
814{"round.w.s", "D,S", 0x4600000c, 0xffff003f, WR_D|RD_S|FP_S, I2 },
815{"rsqrt.d", "D,S", 0x46200016, 0xffff003f, WR_D|RD_S|FP_D, I4 },
816{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|FP_S, I4 },
817/* start-sanitize-r5900 */
818{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|FP_S, T5 },
819/* end-sanitize-r5900 */
820{"sb", "t,o(b)", 0xa0000000, 0xfc000000, SM|RD_t|RD_b, I1 },
45b14705 821{"sb", "t,A(b)", 0, (int) M_SB_AB, INSN_MACRO },
d0efa46b 822{"sc", "t,o(b)", 0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, I2 },
2bef2d3e 823{"sc", "t,A(b)", 2, (int) M_SC_AB, INSN_MACRO },
d0efa46b 824{"scd", "t,o(b)", 0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, I3 },
2bef2d3e 825{"scd", "t,A(b)", 3, (int) M_SCD_AB, INSN_MACRO },
d0efa46b 826{"sd", "t,o(b)", 0xfc000000, 0xfc000000, SM|RD_t|RD_b, I3 },
45b14705
ILT
827{"sd", "t,o(b)", 0, (int) M_SD_OB, INSN_MACRO },
828{"sd", "t,A(b)", 0, (int) M_SD_AB, INSN_MACRO },
0cca41d4
GRK
829{"sdbbp", "", 0x0000000e, 0xffffffff, TRAP, G2 },
830{"sdbbp", "c", 0x0000000e, 0xfc00003f, TRAP, G2 },
4bb0ae10
JL
831{"sdc1", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, I2 },
832{"sdc1", "E,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, I2 },
2bef2d3e
ILT
833{"sdc1", "T,A(b)", 2, (int) M_SDC1_AB, INSN_MACRO },
834{"sdc1", "E,A(b)", 2, (int) M_SDC1_AB, INSN_MACRO },
d0efa46b 835{"sdc2", "E,o(b)", 0xf8000000, 0xfc000000, SM|RD_C2|RD_b, I2 },
2bef2d3e 836{"sdc2", "E,A(b)", 2, (int) M_SDC2_AB, INSN_MACRO },
d0efa46b 837{"sdc3", "E,o(b)", 0xfc000000, 0xfc000000, SM|RD_C3|RD_b, I2 },
2bef2d3e 838{"sdc3", "E,A(b)", 2, (int) M_SDC3_AB, INSN_MACRO },
d0efa46b 839{"s.d", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b, I2 },
2bef2d3e
ILT
840{"s.d", "T,o(b)", 0, (int) M_S_DOB, INSN_MACRO },
841{"s.d", "T,A(b)", 0, (int) M_S_DAB, INSN_MACRO },
d0efa46b 842{"sdl", "t,o(b)", 0xb0000000, 0xfc000000, SM|RD_t|RD_b, I3 },
2bef2d3e 843{"sdl", "t,A(b)", 3, (int) M_SDL_AB, INSN_MACRO },
d0efa46b 844{"sdr", "t,o(b)", 0xb4000000, 0xfc000000, SM|RD_t|RD_b, I3 },
2bef2d3e 845{"sdr", "t,A(b)", 3, (int) M_SDR_AB, INSN_MACRO },
d0efa46b 846{"sdxc1", "S,t(b)", 0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b, I4 },
4bb0ae10
JL
847{"selsl", "d,v,t", 0x00000005, 0xfc0007ff, WR_d|RD_s|RD_t,L1 },
848{"selsr", "d,v,t", 0x00000001, 0xfc0007ff, WR_d|RD_s|RD_t,L1 },
45b14705
ILT
849{"seq", "d,v,t", 0, (int) M_SEQ, INSN_MACRO },
850{"seq", "d,v,I", 0, (int) M_SEQ_I, INSN_MACRO },
851{"sge", "d,v,t", 0, (int) M_SGE, INSN_MACRO },
852{"sge", "d,v,I", 0, (int) M_SGE_I, INSN_MACRO },
853{"sgeu", "d,v,t", 0, (int) M_SGEU, INSN_MACRO },
854{"sgeu", "d,v,I", 0, (int) M_SGEU_I, INSN_MACRO },
855{"sgt", "d,v,t", 0, (int) M_SGT, INSN_MACRO },
856{"sgt", "d,v,I", 0, (int) M_SGT_I, INSN_MACRO },
857{"sgtu", "d,v,t", 0, (int) M_SGTU, INSN_MACRO },
858{"sgtu", "d,v,I", 0, (int) M_SGTU_I, INSN_MACRO },
4bb0ae10 859{"sh", "t,o(b)", 0xa4000000, 0xfc000000, SM|RD_t|RD_b, I1 },
45b14705
ILT
860{"sh", "t,A(b)", 0, (int) M_SH_AB, INSN_MACRO },
861{"sle", "d,v,t", 0, (int) M_SLE, INSN_MACRO },
862{"sle", "d,v,I", 0, (int) M_SLE_I, INSN_MACRO },
863{"sleu", "d,v,t", 0, (int) M_SLEU, INSN_MACRO },
864{"sleu", "d,v,I", 0, (int) M_SLEU_I, INSN_MACRO },
4bb0ae10
JL
865{"sllv", "d,t,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
866{"sll", "d,w,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* sllv */
867{"sll", "d,w,<", 0x00000000, 0xffe0003f, WR_d|RD_t, I1 },
868{"slt", "d,v,t", 0x0000002a, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705 869{"slt", "d,v,I", 0, (int) M_SLT_I, INSN_MACRO },
4bb0ae10
JL
870{"slti", "t,r,j", 0x28000000, 0xfc000000, WR_t|RD_s, I1 },
871{"sltiu", "t,r,j", 0x2c000000, 0xfc000000, WR_t|RD_s, I1 },
872{"sltu", "d,v,t", 0x0000002b, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705
ILT
873{"sltu", "d,v,I", 0, (int) M_SLTU_I, INSN_MACRO },
874{"sne", "d,v,t", 0, (int) M_SNE, INSN_MACRO },
875{"sne", "d,v,I", 0, (int) M_SNE_I, INSN_MACRO },
276c2d7d 876 /* start-sanitize-r5900 */
d0efa46b 877{"sq", "t,o(b)", 0x7c000000, 0xfc000000, SM|RD_t|RD_b, T5 },
276c2d7d 878 /* end-sanitize-r5900 */
4bb0ae10
JL
879{"sqrt.d", "D,S", 0x46200004, 0xffff003f, WR_D|RD_S|FP_D, I2 },
880{"sqrt.s", "D,S", 0x46000004, 0xffff003f, WR_D|RD_S|FP_S, I2 },
881{"srav", "d,t,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
882{"sra", "d,w,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* srav */
883{"sra", "d,w,<", 0x00000003, 0xffe0003f, WR_d|RD_t, I1 },
884{"srlv", "d,t,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
885{"srl", "d,w,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* srlv */
886{"srl", "d,w,<", 0x00000002, 0xffe0003f, WR_d|RD_t, I1 },
d0efa46b 887{"standby", "", 0x42000021, 0xffffffff, 0, V1 },
4bb0ae10 888{"sub", "d,v,t", 0x00000022, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705 889{"sub", "d,v,I", 0, (int) M_SUB_I, INSN_MACRO },
4bb0ae10
JL
890{"sub.d", "D,V,T", 0x46200001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
891{"sub.s", "D,V,T", 0x46000001, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
892{"subu", "d,v,t", 0x00000023, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705 893{"subu", "d,v,I", 0, (int) M_SUBU_I, INSN_MACRO },
d0efa46b 894{"suspend", "", 0x42000022, 0xffffffff, 0, V1 },
4bb0ae10 895{"sw", "t,o(b)", 0xac000000, 0xfc000000, SM|RD_t|RD_b, I1 },
45b14705 896{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO },
4bb0ae10 897{"swc0", "E,o(b)", 0xe0000000, 0xfc000000, SM|RD_C0|RD_b, I1 },
45b14705 898{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO },
4bb0ae10
JL
899{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 },
900{"swc1", "E,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 },
45b14705
ILT
901{"swc1", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
902{"swc1", "E,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
4bb0ae10 903{"s.s", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 }, /* swc1 */
45b14705 904{"s.s", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
4bb0ae10 905{"swc2", "E,o(b)", 0xe8000000, 0xfc000000, SM|RD_C2|RD_b, I1 },
45b14705 906{"swc2", "E,A(b)", 0, (int) M_SWC2_AB, INSN_MACRO },
4bb0ae10 907{"swc3", "E,o(b)", 0xec000000, 0xfc000000, SM|RD_C3|RD_b, I1 },
45b14705 908{"swc3", "E,A(b)", 0, (int) M_SWC3_AB, INSN_MACRO },
4bb0ae10 909{"swl", "t,o(b)", 0xa8000000, 0xfc000000, SM|RD_t|RD_b, I1 },
45b14705 910{"swl", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO },
d0efa46b 911{"scache", "t,o(b)", 0xa8000000, 0xfc000000, RD_t|RD_b, I2 }, /* same */
2bef2d3e 912{"scache", "t,A(b)", 2, (int) M_SWL_AB, INSN_MACRO }, /* as swl */
4bb0ae10 913{"swr", "t,o(b)", 0xb8000000, 0xfc000000, SM|RD_t|RD_b, I1 },
45b14705 914{"swr", "t,A(b)", 0, (int) M_SWR_AB, INSN_MACRO },
d0efa46b 915{"invalidate", "t,o(b)",0xb8000000, 0xfc000000, RD_t|RD_b, I2 }, /* same */
2bef2d3e 916{"invalidate", "t,A(b)",2, (int) M_SWR_AB, INSN_MACRO }, /* as swr */
d0efa46b 917{"swxc1", "S,t(b)", 0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b, I4 },
d0efa46b 918{"sync", "", 0x0000000f, 0xffffffff, 0, I2 },
4bb0ae10
JL
919{"syscall", "", 0x0000000c, 0xffffffff, TRAP, I1 },
920{"syscall", "B", 0x0000000c, 0xfc00003f, TRAP, I1 },
d0efa46b
JL
921{"teqi", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, I2 },
922{"teq", "s,t", 0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
923{"teq", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* teqi */
2bef2d3e 924{"teq", "s,I", 2, (int) M_TEQ_I, INSN_MACRO },
d0efa46b
JL
925{"tgei", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, I2 },
926{"tge", "s,t", 0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
927{"tge", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tgei */
2bef2d3e 928{"tge", "s,I", 2, (int) M_TGE_I, INSN_MACRO },
d0efa46b
JL
929{"tgeiu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, I2 },
930{"tgeu", "s,t", 0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
931{"tgeu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tgeiu */
2bef2d3e 932{"tgeu", "s,I", 2, (int) M_TGEU_I, INSN_MACRO },
4bb0ae10
JL
933{"tlbp", "", 0x42000008, 0xffffffff, INSN_TLB, I1 },
934{"tlbr", "", 0x42000001, 0xffffffff, INSN_TLB, I1 },
935{"tlbwi", "", 0x42000002, 0xffffffff, INSN_TLB, I1 },
936{"tlbwr", "", 0x42000006, 0xffffffff, INSN_TLB, I1 },
d0efa46b
JL
937{"tlti", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, I2 },
938{"tlt", "s,t", 0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
939{"tlt", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tlti */
2bef2d3e 940{"tlt", "s,I", 2, (int) M_TLT_I, INSN_MACRO },
d0efa46b
JL
941{"tltiu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, I2 },
942{"tltu", "s,t", 0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
943{"tltu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tltiu */
2bef2d3e 944{"tltu", "s,I", 2, (int) M_TLTU_I, INSN_MACRO },
d0efa46b
JL
945{"tnei", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, I2 },
946{"tne", "s,t", 0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
947{"tne", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tnei */
2bef2d3e 948{"tne", "s,I", 2, (int) M_TNE_I, INSN_MACRO },
4bb0ae10
JL
949{"trunc.l.d", "D,S", 0x46200009, 0xffff003f, WR_D|RD_S|FP_D, I3 },
950{"trunc.l.s", "D,S", 0x46000009, 0xffff003f, WR_D|RD_S|FP_S, I3 },
951{"trunc.w.d", "D,S", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_D, I2 },
952{"trunc.w.d", "D,S,x", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_D, I2 },
45b14705 953{"trunc.w.d", "D,S,t", 0, (int) M_TRUNCWD, INSN_MACRO },
4bb0ae10
JL
954{"trunc.w.s", "D,S", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, I2 },
955{"trunc.w.s", "D,S,x", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, I2 },
45b14705 956{"trunc.w.s", "D,S,t", 0, (int) M_TRUNCWS, INSN_MACRO },
470feacf 957{"uld", "t,o(b)", 3, (int) M_ULD, INSN_MACRO },
8d67dc30 958{"uld", "t,A(b)", 3, (int) M_ULD_A, INSN_MACRO },
45b14705 959{"ulh", "t,o(b)", 0, (int) M_ULH, INSN_MACRO },
8d67dc30 960{"ulh", "t,A(b)", 0, (int) M_ULH_A, INSN_MACRO },
45b14705 961{"ulhu", "t,o(b)", 0, (int) M_ULHU, INSN_MACRO },
8d67dc30 962{"ulhu", "t,A(b)", 0, (int) M_ULHU_A, INSN_MACRO },
45b14705 963{"ulw", "t,o(b)", 0, (int) M_ULW, INSN_MACRO },
8d67dc30 964{"ulw", "t,A(b)", 0, (int) M_ULW_A, INSN_MACRO },
470feacf 965{"usd", "t,o(b)", 3, (int) M_USD, INSN_MACRO },
8d67dc30 966{"usd", "t,A(b)", 3, (int) M_USD_A, INSN_MACRO },
45b14705 967{"ush", "t,o(b)", 0, (int) M_USH, INSN_MACRO },
8d67dc30 968{"ush", "t,A(b)", 0, (int) M_USH_A, INSN_MACRO },
45b14705 969{"usw", "t,o(b)", 0, (int) M_USW, INSN_MACRO },
8d67dc30 970{"usw", "t,A(b)", 0, (int) M_USW_A, INSN_MACRO },
4bb0ae10 971{"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
45b14705 972{"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO },
4bb0ae10 973{"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s, I1 },
d0efa46b
JL
974{"wait", "", 0x42000020, 0xffffffff, TRAP, I3 },
975{"waiti", "", 0x42000020, 0xffffffff, TRAP, L1 },
976{"wb", "o(b)", 0xbc040000, 0xfc1f0000, SM|RD_b, L1 },
a3066d9a
KR
977 /* start-sanitize-vr5400 */
978{"add.ob", "D,S,T", 0x4ac0000b, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
979{"add.ob", "D,S,T[e]", 0x4800000b, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
980{"add.ob", "D,S,k", 0x4bc0000b, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
981{"alni.ob", "D,S,T,%", 0x48000018, 0xff00003f, WR_D|RD_S|RD_T, N5 },
982{"and.ob", "D,S,T", 0x4ac0000c, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
983{"and.ob", "D,S,T[e]", 0x4800000c, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
984{"and.ob", "D,S,k", 0x4bc0000c, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
985{"c.eq.ob", "S,k", 0x4bc00001, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
986{"c.eq.ob", "S,T", 0x4ac00001, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
987{"c.eq.ob", "S,T[e]", 0x48000001, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
988{"c.le.ob", "S,k", 0x4bc00005, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
989{"c.le.ob", "S,T", 0x4ac00005, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
990{"c.le.ob", "S,T[e]", 0x48000005, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
991{"c.lt.ob", "S,k", 0x4bc00004, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
992{"c.lt.ob", "S,T", 0x4ac00004, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
993{"c.lt.ob", "S,T[e]", 0x48000004, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
994{"max.ob", "D,S,T", 0x4ac00007, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
995{"max.ob", "D,S,T[e]", 0x48000007, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
996{"max.ob", "D,S,k", 0x4bc00007, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
997{"min.ob", "D,S,T", 0x4ac00006, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
998{"min.ob", "D,S,T[e]", 0x48000006, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
999{"min.ob", "D,S,k", 0x4bc00006, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1000{"mul.ob", "D,S,T", 0x4ac00030, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1001{"mul.ob", "D,S,T[e]", 0x48000030, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1002{"mul.ob", "D,S,k", 0x4bc00030, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1003{"mula.ob", "S,k", 0x4bc00033, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1004{"mula.ob", "S,T", 0x4ac00033, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1005{"mula.ob", "S,T[e]", 0x48000033, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
1006{"mull.ob", "S,k", 0x4bc00433, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1007{"mull.ob", "S,T", 0x4ac00433, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1008{"mull.ob", "S,T[e]", 0x48000433, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
1009{"muls.ob", "S,k", 0x4bc00032, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1010{"muls.ob", "S,T", 0x4ac00032, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1011{"muls.ob", "S,T[e]", 0x48000032, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
1012{"mulsl.ob","S,k", 0x4bc00432, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1013{"mulsl.ob","S,T", 0x4ac00432, 0xffe007ff, WR_CC|RD_S|RD_T, N5 },
1014{"mulsl.ob","S,T[e]", 0x48000432, 0xfe2007ff, WR_CC|RD_S|RD_T, N5 },
1015{"nor.ob", "D,S,T", 0x4ac0000f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1016{"nor.ob", "D,S,T[e]", 0x4800000f, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1017{"nor.ob", "D,S,k", 0x4bc0000f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1018{"or.ob", "D,S,T", 0x4ac0000e, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1019{"or.ob", "D,S,T[e]", 0x4800000e, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1020{"or.ob", "D,S,k", 0x4bc0000e, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1021{"pickf.ob", "D,S,T", 0x4ac00002, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1022{"pickf.ob", "D,S,T[e]", 0x48000002, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1023{"pickf.ob", "D,S,k", 0x4bc00002, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1024{"pickt.ob", "D,S,T", 0x4ac00003, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1025{"pickt.ob", "D,S,T[e]", 0x48000003, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1026{"pickt.ob", "D,S,k", 0x4bc00003, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1027{"rach.ob", "D", 0x4a00003f, 0xfffff83f, WR_D, N5 },
1028{"racl.ob", "D", 0x4800003f, 0xfffff83f, WR_D, N5 },
1029{"racm.ob", "D", 0x4900003f, 0xfffff83f, WR_D, N5 },
1030{"rzu.ob", "D,S,k", 0x4bc00020, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1031{"shfl.mixh.ob","D,S,T",0x4980001f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1032{"shfl.mixl.ob","D,S,T",0x49c0001f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1033{"shfl.pach.ob","D,S,T",0x4900001f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1034{"shfl.pacl.ob","D,S,T",0x4940001f, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1035{"sll.ob", "D,S,T[e]", 0x48000010, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1036{"sll.ob", "D,S,k", 0x4bc00010, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1037{"srl.ob", "D,S,T[e]", 0x48000012, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1038{"srl.ob", "D,S,k", 0x4bc00012, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1039{"sub.ob", "D,S,T", 0x4ac0000a, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1040{"sub.ob", "D,S,T[e]", 0x4800000a, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1041{"sub.ob", "D,S,k", 0x4bc0000a, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1042{"wach.ob", "S", 0x4a00003e, 0xffff07ff, RD_S, N5 },
1043{"wacl.ob", "S,T", 0x4800003e, 0xffe007ff, RD_S|RD_T, N5 },
1044{"xor.ob", "D,S,T", 0x4ac0000d, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1045{"xor.ob", "D,S,T[e]", 0x4800000d, 0xfe20003f, WR_D|RD_S|RD_T, N5 },
1046{"xor.ob", "D,S,k", 0x4bc0000d, 0xffe0003f, WR_D|RD_S|RD_T, N5 },
1047 /* end-sanitize-vr5400 */
45b14705
ILT
1048/* No hazard protection on coprocessor instructions--they shouldn't
1049 change the state of the processor and if they do it's up to the
1050 user to put in nops as necessary. These are at the end so that the
1051 disasembler recognizes more specific versions first. */
4bb0ae10
JL
1052{"c0", "C", 0x42000000, 0xfe000000, 0, I1 },
1053{"c1", "C", 0x46000000, 0xfe000000, 0, I1 },
1054{"c2", "C", 0x4a000000, 0xfe000000, 0, I1 },
1055{"c3", "C", 0x4e000000, 0xfe000000, 0, I1 },
a2768484
DP
1056{"cop0", "C", 0, (int) M_COP0, INSN_MACRO },
1057{"cop1", "C", 0, (int) M_COP1, INSN_MACRO },
1058{"cop2", "C", 0, (int) M_COP2, INSN_MACRO },
1059{"cop3", "C", 0, (int) M_COP3, INSN_MACRO },
45b14705
ILT
1060};
1061
a21e1e96
ILT
1062#define MIPS_NUM_OPCODES \
1063 ((sizeof mips_builtin_opcodes) / (sizeof (mips_builtin_opcodes[0])))
1064const int bfd_mips_num_builtin_opcodes = MIPS_NUM_OPCODES;
a2768484 1065
a21e1e96
ILT
1066/* const removed from the following to allow for dynamic extensions to the
1067 * built-in instruction set. */
1068struct mips_opcode *mips_opcodes =
1069 (struct mips_opcode *) mips_builtin_opcodes;
1070int bfd_mips_num_opcodes = MIPS_NUM_OPCODES;
1071#undef MIPS_NUM_OPCODES
d0efa46b 1072
This page took 0.204835 seconds and 4 git commands to generate.