Since d10v is public now, remove all sanitization statements
[deliverable/binutils-gdb.git] / opcodes / mips-opc.c
CommitLineData
45b14705 1/* mips.h. Mips opcode list for GDB, the GNU debugger.
276c2d7d 2 Copyright 1993, 1994, 1995, 1996 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
2bef2d3e
ILT
65#define I2 INSN_ISA2
66#define I3 INSN_ISA3
470feacf 67#define P3 INSN_4650
8d67dc30
ILT
68#define I4 INSN_ISA4
69#define L1 INSN_4010
70#define V1 INSN_4100
2bef2d3e 71
276c2d7d
GRK
72#define T5 ( 0 \
73/* start-sanitize-r5900 */ \
74 | INSN_5900 \
75/* end-sanitize-r5900 */ \
76 | 0)
77
78#define X5 ( 0 \
79/* start-sanitize-r5900 */ \
80/* insn's marked X5 are not really 5900 instructions \
81 (mostly double fp insns), but we turn them on until \
82 we can generate code, and make librarys that don't \
83 use them. */ \
84 | INSN_5900 \
85/* end-sanitize-r5900 */ \
86 | 0)
87
88
89
45b14705
ILT
90/* The order of overloaded instructions matters. Label arguments and
91 register arguments look the same. Instructions that can have either
92 for arguments must apear in the correct order in this table for the
93 assembler to pick the right one. In other words, entries with
94 immediate operands must apear after the same instruction with
95 registers.
96
97 Many instructions are short hand for other instructions (i.e., The
98 jal <register> instruction is short for jalr <register>). */
99
100const struct mips_opcode mips_opcodes[] = {
101/* These instructions appear first so that the disassembler will find
102 them first. The assemblers uses a hash table based on the
103 instruction name anyhow. */
104{"nop", "", 0x00000000, 0xffffffff, 0 },
105{"li", "t,j", 0x24000000, 0xffe00000, WR_t }, /* addiu */
106{"li", "t,i", 0x34000000, 0xffe00000, WR_t }, /* ori */
107{"li", "t,I", 0, (int) M_LI, INSN_MACRO },
8d67dc30
ILT
108{"move", "d,s", 0x0000002d, 0xfc1f07ff, WR_d|RD_s|I3 },/* daddu */
109{"move", "d,s", 0x00000021, 0xfc1f07ff, WR_d|RD_s },/* addu */
27faaa41
ILT
110{"move", "d,s", 0x00000025, 0xfc1f07ff, WR_d|RD_s },/* or */
111{"b", "p", 0x10000000, 0xffff0000, UBD },/* beq 0,0 */
112{"b", "p", 0x04010000, 0xffff0000, UBD },/* bgez 0 */
113{"bal", "p", 0x04110000, 0xffff0000, UBD|WR_31 },/* bgezal 0*/
45b14705
ILT
114
115{"abs", "d,v", 0, (int) M_ABS, INSN_MACRO },
116{"abs.s", "D,V", 0x46000005, 0xffff003f, WR_D|RD_S },
117{"abs.d", "D,V", 0x46200005, 0xffff003f, WR_D|RD_S },
45b14705
ILT
118{"add", "d,v,t", 0x00000020, 0xfc0007ff, WR_d|RD_s|RD_t },
119{"add", "t,r,I", 0, (int) M_ADD_I, INSN_MACRO },
120{"add.s", "D,V,T", 0x46000000, 0xffe0003f, WR_D|RD_S|RD_T },
121{"add.d", "D,V,T", 0x46200000, 0xffe0003f, WR_D|RD_S|RD_T },
122{"addi", "t,r,j", 0x20000000, 0xfc000000, WR_t|RD_s },
123{"addiu", "t,r,j", 0x24000000, 0xfc000000, WR_t|RD_s },
124{"addu", "d,v,t", 0x00000021, 0xfc0007ff, WR_d|RD_s|RD_t },
125{"addu", "t,r,I", 0, (int) M_ADDU_I, INSN_MACRO },
126{"and", "d,v,t", 0x00000024, 0xfc0007ff, WR_d|RD_s|RD_t },
127{"and", "t,r,I", 0, (int) M_AND_I, INSN_MACRO },
128{"andi", "t,r,i", 0x30000000, 0xfc000000, WR_t|RD_s },
129/* b is at the top of the table. */
130/* bal is at the top of the table. */
131{"bc0f", "p", 0x41000000, 0xffff0000, CBD|RD_CC },
2bef2d3e 132{"bc0fl", "p", 0x41020000, 0xffff0000, CBL|RD_CC|I2 },
45b14705 133{"bc1f", "p", 0x45000000, 0xffff0000, CBD|RD_CC },
8d67dc30 134{"bc1f", "N,p", 0x45000000, 0xffe30000, CBD|RD_CC|I4 },
2bef2d3e 135{"bc1fl", "p", 0x45020000, 0xffff0000, CBL|RD_CC|I2 },
8d67dc30 136{"bc1fl", "N,p", 0x45020000, 0xffe30000, CBL|RD_CC|I4 },
45b14705 137{"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC },
2bef2d3e 138{"bc2fl", "p", 0x49020000, 0xffff0000, CBL|RD_CC|I2 },
45b14705 139{"bc3f", "p", 0x4d000000, 0xffff0000, CBD|RD_CC },
2bef2d3e 140{"bc3fl", "p", 0x4d020000, 0xffff0000, CBL|RD_CC|I2 },
45b14705 141{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC },
2bef2d3e 142{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC|I2 },
45b14705 143{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC },
8d67dc30 144{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|I4 },
2bef2d3e 145{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|I2 },
8d67dc30 146{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|I4 },
45b14705 147{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC },
2bef2d3e 148{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC|I2 },
45b14705 149{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC },
2bef2d3e
ILT
150{"bc3tl", "p", 0x4d030000, 0xffff0000, CBL|RD_CC|I2 },
151{"beqz", "s,p", 0x10000000, 0xfc1f0000, CBD|RD_s },
9978cd4d 152{"beqzl", "s,p", 0x50000000, 0xfc1f0000, CBL|RD_s|I2 },
45b14705
ILT
153{"beq", "s,t,p", 0x10000000, 0xfc000000, CBD|RD_s|RD_t },
154{"beq", "s,I,p", 0, (int) M_BEQ_I, INSN_MACRO },
2bef2d3e
ILT
155{"beql", "s,t,p", 0x50000000, 0xfc000000, CBL|RD_s|RD_t|I2},
156{"beql", "s,I,p", 2, (int) M_BEQL_I, INSN_MACRO },
45b14705
ILT
157{"bge", "s,t,p", 0, (int) M_BGE, INSN_MACRO },
158{"bge", "s,I,p", 0, (int) M_BGE_I, INSN_MACRO },
2bef2d3e
ILT
159{"bgel", "s,t,p", 2, (int) M_BGEL, INSN_MACRO },
160{"bgel", "s,I,p", 2, (int) M_BGEL_I, INSN_MACRO },
45b14705
ILT
161{"bgeu", "s,t,p", 0, (int) M_BGEU, INSN_MACRO },
162{"bgeu", "s,I,p", 0, (int) M_BGEU_I, INSN_MACRO },
2bef2d3e
ILT
163{"bgeul", "s,t,p", 2, (int) M_BGEUL, INSN_MACRO },
164{"bgeul", "s,I,p", 2, (int) M_BGEUL_I, INSN_MACRO },
45b14705 165{"bgez", "s,p", 0x04010000, 0xfc1f0000, CBD|RD_s },
9978cd4d 166{"bgezl", "s,p", 0x04030000, 0xfc1f0000, CBL|RD_s|I2 },
a5ba0d3f 167{"bgezal", "s,p", 0x04110000, 0xfc1f0000, CBD|RD_s|WR_31 },
9978cd4d 168{"bgezall", "s,p", 0x04130000, 0xfc1f0000, CBL|RD_s|I2 },
45b14705
ILT
169{"bgt", "s,t,p", 0, (int) M_BGT, INSN_MACRO },
170{"bgt", "s,I,p", 0, (int) M_BGT_I, INSN_MACRO },
2bef2d3e
ILT
171{"bgtl", "s,t,p", 2, (int) M_BGTL, INSN_MACRO },
172{"bgtl", "s,I,p", 2, (int) M_BGTL_I, INSN_MACRO },
45b14705
ILT
173{"bgtu", "s,t,p", 0, (int) M_BGTU, INSN_MACRO },
174{"bgtu", "s,I,p", 0, (int) M_BGTU_I, INSN_MACRO },
2bef2d3e
ILT
175{"bgtul", "s,t,p", 2, (int) M_BGTUL, INSN_MACRO },
176{"bgtul", "s,I,p", 2, (int) M_BGTUL_I, INSN_MACRO },
45b14705 177{"bgtz", "s,p", 0x1c000000, 0xfc1f0000, CBD|RD_s },
9978cd4d 178{"bgtzl", "s,p", 0x5c000000, 0xfc1f0000, CBL|RD_s|I2 },
45b14705
ILT
179{"ble", "s,t,p", 0, (int) M_BLE, INSN_MACRO },
180{"ble", "s,I,p", 0, (int) M_BLE_I, INSN_MACRO },
2bef2d3e
ILT
181{"blel", "s,t,p", 2, (int) M_BLEL, INSN_MACRO },
182{"blel", "s,I,p", 2, (int) M_BLEL_I, INSN_MACRO },
45b14705
ILT
183{"bleu", "s,t,p", 0, (int) M_BLEU, INSN_MACRO },
184{"bleu", "s,I,p", 0, (int) M_BLEU_I, INSN_MACRO },
2bef2d3e
ILT
185{"bleul", "s,t,p", 2, (int) M_BLEUL, INSN_MACRO },
186{"bleul", "s,I,p", 2, (int) M_BLEUL_I, INSN_MACRO },
45b14705 187{"blez", "s,p", 0x18000000, 0xfc1f0000, CBD|RD_s },
9978cd4d 188{"blezl", "s,p", 0x58000000, 0xfc1f0000, CBL|RD_s|I2 },
45b14705
ILT
189{"blt", "s,t,p", 0, (int) M_BLT, INSN_MACRO },
190{"blt", "s,I,p", 0, (int) M_BLT_I, INSN_MACRO },
2bef2d3e
ILT
191{"bltl", "s,t,p", 2, (int) M_BLTL, INSN_MACRO },
192{"bltl", "s,I,p", 2, (int) M_BLTL_I, INSN_MACRO },
45b14705
ILT
193{"bltu", "s,t,p", 0, (int) M_BLTU, INSN_MACRO },
194{"bltu", "s,I,p", 0, (int) M_BLTU_I, INSN_MACRO },
2bef2d3e
ILT
195{"bltul", "s,t,p", 2, (int) M_BLTUL, INSN_MACRO },
196{"bltul", "s,I,p", 2, (int) M_BLTUL_I, INSN_MACRO },
45b14705 197{"bltz", "s,p", 0x04000000, 0xfc1f0000, CBD|RD_s },
9978cd4d 198{"bltzl", "s,p", 0x04020000, 0xfc1f0000, CBL|RD_s|I2 },
a5ba0d3f 199{"bltzal", "s,p", 0x04100000, 0xfc1f0000, CBD|RD_s|WR_31 },
9978cd4d 200{"bltzall", "s,p", 0x04120000, 0xfc1f0000, CBL|RD_s|I2 },
2bef2d3e 201{"bnez", "s,p", 0x14000000, 0xfc1f0000, CBD|RD_s },
9978cd4d 202{"bnezl", "s,p", 0x54000000, 0xfc1f0000, CBL|RD_s|I2 },
45b14705
ILT
203{"bne", "s,t,p", 0x14000000, 0xfc000000, CBD|RD_s|RD_t },
204{"bne", "s,I,p", 0, (int) M_BNE_I, INSN_MACRO },
9978cd4d 205{"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t|I2},
2bef2d3e 206{"bnel", "s,I,p", 2, (int) M_BNEL_I, INSN_MACRO },
9978cd4d
ILT
207{"break", "", 0x0000000d, 0xffffffff, TRAP },
208{"break", "c", 0x0000000d, 0xfc00003f, TRAP },
45b14705 209{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 210{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 211{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 212{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 213{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 214{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 215{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 216{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 217{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 218{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 219{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 220{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 221{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 222{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 223{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 224{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 225{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 226{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 227{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 228{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 229{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 230{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 231{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 232{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 233{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 234{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 235{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 236{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 237{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 238{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 239{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 240{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 241{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 242{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 243{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 244{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 245{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 246{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 247{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 248{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 249{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 250{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 251{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 252{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 253{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 254{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 255{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 256{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 257{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 258{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 259{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 260{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 261{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 262{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 263{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 264{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 265{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 266{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 267{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 268{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 269{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 270{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
45b14705 271{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC },
8d67dc30 272{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|I4 },
942a4965 273{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b|I3 },
2bef2d3e
ILT
274{"ceil.l.d", "D,S", 0x4620000a, 0xffff003f, WR_D|RD_S|I3 },
275{"ceil.l.s", "D,S", 0x4600000a, 0xffff003f, WR_D|RD_S|I3 },
276{"ceil.w.d", "D,S", 0x4620000e, 0xffff003f, WR_D|RD_S|I2 },
277{"ceil.w.s", "D,S", 0x4600000e, 0xffff003f, WR_D|RD_S|I2 },
278{"cfc0", "t,G", 0x40400000, 0xffe007ff, LCD|WR_t|RD_C0 },
279{"cfc1", "t,G", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1 },
280{"cfc1", "t,S", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1 },
281{"cfc2", "t,G", 0x48400000, 0xffe007ff, LCD|WR_t|RD_C2 },
282{"cfc3", "t,G", 0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3 },
45b14705
ILT
283{"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC },
284{"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC },
285{"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC },
286{"ctc2", "t,G", 0x48c00000, 0xffe007ff, COD|RD_t|WR_CC },
287{"ctc3", "t,G", 0x4cc00000, 0xffe007ff, COD|RD_t|WR_CC },
2bef2d3e 288{"cvt.d.l", "D,S", 0x46a00021, 0xffff003f, WR_D|RD_S|I3 },
45b14705
ILT
289{"cvt.d.s", "D,S", 0x46000021, 0xffff003f, WR_D|RD_S },
290{"cvt.d.w", "D,S", 0x46800021, 0xffff003f, WR_D|RD_S },
2bef2d3e
ILT
291{"cvt.l.d", "D,S", 0x46200025, 0xffff003f, WR_D|RD_S|I3 },
292{"cvt.l.s", "D,S", 0x46000025, 0xffff003f, WR_D|RD_S|I3 },
293{"cvt.s.l", "D,S", 0x46a00020, 0xffff003f, WR_D|RD_S|I3 },
45b14705
ILT
294{"cvt.s.d", "D,S", 0x46200020, 0xffff003f, WR_D|RD_S },
295{"cvt.s.w", "D,S", 0x46800020, 0xffff003f, WR_D|RD_S },
296{"cvt.w.d", "D,S", 0x46200024, 0xffff003f, WR_D|RD_S },
297{"cvt.w.s", "D,S", 0x46000024, 0xffff003f, WR_D|RD_S },
27faaa41 298{"dabs", "d,v", 3, (int) M_DABS, INSN_MACRO },
2bef2d3e
ILT
299{"dadd", "d,v,t", 0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t|I3},
300{"dadd", "t,r,I", 3, (int) M_DADD_I, INSN_MACRO },
301{"daddi", "t,r,j", 0x60000000, 0xfc000000, WR_t|RD_s|I3 },
302{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_t|RD_s|I3 },
303{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t|I3},
304{"daddu", "t,r,I", 3, (int) M_DADDU_I, INSN_MACRO },
a9c686ad 305/* For ddiv, see the comments about div. */
547998d2 306{"ddiv", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
a9c686ad 307{"ddiv", "d,v,t", 3, (int) M_DDIV_3, INSN_MACRO },
2bef2d3e 308{"ddiv", "d,v,I", 3, (int) M_DDIV_3I, INSN_MACRO },
a9c686ad 309/* For ddivu, see the comments about div. */
547998d2 310{"ddivu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
a9c686ad 311{"ddivu", "d,v,t", 3, (int) M_DDIVU_3, INSN_MACRO },
2bef2d3e 312{"ddivu", "d,v,I", 3, (int) M_DDIVU_3I, INSN_MACRO },
a9c686ad
ILT
313/* The MIPS assembler treats the div opcode with two operands as
314 though the first operand appeared twice (the first operand is both
315 a source and a destination). To get the div machine instruction,
547998d2
ILT
316 you must use an explicit destination of $0. */
317{"div", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
8d67dc30 318{"div", "z,t", 0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HI|WR_LO },
a9c686ad 319{"div", "d,v,t", 0, (int) M_DIV_3, INSN_MACRO },
45b14705 320{"div", "d,v,I", 0, (int) M_DIV_3I, INSN_MACRO },
276c2d7d
GRK
321 /* start-sanitize-r5900 */
322{"div1", "s,t", 0x7000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
323 /* end-sanitize-r5900 */
45b14705
ILT
324{"div.d", "D,V,T", 0x46200003, 0xffe0003f, WR_D|RD_S|RD_T },
325{"div.s", "D,V,T", 0x46000003, 0xffe0003f, WR_D|RD_S|RD_T },
a9c686ad 326/* For divu, see the comments about div. */
547998d2 327{"divu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
8d67dc30 328{"divu", "z,t", 0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HI|WR_LO },
a9c686ad 329{"divu", "d,v,t", 0, (int) M_DIVU_3, INSN_MACRO },
45b14705 330{"divu", "d,v,I", 0, (int) M_DIVU_3I, INSN_MACRO },
276c2d7d
GRK
331 /* start-sanitize-r5900 */
332{"divu1", "s,t", 0x7000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
333 /* end-sanitize-r5900 */
8d67dc30
ILT
334{"dla", "t,A(b)", 3, (int) M_DLA_AB, INSN_MACRO },
335{"dli", "t,j", 0x24000000, 0xffe00000, WR_t|I3 }, /* addiu */
336{"dli", "t,i", 0x34000000, 0xffe00000, WR_t|I3 }, /* ori */
337{"dli", "t,I", 3, (int) M_DLI, INSN_MACRO },
338{"dmadd16", "s,t", 0x00000029, 0xfc00ffff, RD_s|RD_t|WR_LO|RD_LO|V1 },
2bef2d3e
ILT
339{"dmfc0", "t,G", 0x40200000, 0xffe007ff, LCD|WR_t|RD_C0|I3 },
340{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC|I3 },
341{"dmfc1", "t,S", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|I3 },
342{"dmtc1", "t,S", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|I3 },
343{"dmul", "d,v,t", 3, (int) M_DMUL, INSN_MACRO },
344{"dmul", "d,v,I", 3, (int) M_DMUL_I, INSN_MACRO },
345{"dmulo", "d,v,t", 3, (int) M_DMULO, INSN_MACRO },
346{"dmulo", "d,v,I", 3, (int) M_DMULO_I, INSN_MACRO },
347{"dmulou", "d,v,t", 3, (int) M_DMULOU, INSN_MACRO },
348{"dmulou", "d,v,I", 3, (int) M_DMULOU_I, INSN_MACRO },
349{"dmult", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
350{"dmultu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
351{"dneg", "d,w", 0x0000002e, 0xffe007ff, WR_d|RD_t|I3 }, /* dsub 0 */
352{"dnegu", "d,w", 0x0000002f, 0xffe007ff, WR_d|RD_t|I3 }, /* dsubu 0*/
547998d2 353{"drem", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
2bef2d3e
ILT
354{"drem", "d,v,t", 3, (int) M_DREM_3, INSN_MACRO },
355{"drem", "d,v,I", 3, (int) M_DREM_3I, INSN_MACRO },
547998d2 356{"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|I3 },
2bef2d3e
ILT
357{"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO },
358{"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO },
359{"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s|I3},
942a4965 360{"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e 361{"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s|I3}, /* dsllv */
942a4965 362{"dsll", "d,w,>", 0x0000003c, 0xffe0003f, WR_d|RD_t|I3 }, /* dsll32 */
2bef2d3e 363{"dsll", "d,w,<", 0x00000038, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e 364{"dsrav", "d,t,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s|I3},
942a4965 365{"dsra32", "d,w,<", 0x0000003f, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e 366{"dsra", "d,w,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s|I3}, /* dsrav */
942a4965 367{"dsra", "d,w,>", 0x0000003f, 0xffe0003f, WR_d|RD_t|I3 }, /* dsra32 */
2bef2d3e 368{"dsra", "d,w,<", 0x0000003b, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e 369{"dsrlv", "d,t,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s|I3},
942a4965 370{"dsrl32", "d,w,<", 0x0000003e, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e 371{"dsrl", "d,w,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s|I3}, /* dsrlv */
942a4965 372{"dsrl", "d,w,>", 0x0000003e, 0xffe0003f, WR_d|RD_t|I3 }, /* dsrl32 */
2bef2d3e 373{"dsrl", "d,w,<", 0x0000003a, 0xffe0003f, WR_d|RD_t|I3 },
2bef2d3e
ILT
374{"dsub", "d,v,t", 0x0000002e, 0xfc0007ff, WR_d|RD_s|RD_t|I3},
375{"dsub", "d,v,I", 3, (int) M_DSUB_I, INSN_MACRO },
376{"dsubu", "d,v,t", 0x0000002f, 0xfc0007ff, WR_d|RD_s|RD_t|I3},
377{"dsubu", "d,v,I", 3, (int) M_DSUBU_I, INSN_MACRO },
378{"eret", "", 0x42000018, 0xffffffff, I3 },
379{"floor.l.d", "D,S", 0x4620000b, 0xffff003f, WR_D|RD_S|I3 },
380{"floor.l.s", "D,S", 0x4600000b, 0xffff003f, WR_D|RD_S|I3 },
381{"floor.w.d", "D,S", 0x4620000f, 0xffff003f, WR_D|RD_S|I2 },
382{"floor.w.s", "D,S", 0x4600000f, 0xffff003f, WR_D|RD_S|I2 },
8d67dc30
ILT
383{"flushi", "", 0xbc010000, 0xffffffff, L1 },
384{"flushd", "", 0xbc020000, 0xffffffff, L1 },
385{"flushid", "", 0xbc030000, 0xffffffff, L1 },
386{"hibernate","", 0x42000023, 0xffffffff, V1 },
45b14705 387{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s },
942a4965
ILT
388{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s }, /* jr */
389/* SVR4 PIC code requires special handling for j, so it must be a
390 macro. */
391{"j", "a", 0, (int) M_J_A, INSN_MACRO },
392/* This form of j is used by the disassembler and internally by the
393 assembler, but will never match user input (because the line above
394 will match first). */
45b14705
ILT
395{"j", "a", 0x08000000, 0xfc000000, UBD },
396{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d },
397{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d },
942a4965
ILT
398/* SVR4 PIC code requires special handling for jal, so it must be a
399 macro. */
400{"jal", "d,s", 0, (int) M_JAL_2, INSN_MACRO },
401{"jal", "s", 0, (int) M_JAL_1, INSN_MACRO },
402{"jal", "a", 0, (int) M_JAL_A, INSN_MACRO },
403/* This form of jal is used by the disassembler and internally by the
404 assembler, but will never match user input (because the line above
405 will match first). */
45b14705 406{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31 },
8d67dc30 407{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31 },
45b14705
ILT
408{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO },
409{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t },
410{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO },
411{"lbu", "t,o(b)", 0x90000000, 0xfc000000, LDD|RD_b|WR_t },
412{"lbu", "t,A(b)", 0, (int) M_LBU_AB, INSN_MACRO },
2bef2d3e 413{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_t|RD_b|I3 },
45b14705
ILT
414{"ld", "t,o(b)", 0, (int) M_LD_OB, INSN_MACRO },
415{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO },
2bef2d3e
ILT
416{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|I2},
417{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|I2},
418{"ldc1", "T,A(b)", 2, (int) M_LDC1_AB, INSN_MACRO },
419{"ldc1", "E,A(b)", 2, (int) M_LDC1_AB, INSN_MACRO },
942a4965
ILT
420{"l.d", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|I2}, /* ldc1 */
421{"l.d", "T,o(b)", 0, (int) M_L_DOB, INSN_MACRO },
422{"l.d", "T,A(b)", 0, (int) M_L_DAB, INSN_MACRO },
2bef2d3e
ILT
423{"ldc2", "E,o(b)", 0xd8000000, 0xfc000000, CLD|RD_b|WR_CC|I2},
424{"ldc2", "E,A(b)", 2, (int) M_LDC2_AB, INSN_MACRO },
425{"ldc3", "E,o(b)", 0xdc000000, 0xfc000000, CLD|RD_b|WR_CC|I2},
426{"ldc3", "E,A(b)", 2, (int) M_LDC3_AB, INSN_MACRO },
427{"ldl", "t,o(b)", 0x68000000, 0xfc000000, LDD|WR_t|RD_b|I3},
428{"ldl", "t,A(b)", 3, (int) M_LDL_AB, INSN_MACRO },
429{"ldr", "t,o(b)", 0x6c000000, 0xfc000000, LDD|WR_t|RD_b|I3},
430{"ldr", "t,A(b)", 3, (int) M_LDR_AB, INSN_MACRO },
276c2d7d 431{"ldxc1", "D,t(b)", 0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|I4|X5 },
45b14705
ILT
432{"lh", "t,o(b)", 0x84000000, 0xfc000000, LDD|RD_b|WR_t },
433{"lh", "t,A(b)", 0, (int) M_LH_AB, INSN_MACRO },
434{"lhu", "t,o(b)", 0x94000000, 0xfc000000, LDD|RD_b|WR_t },
435{"lhu", "t,A(b)", 0, (int) M_LHU_AB, INSN_MACRO },
436/* li is at the start of the table. */
437{"li.d", "t,F", 0, (int) M_LI_D, INSN_MACRO },
438{"li.d", "T,L", 0, (int) M_LI_DD, INSN_MACRO },
439{"li.s", "t,f", 0, (int) M_LI_S, INSN_MACRO },
440{"li.s", "T,l", 0, (int) M_LI_SS, INSN_MACRO },
2bef2d3e
ILT
441{"ll", "t,o(b)", 0xc0000000, 0xfc000000, LDD|RD_b|WR_t|I2},
442{"ll", "t,A(b)", 2, (int) M_LL_AB, INSN_MACRO },
443{"lld", "t,o(b)", 0xd0000000, 0xfc000000, LDD|RD_b|WR_t|I3},
444{"lld", "t,A(b)", 3, (int) M_LLD_AB, INSN_MACRO },
45b14705 445{"lui", "t,u", 0x3c000000, 0xffe00000, WR_t },
276c2d7d
GRK
446 /* start-sanitize-r5900 */
447{"lq", "t,o(b)", 0x78000000, 0xfc000000, WR_t|RD_b|T5 },
448 /* end-sanitize-r5900 */
45b14705
ILT
449{"lw", "t,o(b)", 0x8c000000, 0xfc000000, LDD|RD_b|WR_t },
450{"lw", "t,A(b)", 0, (int) M_LW_AB, INSN_MACRO },
2bef2d3e 451{"lwc0", "E,o(b)", 0xc0000000, 0xfc000000, CLD|RD_b|WR_CC },
45b14705 452{"lwc0", "E,A(b)", 0, (int) M_LWC0_AB, INSN_MACRO },
2bef2d3e
ILT
453{"lwc1", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T },
454{"lwc1", "E,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T },
45b14705
ILT
455{"lwc1", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
456{"lwc1", "E,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
2bef2d3e 457{"l.s", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T }, /* lwc1 */
45b14705 458{"l.s", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO },
2bef2d3e 459{"lwc2", "E,o(b)", 0xc8000000, 0xfc000000, CLD|RD_b|WR_CC },
45b14705 460{"lwc2", "E,A(b)", 0, (int) M_LWC2_AB, INSN_MACRO },
2bef2d3e 461{"lwc3", "E,o(b)", 0xcc000000, 0xfc000000, CLD|RD_b|WR_CC },
45b14705
ILT
462{"lwc3", "E,A(b)", 0, (int) M_LWC3_AB, INSN_MACRO },
463{"lwl", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t },
464{"lwl", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO },
2bef2d3e
ILT
465{"lcache", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t|I2}, /* same */
466{"lcache", "t,A(b)", 2, (int) M_LWL_AB, INSN_MACRO }, /* as lwl */
45b14705
ILT
467{"lwr", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t },
468{"lwr", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO },
2bef2d3e
ILT
469{"flush", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t|I2}, /* same */
470{"flush", "t,A(b)", 2, (int) M_LWR_AB, INSN_MACRO }, /* as lwr */
9978cd4d 471{"lwu", "t,o(b)", 0x9c000000, 0xfc000000, LDD|RD_b|WR_t|I3},
2bef2d3e 472{"lwu", "t,A(b)", 3, (int) M_LWU_AB, INSN_MACRO },
276c2d7d 473{"lwxc1", "D,t(b)", 0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b|I4|X5 },
470feacf
ILT
474{"mad", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO|P3},
475{"madu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO|P3},
8d67dc30 476{"addciu", "t,r,j", 0x70000000, 0xfc000000, WR_t|RD_s|L1 },
276c2d7d
GRK
477{"madd.d", "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
478{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
8d67dc30 479{"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|L1 },
276c2d7d
GRK
480 /* start-sanitize-r5900 */
481{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
482{"madd", "d,s,t", 0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
483{"madd1", "s,t", 0x70000020, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
484{"madd1", "d,s,t", 0x70000020, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
485 /* end-sanitize-r5900 */
8d67dc30 486{"maddu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|L1 },
276c2d7d
GRK
487 /* start-sanitize-r5900 */
488{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
489{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
490{"maddu1", "s,t", 0x70000021, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
491{"maddu1", "d,s,t", 0x70000021, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
492 /* end-sanitize-r5900 */
8d67dc30 493{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|RD_HI|RD_LO|V1 },
2bef2d3e
ILT
494{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0 },
495{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S },
496{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S },
497{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2 },
498{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3 },
45b14705 499{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI },
276c2d7d
GRK
500 /* start-sanitize-r5900 */
501{"mfhi1", "d", 0x70000010, 0xffff07ff, WR_d|RD_HI|T5 },
502 /* end-sanitize-r5900 */
45b14705 503{"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO },
276c2d7d
GRK
504 /* start-sanitize-r5900 */
505{"mflo1", "d", 0x70000012, 0xffff07ff, WR_d|RD_LO|T5 },
506{"mfsa", "d", 0x00000028, 0xffff07ff, WR_d|T5 },
507 /* end-sanitize-r5900 */
45b14705
ILT
508{"mov.d", "D,S", 0x46200006, 0xffff003f, WR_D|RD_S },
509{"mov.s", "D,S", 0x46000006, 0xffff003f, WR_D|RD_S },
276c2d7d
GRK
510{"movf", "d,s,N", 0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|I4|X5 },
511{"movf.d", "D,S,N", 0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|I4|X5 },
512{"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|I4|X5 },
513{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t|I4|T5 },
8d67dc30 514{"ffc", "d,v", 0x0000000b, 0xfc0007ff, WR_d|RD_s|L1 },
276c2d7d
GRK
515{"movn.d", "D,S,t", 0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|I4|X5 },
516{"movn.s", "D,S,t", 0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|I4|X5 },
517{"movt", "d,s,N", 0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC|I4|X5 },
8d67dc30
ILT
518{"movt.d", "D,S,N", 0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|I4 },
519{"movt.s", "D,S,N", 0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|I4 },
276c2d7d 520{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t|I4|T5 },
8d67dc30 521{"ffs", "d,v", 0x0000000a, 0xfc0007ff, WR_d|RD_s|L1 },
276c2d7d
GRK
522{"movz.d", "D,S,t", 0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|I4|X5 },
523{"movz.s", "D,S,t", 0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|I4|X5 },
45b14705 524/* move is at the top of the table. */
276c2d7d
GRK
525{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
526{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
8d67dc30
ILT
527{"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|L1 },
528{"msubu", "s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|L1 },
45b14705 529{"mtc0", "t,G", 0x40800000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC },
2bef2d3e
ILT
530{"mtc1", "t,S", 0x44800000, 0xffe007ff, COD|RD_t|WR_S },
531{"mtc1", "t,G", 0x44800000, 0xffe007ff, COD|RD_t|WR_S },
45b14705
ILT
532{"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC },
533{"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC },
534{"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI },
276c2d7d
GRK
535 /* start-sanitize-r5900 */
536{"mthi1", "s", 0x70000011, 0xfc1fffff, RD_s|WR_HI|T5 },
537 /* end-sanitize-r5900 */
45b14705 538{"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO },
276c2d7d
GRK
539 /* start-sanitize-r5900 */
540{"mtlo1", "s", 0x70000013, 0xfc1fffff, RD_s|WR_LO|T5 },
541{"mtsa", "s", 0x00000019, 0xfc1fffff, RD_s|T5 },
542{"mtsab", "s,j", 0x04180000, 0xfc1f0000, RD_s|T5 },
543{"mtsah", "s,j", 0x04190000, 0xfc1f0000, RD_s|T5 },
544 /* end-sanitize-r5900 */
45b14705
ILT
545{"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T },
546{"mul.s", "D,V,T", 0x46000002, 0xffe0003f, WR_D|RD_S|RD_T },
f27ab330 547{"mul", "d,v,t", 0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HI|WR_LO|P3},
45b14705
ILT
548{"mul", "d,v,t", 0, (int) M_MUL, INSN_MACRO },
549{"mul", "d,v,I", 0, (int) M_MUL_I, INSN_MACRO },
550{"mulo", "d,v,t", 0, (int) M_MULO, INSN_MACRO },
551{"mulo", "d,v,I", 0, (int) M_MULO_I, INSN_MACRO },
552{"mulou", "d,v,t", 0, (int) M_MULOU, INSN_MACRO },
553{"mulou", "d,v,I", 0, (int) M_MULOU_I, INSN_MACRO },
554{"mult", "s,t", 0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
276c2d7d
GRK
555{"mult", "d,s,t", 0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d },
556 /* start-sanitize-r5900 */
557{"mult1", "d,s,t", 0x70000018, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
558 /* end-sanitize-r5900 */
45b14705 559{"multu", "s,t", 0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
276c2d7d
GRK
560{"multu", "d,s,t", 0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d },
561 /* start-sanitize-r5900 */
562{"multu1", "d,s,t", 0x70000019, 0xfc0007ff, RD_s|RD_t|WR_HI|WR_LO|WR_d|T5},
563 /* end-sanitize-r5900 */
45b14705
ILT
564{"neg", "d,w", 0x00000022, 0xffe007ff, WR_d|RD_t }, /* sub 0 */
565{"negu", "d,w", 0x00000023, 0xffe007ff, WR_d|RD_t }, /* subu 0 */
566{"neg.d", "D,V", 0x46200007, 0xffff003f, WR_D|RD_S },
567{"neg.s", "D,V", 0x46000007, 0xffff003f, WR_D|RD_S },
8d67dc30
ILT
568{"nmadd.d", "D,R,S,T", 0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4 },
569{"nmadd.s", "D,R,S,T", 0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4 },
276c2d7d
GRK
570{"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
571{"nmsub.s", "D,R,S,T", 0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|I4|X5 },
45b14705
ILT
572/* nop is at the start of the table. */
573{"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t },
942a4965 574{"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO },
27faaa41 575{"not", "d,v", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t },/*nor d,s,0*/
45b14705
ILT
576{"or", "d,v,t", 0x00000025, 0xfc0007ff, WR_d|RD_s|RD_t },
577{"or", "t,r,I", 0, (int) M_OR_I, INSN_MACRO },
578{"ori", "t,r,i", 0x34000000, 0xfc000000, WR_t|RD_s },
276c2d7d
GRK
579
580 /* start-sanitize-r5900 */
581{"pabsh", "d,t", 0x70000168, 0xffe007ff, WR_d|RD_t|T5 },
582{"pabsw", "d,t", 0x70000068, 0xffe007ff, WR_d|RD_t|T5 },
583{"paddb", "d,v,t", 0x70000208, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
584{"paddh", "d,v,t", 0x70000108, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
585{"paddw", "d,v,t", 0x70000008, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
586{"paddsb", "d,v,t", 0x70000608, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
587{"paddsh", "d,v,t", 0x70000508, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
588{"paddsw", "d,v,t", 0x70000408, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
589{"paddub", "d,v,t", 0x70000628, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
590{"padduh", "d,v,t", 0x70000528, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
591{"padduw", "d,v,t", 0x70000428, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
592{"padsbh", "d,v,t", 0x70000128, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
593{"pand", "d,v,t", 0x70000489, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
594{"pceqb", "d,v,t", 0x700002a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
595{"pceqh", "d,v,t", 0x700001a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
596{"pceqw", "d,v,t", 0x700000a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
597
598{"pcgtb", "d,v,t", 0x70000288, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
599{"pcgth", "d,v,t", 0x70000188, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
600{"pcgtw", "d,v,t", 0x70000088, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
601
602{"pcpyh", "d,t", 0x700006e9, 0xffe007ff, WR_d|RD_t|T5 },
603
604{"pcpyld", "d,v,t", 0x70000389, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
605{"pcpyud", "d,v,t", 0x700003a9, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
606
607{"pdivbw", "s,t", 0x70000749, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
608{"pdivuw", "s,t", 0x70000369, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
609{"pdivw", "s,t", 0x70000349, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO|T5},
610
611{"pexch", "d,t", 0x700006a9, 0xffe007ff, WR_d|RD_t|T5 },
612{"pexcw", "d,t", 0x700007a9, 0xffe007ff, WR_d|RD_t|T5 },
613{"pexoh", "d,t", 0x70000689, 0xffe007ff, WR_d|RD_t|T5 },
614{"pexow", "d,t", 0x70000789, 0xffe007ff, WR_d|RD_t|T5 },
615
616{"pext1", "d,t", 0x70000788, 0xffe007ff, WR_d|RD_t|T5 },
617
618{"pextlb", "d,v,t", 0x70000688, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
619{"pextlh", "d,v,t", 0x70000588, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
620{"pextlw", "d,v,t", 0x70000488, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
621{"pextub", "d,v,t", 0x700006a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
622{"pextuh", "d,v,t", 0x700005a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
623{"pextuw", "d,v,t", 0x700004a8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
624
625{"phmaddh", "d,v,t", 0x70000449, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
626{"phmsubh", "d,v,t", 0x70000549, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
627
628{"pinth", "d,v,t", 0x70000289, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
629{"pintoh", "d,v,t", 0x700002a9, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
630
631{"plzcw", "d,v", 0x70000004, 0xfc1f07ff, WR_d|RD_s|T5 },
632
633{"pmaddh", "d,v,t", 0x70000409, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
634{"pmadduw", "d,v,t", 0x70000029, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
635{"pmaddw", "d,v,t", 0x70000009, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
636
637{"pmaxh", "d,v,t", 0x700001c8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
638{"pmaxw", "d,v,t", 0x700000c8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
639
640{"pmfhi", "d", 0x70000209, 0xffff07ff, WR_d|RD_HI|T5 },
641{"pmflo", "d", 0x70000249, 0xffff07ff, WR_d|RD_LO|T5 },
642
643{"pmfhl.lw", "d", 0x70000030, 0xffff07ff, WR_d|RD_LO|RD_HI|T5 },
644{"pmfhl.uw", "d", 0x70000070, 0xffff07ff, WR_d|RD_LO|RD_HI|T5 },
645{"pmfhl.slw","d", 0x700000b0, 0xffff07ff, WR_d|RD_LO|RD_HI|T5 },
646{"pmfhl.lh", "d", 0x700000f0, 0xffff07ff, WR_d|RD_LO|RD_HI|T5 },
647{"pmfhl.sh", "d", 0x70000130, 0xffff07ff, WR_d|RD_LO|RD_HI|T5 },
648
649{"pminh", "d,v,t", 0x700001e8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
650{"pminw", "d,v,t", 0x700000e8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
651
652{"pmsubh", "d,v,t", 0x70000509, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
653{"pmsubw", "d,v,t", 0x70000109, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
654
655{"pmthi", "v", 0x70000229, 0xfc1fffff, WR_HI|RD_s|T5 },
656{"pmtlo", "v", 0x70000269, 0xfc1fffff, WR_LO|RD_s|T5 },
657
658{"pmthl.lw", "v", 0x70000031, 0xfc1fffff, WR_HI|WR_LO|RD_s|T5 },
659
660{"pmulth", "d,v,t", 0x70000709, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
661{"pmultuw", "d,v,t", 0x70000329, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
662{"pmultw", "d,v,t", 0x70000309, 0xfc0007ff,WR_d|RD_s|RD_t|WR_HI|WR_LO|T5 },
663
664{"pnor", "d,v,t", 0x700004e9, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
665{"por", "d,v,t", 0x700004a9, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
666
667{"ppac1", "d,t", 0x700007c8, 0xffe007ff, WR_d|RD_t|T5 },
668
669{"ppacb", "d,v,t", 0x700006c8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
670{"ppach", "d,v,t", 0x700005c8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
671{"ppacw", "d,v,t", 0x700004c8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
672
673{"prevh", "d,t", 0x700006c9, 0xffe007ff, WR_d|RD_t|T5 },
674{"prot3w", "d,t", 0x700007c9, 0xffe007ff, WR_d|RD_t|T5 },
675
676{"psllh", "d,t,<", 0x70000034, 0xffe0003f, WR_d|RD_t|T5 },
677{"psllvw", "d,t,s", 0x70000089, 0xfc0007ff, WR_d|RD_t|RD_s|T5 },
678{"psllw", "d,t,<", 0x7000003c, 0xffe0003f, WR_d|RD_t|T5 },
679
680{"psrah", "d,t,<", 0x70000037, 0xffe0003f, WR_d|RD_t|T5 },
681{"psravw", "d,t,s", 0x700000e9, 0xfc0007ff, WR_d|RD_t|RD_s|T5 },
682{"psraw", "d,t,<", 0x7000003f, 0xffe0003f, WR_d|RD_t|T5 },
683
684{"psrlh", "d,t,<", 0x70000036, 0xffe0003f, WR_d|RD_t|T5 },
685{"psrlvw", "d,t,s", 0x700000c9, 0xfc0007ff, WR_d|RD_t|RD_s|T5 },
686{"psrlw", "d,t,<", 0x7000003e, 0xffe0003f, WR_d|RD_t|T5 },
687
688{"psubb", "d,v,t", 0x70000248, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
689{"psubh", "d,v,t", 0x70000148, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
690{"psubsb", "d,v,t", 0x70000648, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
691{"psubsh", "d,v,t", 0x70000548, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
692{"psubsw", "d,v,t", 0x70000448, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
693{"psubub", "d,v,t", 0x70000668, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
694{"psubuh", "d,v,t", 0x70000568, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
695{"psubuw", "d,v,t", 0x70000468, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
696{"psubw", "d,v,t", 0x70000048, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
697
698{"pxor", "d,v,t", 0x700004c9, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
699 /* end-sanitize-r5900 */
700
8d67dc30
ILT
701{"pref", "k,o(b)", 0xcc000000, 0xfc000000, RD_b|I4 },
702{"prefx", "h,t(b)", 0x4c00000f, 0xfc0007ff, RD_b|RD_t|I4 },
276c2d7d
GRK
703
704 /* start-sanitize-r5900 */
705{"qfsrv", "d,v,t", 0x700006e8, 0xfc0007ff, WR_d|RD_s|RD_t|T5 },
706 /* end-sanitize-r5900 */
707
8d67dc30
ILT
708{"recip.d", "D,S", 0x46200015, 0xffff003f, WR_D|RD_S|I4 },
709{"recip.s", "D,S", 0x46000015, 0xffff003f, WR_D|RD_S|I4 },
547998d2 710{"rem", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
45b14705
ILT
711{"rem", "d,v,t", 0, (int) M_REM_3, INSN_MACRO },
712{"rem", "d,v,I", 0, (int) M_REM_3I, INSN_MACRO },
547998d2 713{"remu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HI|WR_LO },
45b14705
ILT
714{"remu", "d,v,t", 0, (int) M_REMU_3, INSN_MACRO },
715{"remu", "d,v,I", 0, (int) M_REMU_3I, INSN_MACRO },
8d67dc30 716{"rfe", "", 0x42000010, 0xffffffff, 0 },
45b14705
ILT
717{"rol", "d,v,t", 0, (int) M_ROL, INSN_MACRO },
718{"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO },
719{"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO },
720{"ror", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO },
2bef2d3e
ILT
721{"round.l.d", "D,S", 0x46200008, 0xffff003f, WR_D|RD_S|I3 },
722{"round.l.s", "D,S", 0x46000008, 0xffff003f, WR_D|RD_S|I3 },
723{"round.w.d", "D,S", 0x4620000c, 0xffff003f, WR_D|RD_S|I2 },
724{"round.w.s", "D,S", 0x4600000c, 0xffff003f, WR_D|RD_S|I2 },
8d67dc30
ILT
725{"rsqrt.d", "D,S", 0x46200016, 0xffff003f, WR_D|RD_S|I4 },
726{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|I4 },
942a4965 727{"sb", "t,o(b)", 0xa0000000, 0xfc000000, SM|RD_t|RD_b },
45b14705 728{"sb", "t,A(b)", 0, (int) M_SB_AB, INSN_MACRO },
84909073 729{"sc", "t,o(b)", 0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b|I2 },
2bef2d3e 730{"sc", "t,A(b)", 2, (int) M_SC_AB, INSN_MACRO },
84909073 731{"scd", "t,o(b)", 0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b|I3 },
2bef2d3e 732{"scd", "t,A(b)", 3, (int) M_SCD_AB, INSN_MACRO },
942a4965 733{"sd", "t,o(b)", 0xfc000000, 0xfc000000, SM|RD_t|RD_b|I3 },
45b14705
ILT
734{"sd", "t,o(b)", 0, (int) M_SD_OB, INSN_MACRO },
735{"sd", "t,A(b)", 0, (int) M_SD_AB, INSN_MACRO },
942a4965
ILT
736{"sdc1", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|I2 },
737{"sdc1", "E,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|I2 },
2bef2d3e
ILT
738{"sdc1", "T,A(b)", 2, (int) M_SDC1_AB, INSN_MACRO },
739{"sdc1", "E,A(b)", 2, (int) M_SDC1_AB, INSN_MACRO },
942a4965 740{"sdc2", "E,o(b)", 0xf8000000, 0xfc000000, SM|RD_C2|RD_b|I2 },
2bef2d3e 741{"sdc2", "E,A(b)", 2, (int) M_SDC2_AB, INSN_MACRO },
942a4965 742{"sdc3", "E,o(b)", 0xfc000000, 0xfc000000, SM|RD_C3|RD_b|I2 },
2bef2d3e 743{"sdc3", "E,A(b)", 2, (int) M_SDC3_AB, INSN_MACRO },
942a4965 744{"s.d", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|I2 },
2bef2d3e
ILT
745{"s.d", "T,o(b)", 0, (int) M_S_DOB, INSN_MACRO },
746{"s.d", "T,A(b)", 0, (int) M_S_DAB, INSN_MACRO },
942a4965 747{"sdl", "t,o(b)", 0xb0000000, 0xfc000000, SM|RD_t|RD_b|I3 },
2bef2d3e 748{"sdl", "t,A(b)", 3, (int) M_SDL_AB, INSN_MACRO },
942a4965 749{"sdr", "t,o(b)", 0xb4000000, 0xfc000000, SM|RD_t|RD_b|I3 },
2bef2d3e 750{"sdr", "t,A(b)", 3, (int) M_SDR_AB, INSN_MACRO },
276c2d7d 751{"sdxc1", "S,t(b)", 0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b|I4|X5 },
8d67dc30
ILT
752{"selsl", "d,v,t", 0x00000005, 0xfc0007ff, WR_d|RD_s|RD_t|L1 },
753{"selsr", "d,v,t", 0x00000001, 0xfc0007ff, WR_d|RD_s|RD_t|L1 },
45b14705
ILT
754{"seq", "d,v,t", 0, (int) M_SEQ, INSN_MACRO },
755{"seq", "d,v,I", 0, (int) M_SEQ_I, INSN_MACRO },
756{"sge", "d,v,t", 0, (int) M_SGE, INSN_MACRO },
757{"sge", "d,v,I", 0, (int) M_SGE_I, INSN_MACRO },
758{"sgeu", "d,v,t", 0, (int) M_SGEU, INSN_MACRO },
759{"sgeu", "d,v,I", 0, (int) M_SGEU_I, INSN_MACRO },
760{"sgt", "d,v,t", 0, (int) M_SGT, INSN_MACRO },
761{"sgt", "d,v,I", 0, (int) M_SGT_I, INSN_MACRO },
762{"sgtu", "d,v,t", 0, (int) M_SGTU, INSN_MACRO },
763{"sgtu", "d,v,I", 0, (int) M_SGTU_I, INSN_MACRO },
942a4965 764{"sh", "t,o(b)", 0xa4000000, 0xfc000000, SM|RD_t|RD_b },
45b14705
ILT
765{"sh", "t,A(b)", 0, (int) M_SH_AB, INSN_MACRO },
766{"sle", "d,v,t", 0, (int) M_SLE, INSN_MACRO },
767{"sle", "d,v,I", 0, (int) M_SLE_I, INSN_MACRO },
768{"sleu", "d,v,t", 0, (int) M_SLEU, INSN_MACRO },
769{"sleu", "d,v,I", 0, (int) M_SLEU_I, INSN_MACRO },
770{"sllv", "d,t,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s },
771{"sll", "d,w,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s }, /* sllv */
772{"sll", "d,w,<", 0x00000000, 0xffe0003f, WR_d|RD_t },
773{"slt", "d,v,t", 0x0000002a, 0xfc0007ff, WR_d|RD_s|RD_t },
774{"slt", "d,v,I", 0, (int) M_SLT_I, INSN_MACRO },
775{"slti", "t,r,j", 0x28000000, 0xfc000000, WR_t|RD_s },
776{"sltiu", "t,r,j", 0x2c000000, 0xfc000000, WR_t|RD_s },
777{"sltu", "d,v,t", 0x0000002b, 0xfc0007ff, WR_d|RD_s|RD_t },
778{"sltu", "d,v,I", 0, (int) M_SLTU_I, INSN_MACRO },
779{"sne", "d,v,t", 0, (int) M_SNE, INSN_MACRO },
780{"sne", "d,v,I", 0, (int) M_SNE_I, INSN_MACRO },
276c2d7d
GRK
781 /* start-sanitize-r5900 */
782{"sq", "t,o(b)", 0x7c000000, 0xfc000000, SM|RD_t|RD_b|T5 },
783 /* end-sanitize-r5900 */
2bef2d3e 784{"sqrt.d", "D,S", 0x46200004, 0xffff003f, WR_D|RD_S|I2 },
942a4965 785{"sqrt.s", "D,S", 0x46000004, 0xffff003f, WR_D|RD_S|I2 },
45b14705
ILT
786{"srav", "d,t,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s },
787{"sra", "d,w,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s }, /* srav */
788{"sra", "d,w,<", 0x00000003, 0xffe0003f, WR_d|RD_t },
789{"srlv", "d,t,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s },
790{"srl", "d,w,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s }, /* srlv */
791{"srl", "d,w,<", 0x00000002, 0xffe0003f, WR_d|RD_t },
8d67dc30 792{"standby", "", 0x42000021, 0xffffffff, V1 },
45b14705
ILT
793{"sub", "d,v,t", 0x00000022, 0xfc0007ff, WR_d|RD_s|RD_t },
794{"sub", "d,v,I", 0, (int) M_SUB_I, INSN_MACRO },
795{"sub.d", "D,V,T", 0x46200001, 0xffe0003f, WR_D|RD_S|RD_T },
796{"sub.s", "D,V,T", 0x46000001, 0xffe0003f, WR_D|RD_S|RD_T },
797{"subu", "d,v,t", 0x00000023, 0xfc0007ff, WR_d|RD_s|RD_t },
798{"subu", "d,v,I", 0, (int) M_SUBU_I, INSN_MACRO },
8d67dc30 799{"suspend", "", 0x42000022, 0xffffffff, V1 },
942a4965 800{"sw", "t,o(b)", 0xac000000, 0xfc000000, SM|RD_t|RD_b },
45b14705 801{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO },
942a4965 802{"swc0", "E,o(b)", 0xe0000000, 0xfc000000, SM|RD_C0|RD_b },
45b14705 803{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO },
942a4965
ILT
804{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b },
805{"swc1", "E,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b },
45b14705
ILT
806{"swc1", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
807{"swc1", "E,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
942a4965 808{"s.s", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b }, /* swc1 */
45b14705 809{"s.s", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO },
942a4965 810{"swc2", "E,o(b)", 0xe8000000, 0xfc000000, SM|RD_C2|RD_b },
45b14705 811{"swc2", "E,A(b)", 0, (int) M_SWC2_AB, INSN_MACRO },
942a4965 812{"swc3", "E,o(b)", 0xec000000, 0xfc000000, SM|RD_C3|RD_b },
45b14705 813{"swc3", "E,A(b)", 0, (int) M_SWC3_AB, INSN_MACRO },
942a4965 814{"swl", "t,o(b)", 0xa8000000, 0xfc000000, SM|RD_t|RD_b },
45b14705 815{"swl", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO },
2bef2d3e
ILT
816{"scache", "t,o(b)", 0xa8000000, 0xfc000000, RD_t|RD_b|I2 }, /* same */
817{"scache", "t,A(b)", 2, (int) M_SWL_AB, INSN_MACRO }, /* as swl */
942a4965 818{"swr", "t,o(b)", 0xb8000000, 0xfc000000, SM|RD_t|RD_b },
45b14705 819{"swr", "t,A(b)", 0, (int) M_SWR_AB, INSN_MACRO },
2bef2d3e
ILT
820{"invalidate", "t,o(b)",0xb8000000, 0xfc000000, RD_t|RD_b|I2 }, /* same */
821{"invalidate", "t,A(b)",2, (int) M_SWR_AB, INSN_MACRO }, /* as swr */
276c2d7d 822{"swxc1", "S,t(b)", 0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b|I4|X5 },
2bef2d3e 823{"sync", "", 0x0000000f, 0xffffffff, I2 },
9978cd4d
ILT
824{"syscall", "", 0x0000000c, 0xffffffff, TRAP },
825{"syscall", "B", 0x0000000c, 0xfc00003f, TRAP },
826{"teqi", "s,j", 0x040c0000, 0xfc1f0000, RD_s|I2|TRAP },
827{"teq", "s,t", 0x00000034, 0xfc00003f, RD_s|RD_t|I2|TRAP },
828{"teq", "s,j", 0x040c0000, 0xfc1f0000, RD_s|I2|TRAP }, /* teqi */
2bef2d3e 829{"teq", "s,I", 2, (int) M_TEQ_I, INSN_MACRO },
9978cd4d
ILT
830{"tgei", "s,j", 0x04080000, 0xfc1f0000, RD_s|I2|TRAP },
831{"tge", "s,t", 0x00000030, 0xfc00003f, RD_s|RD_t|I2|TRAP },
832{"tge", "s,j", 0x04080000, 0xfc1f0000, RD_s|I2|TRAP }, /* tgei */
2bef2d3e 833{"tge", "s,I", 2, (int) M_TGE_I, INSN_MACRO },
9978cd4d
ILT
834{"tgeiu", "s,j", 0x04090000, 0xfc1f0000, RD_s|I2|TRAP },
835{"tgeu", "s,t", 0x00000031, 0xfc00003f, RD_s|RD_t|I2|TRAP },
836{"tgeu", "s,j", 0x04090000, 0xfc1f0000, RD_s|I2|TRAP }, /* tgeiu */
2bef2d3e 837{"tgeu", "s,I", 2, (int) M_TGEU_I, INSN_MACRO },
45b14705
ILT
838{"tlbp", "", 0x42000008, 0xffffffff, INSN_TLB },
839{"tlbr", "", 0x42000001, 0xffffffff, INSN_TLB },
840{"tlbwi", "", 0x42000002, 0xffffffff, INSN_TLB },
841{"tlbwr", "", 0x42000006, 0xffffffff, INSN_TLB },
9978cd4d
ILT
842{"tlti", "s,j", 0x040a0000, 0xfc1f0000, RD_s|I2|TRAP },
843{"tlt", "s,t", 0x00000032, 0xfc00003f, RD_s|RD_t|I2|TRAP },
844{"tlt", "s,j", 0x040a0000, 0xfc1f0000, RD_s|I2|TRAP }, /* tlti */
2bef2d3e 845{"tlt", "s,I", 2, (int) M_TLT_I, INSN_MACRO },
9978cd4d
ILT
846{"tltiu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|I2|TRAP },
847{"tltu", "s,t", 0x00000033, 0xfc00003f, RD_s|RD_t|I2|TRAP },
848{"tltu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|I2|TRAP }, /* tltiu */
2bef2d3e 849{"tltu", "s,I", 2, (int) M_TLTU_I, INSN_MACRO },
9978cd4d
ILT
850{"tnei", "s,j", 0x040e0000, 0xfc1f0000, RD_s|I2|TRAP },
851{"tne", "s,t", 0x00000036, 0xfc00003f, RD_s|RD_t|I2|TRAP },
852{"tne", "s,j", 0x040e0000, 0xfc1f0000, RD_s|I2|TRAP }, /* tnei */
2bef2d3e
ILT
853{"tne", "s,I", 2, (int) M_TNE_I, INSN_MACRO },
854{"trunc.l.d", "D,S", 0x46200009, 0xffff003f, WR_D|RD_S|I3 },
855{"trunc.l.s", "D,S", 0x46000009, 0xffff003f, WR_D|RD_S|I3 },
856{"trunc.w.d", "D,S", 0x4620000d, 0xffff003f, WR_D|RD_S|I2 },
857{"trunc.w.d", "D,S,x", 0x4620000d, 0xffff003f, WR_D|RD_S|I2 },
45b14705 858{"trunc.w.d", "D,S,t", 0, (int) M_TRUNCWD, INSN_MACRO },
2bef2d3e
ILT
859{"trunc.w.s", "D,S", 0x4600000d, 0xffff003f, WR_D|RD_S|I2 },
860{"trunc.w.s", "D,S,x", 0x4600000d, 0xffff003f, WR_D|RD_S|I2 },
45b14705 861{"trunc.w.s", "D,S,t", 0, (int) M_TRUNCWS, INSN_MACRO },
470feacf 862{"uld", "t,o(b)", 3, (int) M_ULD, INSN_MACRO },
8d67dc30 863{"uld", "t,A(b)", 3, (int) M_ULD_A, INSN_MACRO },
45b14705 864{"ulh", "t,o(b)", 0, (int) M_ULH, INSN_MACRO },
8d67dc30 865{"ulh", "t,A(b)", 0, (int) M_ULH_A, INSN_MACRO },
45b14705 866{"ulhu", "t,o(b)", 0, (int) M_ULHU, INSN_MACRO },
8d67dc30 867{"ulhu", "t,A(b)", 0, (int) M_ULHU_A, INSN_MACRO },
45b14705 868{"ulw", "t,o(b)", 0, (int) M_ULW, INSN_MACRO },
8d67dc30 869{"ulw", "t,A(b)", 0, (int) M_ULW_A, INSN_MACRO },
470feacf 870{"usd", "t,o(b)", 3, (int) M_USD, INSN_MACRO },
8d67dc30 871{"usd", "t,A(b)", 3, (int) M_USD_A, INSN_MACRO },
45b14705 872{"ush", "t,o(b)", 0, (int) M_USH, INSN_MACRO },
8d67dc30 873{"ush", "t,A(b)", 0, (int) M_USH_A, INSN_MACRO },
45b14705 874{"usw", "t,o(b)", 0, (int) M_USW, INSN_MACRO },
8d67dc30 875{"usw", "t,A(b)", 0, (int) M_USW_A, INSN_MACRO },
45b14705
ILT
876{"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t },
877{"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO },
878{"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s },
8d67dc30
ILT
879{"waiti", "", 0x42000020, 0xffffffff, TRAP|L1 },
880{"wb", "o(b)", 0xbc040000, 0xfc1f0000, SM|RD_b|L1 },
45b14705
ILT
881/* No hazard protection on coprocessor instructions--they shouldn't
882 change the state of the processor and if they do it's up to the
883 user to put in nops as necessary. These are at the end so that the
884 disasembler recognizes more specific versions first. */
885{"c0", "C", 0x42000000, 0xfe000000, 0 },
886{"c1", "C", 0x46000000, 0xfe000000, 0 },
887{"c2", "C", 0x4a000000, 0xfe000000, 0 },
888{"c3", "C", 0x4e000000, 0xfe000000, 0 },
889};
890
891const int bfd_mips_num_opcodes =
892 ((sizeof mips_opcodes) / (sizeof (mips_opcodes[0])));
This page took 0.212362 seconds and 4 git commands to generate.