daily update
[deliverable/binutils-gdb.git] / opcodes / mips-opc.c
CommitLineData
657e7cec 1/* mips-opc.c -- MIPS opcode list.
1f25f5d3 2 Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
060d22b0 3 Free Software Foundation, Inc.
252b5132
RH
4 Contributed by Ralph Campbell and OSF
5 Commented and modified by Ian Lance Taylor, Cygnus Support
e70f2590 6 Extended for MIPS32 support by Anders Norlander, and by SiByte, Inc.
af7ee8bf
CD
7 MIPS-3D, MDMX, and MIPS32 Release 2 support added by Broadcom
8 Corporation (SiByte).
252b5132
RH
9
10This file is part of GDB, GAS, and the GNU binutils.
11
12GDB, GAS, and the GNU binutils are free software; you can redistribute
13them and/or modify them under the terms of the GNU General Public
14License as published by the Free Software Foundation; either version
151, or (at your option) any later version.
16
17GDB, GAS, and the GNU binutils are distributed in the hope that they
18will be useful, but WITHOUT ANY WARRANTY; without even the implied
19warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
20the GNU General Public License for more details.
21
22You should have received a copy of the GNU General Public License
23along with this file; see the file COPYING. If not, write to the Free
24Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
25
26#include <stdio.h>
0d8dfecf 27#include "sysdep.h"
252b5132
RH
28#include "opcode/mips.h"
29
30/* Short hand so the lines aren't too long. */
31
32#define LDD INSN_LOAD_MEMORY_DELAY
33#define LCD INSN_LOAD_COPROC_DELAY
34#define UBD INSN_UNCOND_BRANCH_DELAY
35#define CBD INSN_COND_BRANCH_DELAY
36#define COD INSN_COPROC_MOVE_DELAY
37#define CLD INSN_COPROC_MEMORY_DELAY
38#define CBL INSN_COND_BRANCH_LIKELY
39#define TRAP INSN_TRAP
40#define SM INSN_STORE_MEMORY
41
42#define WR_d INSN_WRITE_GPR_D
43#define WR_t INSN_WRITE_GPR_T
e93d7199
NC
44#define WR_31 INSN_WRITE_GPR_31
45#define WR_D INSN_WRITE_FPR_D
252b5132
RH
46#define WR_T INSN_WRITE_FPR_T
47#define WR_S INSN_WRITE_FPR_S
e93d7199
NC
48#define RD_s INSN_READ_GPR_S
49#define RD_b INSN_READ_GPR_S
50#define RD_t INSN_READ_GPR_T
51#define RD_S INSN_READ_FPR_S
52#define RD_T INSN_READ_FPR_T
252b5132
RH
53#define RD_R INSN_READ_FPR_R
54#define WR_CC INSN_WRITE_COND_CODE
55#define RD_CC INSN_READ_COND_CODE
56#define RD_C0 INSN_COP
57#define RD_C1 INSN_COP
58#define RD_C2 INSN_COP
59#define RD_C3 INSN_COP
60#define WR_C0 INSN_COP
61#define WR_C1 INSN_COP
62#define WR_C2 INSN_COP
63#define WR_C3 INSN_COP
64
65#define WR_HI INSN_WRITE_HI
66#define RD_HI INSN_READ_HI
67#define MOD_HI WR_HI|RD_HI
68
69#define WR_LO INSN_WRITE_LO
70#define RD_LO INSN_READ_LO
71#define MOD_LO WR_LO|RD_LO
72
73#define WR_HILO WR_HI|WR_LO
74#define RD_HILO RD_HI|RD_LO
75#define MOD_HILO WR_HILO|RD_HILO
76
77#define IS_M INSN_MULT
78
154bce22
CD
79#define WR_MACC INSN_WRITE_MDMX_ACC
80#define RD_MACC INSN_READ_MDMX_ACC
deec1734 81
252b5132
RH
82#define I1 INSN_ISA1
83#define I2 INSN_ISA2
84#define I3 INSN_ISA3
85#define I4 INSN_ISA4
5fce5ddf 86#define I5 INSN_ISA5
e7af610e 87#define I32 INSN_ISA32
84ea6cf2 88#define I64 INSN_ISA64
af7ee8bf 89#define I33 INSN_ISA32R2
5f74bc13 90#define I65 INSN_ISA64R2
e7af610e 91
aec421e0
TS
92/* MIPS64 MIPS-3D ASE support. */
93#define I16 INSN_MIPS16
94
44426910 95/* MIPS64 MIPS-3D ASE support. */
1f25f5d3
CD
96#define M3D INSN_MIPS3D
97
deec1734 98/* MIPS64 MDMX ASE support. */
154bce22 99#define MX INSN_MDMX
deec1734 100
252b5132
RH
101#define P3 INSN_4650
102#define L1 INSN_4010
9752cf1b 103#define V1 (INSN_4100 | INSN_4111 | INSN_4120)
252b5132 104#define T3 INSN_3900
99c14723 105#define M1 INSN_10000
2228315b 106#define SB1 INSN_SB1
9752cf1b
RS
107#define N411 INSN_4111
108#define N412 INSN_4120
109#define N5 (INSN_5400 | INSN_5500)
110#define N54 INSN_5400
111#define N55 INSN_5500
252b5132 112
e93d7199 113#define G1 (T3 \
252b5132
RH
114 )
115
99c14723 116#define G2 (T3 \
252b5132
RH
117 )
118
99c14723
TS
119#define G3 (I4 \
120 )
252b5132
RH
121
122/* The order of overloaded instructions matters. Label arguments and
123 register arguments look the same. Instructions that can have either
124 for arguments must apear in the correct order in this table for the
125 assembler to pick the right one. In other words, entries with
126 immediate operands must apear after the same instruction with
127 registers.
128
44426910
CD
129 Because of the lookup algorithm used, entries with the same opcode
130 name must be contiguous.
131
252b5132
RH
132 Many instructions are short hand for other instructions (i.e., The
133 jal <register> instruction is short for jalr <register>). */
134
4372b673
NC
135const struct mips_opcode mips_builtin_opcodes[] =
136{
252b5132
RH
137/* These instructions appear first so that the disassembler will find
138 them first. The assemblers uses a hash table based on the
139 instruction name anyhow. */
08fe7a7e 140/* name, args, match, mask, pinfo, membership */
aa084229 141{"pref", "k,o(b)", 0xcc000000, 0xfc000000, RD_b, I4|I32|G3 },
564e8ad9 142{"prefx", "h,t(b)", 0x4c00000f, 0xfc0007ff, RD_b|RD_t, I4 },
af7ee8bf
CD
143{"nop", "", 0x00000000, 0xffffffff, 0, I1 }, /* sll */
144{"ssnop", "", 0x00000040, 0xffffffff, 0, I32|N55 }, /* sll */
145{"ehb", "", 0x000000c0, 0xffffffff, 0, I33 }, /* sll */
08fe7a7e
NC
146{"li", "t,j", 0x24000000, 0xffe00000, WR_t, I1 }, /* addiu */
147{"li", "t,i", 0x34000000, 0xffe00000, WR_t, I1 }, /* ori */
148{"li", "t,I", 0, (int) M_LI, INSN_MACRO, I1 },
d98bb281 149{"move", "d,s", 0, (int) M_MOVE, INSN_MACRO, I1 },
08fe7a7e
NC
150{"move", "d,s", 0x0000002d, 0xfc1f07ff, WR_d|RD_s, I3 },/* daddu */
151{"move", "d,s", 0x00000021, 0xfc1f07ff, WR_d|RD_s, I1 },/* addu */
152{"move", "d,s", 0x00000025, 0xfc1f07ff, WR_d|RD_s, I1 },/* or */
153{"b", "p", 0x10000000, 0xffff0000, UBD, I1 },/* beq 0,0 */
154{"b", "p", 0x04010000, 0xffff0000, UBD, I1 },/* bgez 0 */
155{"bal", "p", 0x04110000, 0xffff0000, UBD|WR_31, I1 },/* bgezal 0*/
252b5132 156
e70f2590
NC
157{"abs", "d,v", 0, (int) M_ABS, INSN_MACRO, I1 },
158{"abs.s", "D,V", 0x46000005, 0xffff003f, WR_D|RD_S|FP_S, I1 },
159{"abs.d", "D,V", 0x46200005, 0xffff003f, WR_D|RD_S|FP_D, I1 },
160{"abs.ps", "D,V", 0x46c00005, 0xffff003f, WR_D|RD_S|FP_D, I5 },
161{"add", "d,v,t", 0x00000020, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
162{"add", "t,r,I", 0, (int) M_ADD_I, INSN_MACRO, I1 },
163{"add.s", "D,V,T", 0x46000000, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
164{"add.d", "D,V,T", 0x46200000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
107c6e1a 165{"add.ob", "X,Y,Q", 0x7800000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
166{"add.ob", "D,S,T", 0x4ac0000b, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
167{"add.ob", "D,S,T[e]", 0x4800000b, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
168{"add.ob", "D,S,k", 0x4bc0000b, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
e70f2590 169{"add.ps", "D,V,T", 0x46c00000, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
deec1734 170{"add.qh", "X,Y,Q", 0x7820000b, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 171{"adda.ob", "Y,Q", 0x78000037, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
deec1734 172{"adda.qh", "Y,Q", 0x78200037, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
e70f2590
NC
173{"addi", "t,r,j", 0x20000000, 0xfc000000, WR_t|RD_s, I1 },
174{"addiu", "t,r,j", 0x24000000, 0xfc000000, WR_t|RD_s, I1 },
107c6e1a 175{"addl.ob", "Y,Q", 0x78000437, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
deec1734 176{"addl.qh", "Y,Q", 0x78200437, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
1f25f5d3 177{"addr.ps", "D,S,T", 0x46c00018, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, M3D },
e70f2590
NC
178{"addu", "d,v,t", 0x00000021, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
179{"addu", "t,r,I", 0, (int) M_ADDU_I, INSN_MACRO, I1 },
107c6e1a 180{"alni.ob", "X,Y,Z,O", 0x78000018, 0xff00003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b 181{"alni.ob", "D,S,T,%", 0x48000018, 0xff00003f, WR_D|RD_S|RD_T, N54 },
deec1734 182{"alni.qh", "X,Y,Z,O", 0x7800001a, 0xff00003f, WR_D|RD_S|RD_T|FP_D, MX },
e70f2590 183{"alnv.ps", "D,V,T,s", 0x4c00001e, 0xfc00003f, WR_D|RD_S|RD_T|FP_D, I5 },
107c6e1a 184{"alnv.ob", "X,Y,Z,s", 0x78000019, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, MX|SB1 },
deec1734 185{"alnv.qh", "X,Y,Z,s", 0x7800001b, 0xfc00003f, WR_D|RD_S|RD_T|RD_s|FP_D, MX },
e70f2590
NC
186{"and", "d,v,t", 0x00000024, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
187{"and", "t,r,I", 0, (int) M_AND_I, INSN_MACRO, I1 },
107c6e1a 188{"and.ob", "X,Y,Q", 0x7800000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
189{"and.ob", "D,S,T", 0x4ac0000c, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
190{"and.ob", "D,S,T[e]", 0x4800000c, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
191{"and.ob", "D,S,k", 0x4bc0000c, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 192{"and.qh", "X,Y,Q", 0x7820000c, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
e70f2590 193{"andi", "t,r,i", 0x30000000, 0xfc000000, WR_t|RD_s, I1 },
252b5132
RH
194/* b is at the top of the table. */
195/* bal is at the top of the table. */
08fe7a7e
NC
196{"bc0f", "p", 0x41000000, 0xffff0000, CBD|RD_CC, I1 },
197{"bc0fl", "p", 0x41020000, 0xffff0000, CBL|RD_CC, I2|T3 },
ff8a5556
CD
198{"bc0t", "p", 0x41010000, 0xffff0000, CBD|RD_CC, I1 },
199{"bc0tl", "p", 0x41030000, 0xffff0000, CBL|RD_CC, I2|T3 },
1f25f5d3
CD
200{"bc1any2f", "N,p", 0x45200000, 0xffe30000, CBD|RD_CC|FP_S, M3D },
201{"bc1any2t", "N,p", 0x45210000, 0xffe30000, CBD|RD_CC|FP_S, M3D },
202{"bc1any4f", "N,p", 0x45400000, 0xffe30000, CBD|RD_CC|FP_S, M3D },
203{"bc1any4t", "N,p", 0x45410000, 0xffe30000, CBD|RD_CC|FP_S, M3D },
15305553
NC
204{"bc1f", "p", 0x45000000, 0xffff0000, CBD|RD_CC|FP_S, I1 },
205{"bc1f", "N,p", 0x45000000, 0xffe30000, CBD|RD_CC|FP_S, I4|I32 },
206{"bc1fl", "p", 0x45020000, 0xffff0000, CBL|RD_CC|FP_S, I2|T3 },
207{"bc1fl", "N,p", 0x45020000, 0xffe30000, CBL|RD_CC|FP_S, I4|I32 },
08fe7a7e 208{"bc1t", "p", 0x45010000, 0xffff0000, CBD|RD_CC|FP_S, I1 },
15305553 209{"bc1t", "N,p", 0x45010000, 0xffe30000, CBD|RD_CC|FP_S, I4|I32 },
08fe7a7e 210{"bc1tl", "p", 0x45030000, 0xffff0000, CBL|RD_CC|FP_S, I2|T3 },
15305553 211{"bc1tl", "N,p", 0x45030000, 0xffe30000, CBL|RD_CC|FP_S, I4|I32 },
ff8a5556
CD
212{"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC, I1 },
213{"bc2fl", "p", 0x49020000, 0xffff0000, CBL|RD_CC, I2|T3 },
08fe7a7e
NC
214{"bc2t", "p", 0x49010000, 0xffff0000, CBD|RD_CC, I1 },
215{"bc2tl", "p", 0x49030000, 0xffff0000, CBL|RD_CC, I2|T3 },
ff8a5556
CD
216{"bc3f", "p", 0x4d000000, 0xffff0000, CBD|RD_CC, I1 },
217{"bc3fl", "p", 0x4d020000, 0xffff0000, CBL|RD_CC, I2|T3 },
08fe7a7e
NC
218{"bc3t", "p", 0x4d010000, 0xffff0000, CBD|RD_CC, I1 },
219{"bc3tl", "p", 0x4d030000, 0xffff0000, CBL|RD_CC, I2|T3 },
220{"beqz", "s,p", 0x10000000, 0xfc1f0000, CBD|RD_s, I1 },
221{"beqzl", "s,p", 0x50000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
222{"beq", "s,t,p", 0x10000000, 0xfc000000, CBD|RD_s|RD_t, I1 },
223{"beq", "s,I,p", 0, (int) M_BEQ_I, INSN_MACRO, I1 },
224{"beql", "s,t,p", 0x50000000, 0xfc000000, CBL|RD_s|RD_t, I2|T3 },
2cd89590 225{"beql", "s,I,p", 0, (int) M_BEQL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
226{"bge", "s,t,p", 0, (int) M_BGE, INSN_MACRO, I1 },
227{"bge", "s,I,p", 0, (int) M_BGE_I, INSN_MACRO, I1 },
2cd89590
JL
228{"bgel", "s,t,p", 0, (int) M_BGEL, INSN_MACRO, I2|T3 },
229{"bgel", "s,I,p", 0, (int) M_BGEL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
230{"bgeu", "s,t,p", 0, (int) M_BGEU, INSN_MACRO, I1 },
231{"bgeu", "s,I,p", 0, (int) M_BGEU_I, INSN_MACRO, I1 },
2cd89590
JL
232{"bgeul", "s,t,p", 0, (int) M_BGEUL, INSN_MACRO, I2|T3 },
233{"bgeul", "s,I,p", 0, (int) M_BGEUL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
234{"bgez", "s,p", 0x04010000, 0xfc1f0000, CBD|RD_s, I1 },
235{"bgezl", "s,p", 0x04030000, 0xfc1f0000, CBL|RD_s, I2|T3 },
236{"bgezal", "s,p", 0x04110000, 0xfc1f0000, CBD|RD_s|WR_31, I1 },
9bb28706 237{"bgezall", "s,p", 0x04130000, 0xfc1f0000, CBL|RD_s|WR_31, I2|T3 },
08fe7a7e
NC
238{"bgt", "s,t,p", 0, (int) M_BGT, INSN_MACRO, I1 },
239{"bgt", "s,I,p", 0, (int) M_BGT_I, INSN_MACRO, I1 },
2cd89590
JL
240{"bgtl", "s,t,p", 0, (int) M_BGTL, INSN_MACRO, I2|T3 },
241{"bgtl", "s,I,p", 0, (int) M_BGTL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
242{"bgtu", "s,t,p", 0, (int) M_BGTU, INSN_MACRO, I1 },
243{"bgtu", "s,I,p", 0, (int) M_BGTU_I, INSN_MACRO, I1 },
2cd89590
JL
244{"bgtul", "s,t,p", 0, (int) M_BGTUL, INSN_MACRO, I2|T3 },
245{"bgtul", "s,I,p", 0, (int) M_BGTUL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
246{"bgtz", "s,p", 0x1c000000, 0xfc1f0000, CBD|RD_s, I1 },
247{"bgtzl", "s,p", 0x5c000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
248{"ble", "s,t,p", 0, (int) M_BLE, INSN_MACRO, I1 },
249{"ble", "s,I,p", 0, (int) M_BLE_I, INSN_MACRO, I1 },
2cd89590
JL
250{"blel", "s,t,p", 0, (int) M_BLEL, INSN_MACRO, I2|T3 },
251{"blel", "s,I,p", 0, (int) M_BLEL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
252{"bleu", "s,t,p", 0, (int) M_BLEU, INSN_MACRO, I1 },
253{"bleu", "s,I,p", 0, (int) M_BLEU_I, INSN_MACRO, I1 },
2cd89590
JL
254{"bleul", "s,t,p", 0, (int) M_BLEUL, INSN_MACRO, I2|T3 },
255{"bleul", "s,I,p", 0, (int) M_BLEUL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
256{"blez", "s,p", 0x18000000, 0xfc1f0000, CBD|RD_s, I1 },
257{"blezl", "s,p", 0x58000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
258{"blt", "s,t,p", 0, (int) M_BLT, INSN_MACRO, I1 },
259{"blt", "s,I,p", 0, (int) M_BLT_I, INSN_MACRO, I1 },
2cd89590
JL
260{"bltl", "s,t,p", 0, (int) M_BLTL, INSN_MACRO, I2|T3 },
261{"bltl", "s,I,p", 0, (int) M_BLTL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
262{"bltu", "s,t,p", 0, (int) M_BLTU, INSN_MACRO, I1 },
263{"bltu", "s,I,p", 0, (int) M_BLTU_I, INSN_MACRO, I1 },
2cd89590
JL
264{"bltul", "s,t,p", 0, (int) M_BLTUL, INSN_MACRO, I2|T3 },
265{"bltul", "s,I,p", 0, (int) M_BLTUL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
266{"bltz", "s,p", 0x04000000, 0xfc1f0000, CBD|RD_s, I1 },
267{"bltzl", "s,p", 0x04020000, 0xfc1f0000, CBL|RD_s, I2|T3 },
268{"bltzal", "s,p", 0x04100000, 0xfc1f0000, CBD|RD_s|WR_31, I1 },
9bb28706 269{"bltzall", "s,p", 0x04120000, 0xfc1f0000, CBL|RD_s|WR_31, I2|T3 },
08fe7a7e
NC
270{"bnez", "s,p", 0x14000000, 0xfc1f0000, CBD|RD_s, I1 },
271{"bnezl", "s,p", 0x54000000, 0xfc1f0000, CBL|RD_s, I2|T3 },
272{"bne", "s,t,p", 0x14000000, 0xfc000000, CBD|RD_s|RD_t, I1 },
273{"bne", "s,I,p", 0, (int) M_BNE_I, INSN_MACRO, I1 },
274{"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t, I2|T3 },
2cd89590 275{"bnel", "s,I,p", 0, (int) M_BNEL_I, INSN_MACRO, I2|T3 },
08fe7a7e
NC
276{"break", "", 0x0000000d, 0xffffffff, TRAP, I1 },
277{"break", "B", 0x0000000d, 0xfc00003f, TRAP, I32 },
278{"break", "c", 0x0000000d, 0xfc00ffff, TRAP, I1 },
279{"break", "c,q", 0x0000000d, 0xfc00003f, TRAP, I1 },
252b5132 280{"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 281{"c.f.d", "M,S,T", 0x46200030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 282{"c.f.s", "S,T", 0x46000030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 283{"c.f.s", "M,S,T", 0x46000030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
284{"c.f.ps", "S,T", 0x46c00030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
285{"c.f.ps", "M,S,T", 0x46c00030, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 286{"c.un.d", "S,T", 0x46200031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 287{"c.un.d", "M,S,T", 0x46200031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 288{"c.un.s", "S,T", 0x46000031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 289{"c.un.s", "M,S,T", 0x46000031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
290{"c.un.ps", "S,T", 0x46c00031, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
291{"c.un.ps", "M,S,T", 0x46c00031, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 292{"c.eq.d", "S,T", 0x46200032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 293{"c.eq.d", "M,S,T", 0x46200032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 294{"c.eq.s", "S,T", 0x46000032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 295{"c.eq.s", "M,S,T", 0x46000032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
107c6e1a 296{"c.eq.ob", "Y,Q", 0x78000001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
297{"c.eq.ob", "S,T", 0x4ac00001, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
298{"c.eq.ob", "S,T[e]", 0x48000001, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
299{"c.eq.ob", "S,k", 0x4bc00001, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
5fce5ddf
GRK
300{"c.eq.ps", "S,T", 0x46c00032, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
301{"c.eq.ps", "M,S,T", 0x46c00032, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
deec1734 302{"c.eq.qh", "Y,Q", 0x78200001, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX },
252b5132 303{"c.ueq.d", "S,T", 0x46200033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 304{"c.ueq.d", "M,S,T", 0x46200033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 305{"c.ueq.s", "S,T", 0x46000033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 306{"c.ueq.s", "M,S,T", 0x46000033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
307{"c.ueq.ps","S,T", 0x46c00033, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
308{"c.ueq.ps","M,S,T", 0x46c00033, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
e70f2590 309{"c.olt.d", "S,T", 0x46200034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 310{"c.olt.d", "M,S,T", 0x46200034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
252b5132 311{"c.olt.s", "S,T", 0x46000034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 312{"c.olt.s", "M,S,T", 0x46000034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
313{"c.olt.ps","S,T", 0x46c00034, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
314{"c.olt.ps","M,S,T", 0x46c00034, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 315{"c.ult.d", "S,T", 0x46200035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 316{"c.ult.d", "M,S,T", 0x46200035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 317{"c.ult.s", "S,T", 0x46000035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 318{"c.ult.s", "M,S,T", 0x46000035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
319{"c.ult.ps","S,T", 0x46c00035, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
320{"c.ult.ps","M,S,T", 0x46c00035, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
e70f2590 321{"c.ole.d", "S,T", 0x46200036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 322{"c.ole.d", "M,S,T", 0x46200036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 323{"c.ole.s", "S,T", 0x46000036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 324{"c.ole.s", "M,S,T", 0x46000036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
325{"c.ole.ps","S,T", 0x46c00036, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
326{"c.ole.ps","M,S,T", 0x46c00036, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 327{"c.ule.d", "S,T", 0x46200037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 328{"c.ule.d", "M,S,T", 0x46200037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 329{"c.ule.s", "S,T", 0x46000037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 330{"c.ule.s", "M,S,T", 0x46000037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
331{"c.ule.ps","S,T", 0x46c00037, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
332{"c.ule.ps","M,S,T", 0x46c00037, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 333{"c.sf.d", "S,T", 0x46200038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 334{"c.sf.d", "M,S,T", 0x46200038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 335{"c.sf.s", "S,T", 0x46000038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 336{"c.sf.s", "M,S,T", 0x46000038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
337{"c.sf.ps", "S,T", 0x46c00038, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
338{"c.sf.ps", "M,S,T", 0x46c00038, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 339{"c.ngle.d","S,T", 0x46200039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 340{"c.ngle.d","M,S,T", 0x46200039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 341{"c.ngle.s","S,T", 0x46000039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 342{"c.ngle.s","M,S,T", 0x46000039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
343{"c.ngle.ps","S,T", 0x46c00039, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
344{"c.ngle.ps","M,S,T", 0x46c00039, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 345{"c.seq.d", "S,T", 0x4620003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 346{"c.seq.d", "M,S,T", 0x4620003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 347{"c.seq.s", "S,T", 0x4600003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 348{"c.seq.s", "M,S,T", 0x4600003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
349{"c.seq.ps","S,T", 0x46c0003a, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
350{"c.seq.ps","M,S,T", 0x46c0003a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 351{"c.ngl.d", "S,T", 0x4620003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 352{"c.ngl.d", "M,S,T", 0x4620003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 353{"c.ngl.s", "S,T", 0x4600003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 354{"c.ngl.s", "M,S,T", 0x4600003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
355{"c.ngl.ps","S,T", 0x46c0003b, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
356{"c.ngl.ps","M,S,T", 0x46c0003b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 357{"c.lt.d", "S,T", 0x4620003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 358{"c.lt.d", "M,S,T", 0x4620003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
209fd667
CD
359{"c.lt.s", "S,T", 0x4600003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
360{"c.lt.s", "M,S,T", 0x4600003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
107c6e1a 361{"c.lt.ob", "Y,Q", 0x78000004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
362{"c.lt.ob", "S,T", 0x4ac00004, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
363{"c.lt.ob", "S,T[e]", 0x48000004, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
364{"c.lt.ob", "S,k", 0x4bc00004, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
5fce5ddf
GRK
365{"c.lt.ps", "S,T", 0x46c0003c, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
366{"c.lt.ps", "M,S,T", 0x46c0003c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
deec1734 367{"c.lt.qh", "Y,Q", 0x78200004, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX },
252b5132 368{"c.nge.d", "S,T", 0x4620003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 369{"c.nge.d", "M,S,T", 0x4620003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 370{"c.nge.s", "S,T", 0x4600003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 371{"c.nge.s", "M,S,T", 0x4600003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
372{"c.nge.ps","S,T", 0x46c0003d, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
373{"c.nge.ps","M,S,T", 0x46c0003d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
252b5132 374{"c.le.d", "S,T", 0x4620003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 375{"c.le.d", "M,S,T", 0x4620003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
209fd667
CD
376{"c.le.s", "S,T", 0x4600003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
377{"c.le.s", "M,S,T", 0x4600003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
107c6e1a 378{"c.le.ob", "Y,Q", 0x78000005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
379{"c.le.ob", "S,T", 0x4ac00005, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
380{"c.le.ob", "S,T[e]", 0x48000005, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
381{"c.le.ob", "S,k", 0x4bc00005, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
5fce5ddf
GRK
382{"c.le.ps", "S,T", 0x46c0003e, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
383{"c.le.ps", "M,S,T", 0x46c0003e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
deec1734 384{"c.le.qh", "Y,Q", 0x78200005, 0xfc2007ff, WR_CC|RD_S|RD_T|FP_D, MX },
252b5132 385{"c.ngt.d", "S,T", 0x4620003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I1 },
15305553 386{"c.ngt.d", "M,S,T", 0x4620003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I4|I32 },
e70f2590 387{"c.ngt.s", "S,T", 0x4600003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_S, I1 },
15305553 388{"c.ngt.s", "M,S,T", 0x4600003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, I4|I32 },
5fce5ddf
GRK
389{"c.ngt.ps","S,T", 0x46c0003f, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, I5 },
390{"c.ngt.ps","M,S,T", 0x46c0003f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, I5 },
1f25f5d3
CD
391{"cabs.eq.d", "M,S,T", 0x46200072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
392{"cabs.eq.ps", "M,S,T", 0x46c00072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
393{"cabs.eq.s", "M,S,T", 0x46000072, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
394{"cabs.f.d", "M,S,T", 0x46200070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
395{"cabs.f.ps", "M,S,T", 0x46c00070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
396{"cabs.f.s", "M,S,T", 0x46000070, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
397{"cabs.le.d", "M,S,T", 0x4620007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
398{"cabs.le.ps", "M,S,T", 0x46c0007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
399{"cabs.le.s", "M,S,T", 0x4600007e, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
400{"cabs.lt.d", "M,S,T", 0x4620007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
401{"cabs.lt.ps", "M,S,T", 0x46c0007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
402{"cabs.lt.s", "M,S,T", 0x4600007c, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
403{"cabs.nge.d", "M,S,T", 0x4620007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
404{"cabs.nge.ps","M,S,T", 0x46c0007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
405{"cabs.nge.s", "M,S,T", 0x4600007d, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
406{"cabs.ngl.d", "M,S,T", 0x4620007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
407{"cabs.ngl.ps","M,S,T", 0x46c0007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
408{"cabs.ngl.s", "M,S,T", 0x4600007b, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
409{"cabs.ngle.d","M,S,T", 0x46200079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
410{"cabs.ngle.ps","M,S,T",0x46c00079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
411{"cabs.ngle.s","M,S,T", 0x46000079, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
412{"cabs.ngt.d", "M,S,T", 0x4620007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
413{"cabs.ngt.ps","M,S,T", 0x46c0007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
414{"cabs.ngt.s", "M,S,T", 0x4600007f, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
415{"cabs.ole.d", "M,S,T", 0x46200076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
416{"cabs.ole.ps","M,S,T", 0x46c00076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
417{"cabs.ole.s", "M,S,T", 0x46000076, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
418{"cabs.olt.d", "M,S,T", 0x46200074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
419{"cabs.olt.ps","M,S,T", 0x46c00074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
420{"cabs.olt.s", "M,S,T", 0x46000074, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
421{"cabs.seq.d", "M,S,T", 0x4620007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
422{"cabs.seq.ps","M,S,T", 0x46c0007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
423{"cabs.seq.s", "M,S,T", 0x4600007a, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
424{"cabs.sf.d", "M,S,T", 0x46200078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
425{"cabs.sf.ps", "M,S,T", 0x46c00078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
426{"cabs.sf.s", "M,S,T", 0x46000078, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
427{"cabs.ueq.d", "M,S,T", 0x46200073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
428{"cabs.ueq.ps","M,S,T", 0x46c00073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
429{"cabs.ueq.s", "M,S,T", 0x46000073, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
430{"cabs.ule.d", "M,S,T", 0x46200077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
431{"cabs.ule.ps","M,S,T", 0x46c00077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
432{"cabs.ule.s", "M,S,T", 0x46000077, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
433{"cabs.ult.d", "M,S,T", 0x46200075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
434{"cabs.ult.ps","M,S,T", 0x46c00075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
435{"cabs.ult.s", "M,S,T", 0x46000075, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
436{"cabs.un.d", "M,S,T", 0x46200071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
437{"cabs.un.ps", "M,S,T", 0x46c00071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_D, M3D },
438{"cabs.un.s", "M,S,T", 0x46000071, 0xffe000ff, RD_S|RD_T|WR_CC|FP_S, M3D },
15305553 439{"cache", "k,o(b)", 0xbc000000, 0xfc000000, RD_b, I3|I32|T3},
e70f2590
NC
440{"ceil.l.d", "D,S", 0x4620000a, 0xffff003f, WR_D|RD_S|FP_D, I3 },
441{"ceil.l.s", "D,S", 0x4600000a, 0xffff003f, WR_D|RD_S|FP_S, I3 },
442{"ceil.w.d", "D,S", 0x4620000e, 0xffff003f, WR_D|RD_S|FP_D, I2 },
443{"ceil.w.s", "D,S", 0x4600000e, 0xffff003f, WR_D|RD_S|FP_S, I2 },
444{"cfc0", "t,G", 0x40400000, 0xffe007ff, LCD|WR_t|RD_C0, I1 },
252b5132
RH
445{"cfc1", "t,G", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, I1 },
446{"cfc1", "t,S", 0x44400000, 0xffe007ff, LCD|WR_t|RD_C1|FP_S, I1 },
e70f2590
NC
447{"cfc2", "t,G", 0x48400000, 0xffe007ff, LCD|WR_t|RD_C2, I1 },
448{"cfc3", "t,G", 0x4c400000, 0xffe007ff, LCD|WR_t|RD_C3, I1 },
9752cf1b
RS
449{"clo", "U,s", 0x70000021, 0xfc0007ff, WR_d|WR_t|RD_s, I32|N55 },
450{"clz", "U,s", 0x70000020, 0xfc0007ff, WR_d|WR_t|RD_s, I32|N55 },
e70f2590 451{"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
252b5132
RH
452{"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, I1 },
453{"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, I1 },
e70f2590
NC
454{"ctc2", "t,G", 0x48c00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
455{"ctc3", "t,G", 0x4cc00000, 0xffe007ff, COD|RD_t|WR_CC, I1 },
456{"cvt.d.l", "D,S", 0x46a00021, 0xffff003f, WR_D|RD_S|FP_D, I3 },
252b5132 457{"cvt.d.s", "D,S", 0x46000021, 0xffff003f, WR_D|RD_S|FP_D|FP_S, I1 },
e70f2590
NC
458{"cvt.d.w", "D,S", 0x46800021, 0xffff003f, WR_D|RD_S|FP_D, I1 },
459{"cvt.l.d", "D,S", 0x46200025, 0xffff003f, WR_D|RD_S|FP_D, I3 },
460{"cvt.l.s", "D,S", 0x46000025, 0xffff003f, WR_D|RD_S|FP_S, I3 },
461{"cvt.s.l", "D,S", 0x46a00020, 0xffff003f, WR_D|RD_S|FP_S, I3 },
252b5132 462{"cvt.s.d", "D,S", 0x46200020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, I1 },
e70f2590 463{"cvt.s.w", "D,S", 0x46800020, 0xffff003f, WR_D|RD_S|FP_S, I1 },
5fce5ddf
GRK
464{"cvt.s.pl","D,S", 0x46c00028, 0xffff003f, WR_D|RD_S|FP_S|FP_D, I5 },
465{"cvt.s.pu","D,S", 0x46c00020, 0xffff003f, WR_D|RD_S|FP_S|FP_D, I5 },
e70f2590
NC
466{"cvt.w.d", "D,S", 0x46200024, 0xffff003f, WR_D|RD_S|FP_D, I1 },
467{"cvt.w.s", "D,S", 0x46000024, 0xffff003f, WR_D|RD_S|FP_S, I1 },
1f25f5d3 468{"cvt.ps.pw", "D,S", 0x46800026, 0xffff003f, WR_D|RD_S|FP_S|FP_D, M3D },
e70f2590 469{"cvt.ps.s","D,V,T", 0x46000026, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
1f25f5d3 470{"cvt.pw.ps", "D,S", 0x46c00024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, M3D },
e70f2590
NC
471{"dabs", "d,v", 0, (int) M_DABS, INSN_MACRO, I3 },
472{"dadd", "d,v,t", 0x0000002c, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
473{"dadd", "t,r,I", 0, (int) M_DADD_I, INSN_MACRO, I3 },
474{"daddi", "t,r,j", 0x60000000, 0xfc000000, WR_t|RD_s, I3 },
475{"daddiu", "t,r,j", 0x64000000, 0xfc000000, WR_t|RD_s, I3 },
476{"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
477{"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, I3 },
9752cf1b
RS
478{"dbreak", "", 0x7000003f, 0xffffffff, 0, N5 },
479{"dclo", "U,s", 0x70000025, 0xfc0007ff, RD_s|WR_d|WR_t, I64|N55 },
480{"dclz", "U,s", 0x70000024, 0xfc0007ff, RD_s|WR_d|WR_t, I64|N55 },
252b5132 481/* dctr and dctw are used on the r5000. */
e70f2590
NC
482{"dctr", "o(b)", 0xbc050000, 0xfc1f0000, RD_b, I3 },
483{"dctw", "o(b)", 0xbc090000, 0xfc1f0000, RD_b, I3 },
15305553 484{"deret", "", 0x4200001f, 0xffffffff, 0, I32|G2 },
5f74bc13
CD
485{"dext", "t,r,I,+I", 0, (int) M_DEXT, INSN_MACRO, I65 },
486{"dext", "t,r,+A,+C", 0x7c000003, 0xfc00003f, WR_t|RD_s, I65 },
487{"dextm", "t,r,+A,+G", 0x7c000001, 0xfc00003f, WR_t|RD_s, I65 },
488{"dextu", "t,r,+E,+H", 0x7c000002, 0xfc00003f, WR_t|RD_s, I65 },
252b5132 489/* For ddiv, see the comments about div. */
08fe7a7e 490{"ddiv", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
e70f2590
NC
491{"ddiv", "d,v,t", 0, (int) M_DDIV_3, INSN_MACRO, I3 },
492{"ddiv", "d,v,I", 0, (int) M_DDIV_3I, INSN_MACRO, I3 },
252b5132 493/* For ddivu, see the comments about div. */
08fe7a7e 494{"ddivu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
e70f2590
NC
495{"ddivu", "d,v,t", 0, (int) M_DDIVU_3, INSN_MACRO, I3 },
496{"ddivu", "d,v,I", 0, (int) M_DDIVU_3I, INSN_MACRO, I3 },
3cf6d008
CD
497{"di", "", 0x41606000, 0xffffffff, WR_t|WR_C0, I33 },
498{"di", "t", 0x41606000, 0xffe0ffff, WR_t|WR_C0, I33 },
5f74bc13
CD
499{"dins", "t,r,I,+I", 0, (int) M_DINS, INSN_MACRO, I65 },
500{"dins", "t,r,+A,+B", 0x7c000007, 0xfc00003f, WR_t|RD_s, I65 },
501{"dinsm", "t,r,+A,+F", 0x7c000005, 0xfc00003f, WR_t|RD_s, I65 },
502{"dinsu", "t,r,+E,+F", 0x7c000006, 0xfc00003f, WR_t|RD_s, I65 },
252b5132
RH
503/* The MIPS assembler treats the div opcode with two operands as
504 though the first operand appeared twice (the first operand is both
505 a source and a destination). To get the div machine instruction,
506 you must use an explicit destination of $0. */
08fe7a7e
NC
507{"div", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, I1 },
508{"div", "z,t", 0x0000001a, 0xffe0ffff, RD_s|RD_t|WR_HILO, I1 },
e70f2590
NC
509{"div", "d,v,t", 0, (int) M_DIV_3, INSN_MACRO, I1 },
510{"div", "d,v,I", 0, (int) M_DIV_3I, INSN_MACRO, I1 },
252b5132
RH
511{"div.d", "D,V,T", 0x46200003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
512{"div.s", "D,V,T", 0x46000003, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
2228315b 513{"div.ps", "D,V,T", 0x46c00003, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, SB1 },
252b5132 514/* For divu, see the comments about div. */
08fe7a7e
NC
515{"divu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, I1 },
516{"divu", "z,t", 0x0000001b, 0xffe0ffff, RD_s|RD_t|WR_HILO, I1 },
e70f2590
NC
517{"divu", "d,v,t", 0, (int) M_DIVU_3, INSN_MACRO, I1 },
518{"divu", "d,v,I", 0, (int) M_DIVU_3I, INSN_MACRO, I1 },
e70f2590 519{"dla", "t,A(b)", 0, (int) M_DLA_AB, INSN_MACRO, I3 },
1abe91b1 520{"dlca", "t,A(b)", 0, (int) M_DLCA_AB, INSN_MACRO, I3 },
e70f2590
NC
521{"dli", "t,j", 0x24000000, 0xffe00000, WR_t, I3 }, /* addiu */
522{"dli", "t,i", 0x34000000, 0xffe00000, WR_t, I3 }, /* ori */
523{"dli", "t,I", 0, (int) M_DLI, INSN_MACRO, I3 },
9752cf1b
RS
524{"dmacc", "d,s,t", 0x00000029, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
525{"dmacchi", "d,s,t", 0x00000229, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
526{"dmacchis", "d,s,t", 0x00000629, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
527{"dmacchiu", "d,s,t", 0x00000269, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
528{"dmacchius", "d,s,t", 0x00000669, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
529{"dmaccs", "d,s,t", 0x00000429, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
530{"dmaccu", "d,s,t", 0x00000069, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
531{"dmaccus", "d,s,t", 0x00000469, 0xfc0007ff, RD_s|RD_t|WR_LO|WR_d, N412 },
532{"dmadd16", "s,t", 0x00000029, 0xfc00ffff, RD_s|RD_t|MOD_LO, N411 },
e70f2590 533{"dmfc0", "t,G", 0x40200000, 0xffe007ff, LCD|WR_t|RD_C0, I3 },
bbcc0807 534{"dmfc0", "t,+D", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, I64 },
0808b8a9 535{"dmfc0", "t,G,H", 0x40200000, 0xffe007f8, LCD|WR_t|RD_C0, I64 },
252b5132 536{"dmtc0", "t,G", 0x40a00000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, I3 },
bbcc0807 537{"dmtc0", "t,+D", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, I64 },
0808b8a9 538{"dmtc0", "t,G,H", 0x40a00000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, I64 },
252b5132 539{"dmfc1", "t,S", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I3 },
0808b8a9 540{"dmfc1", "t,G", 0x44200000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I3 },
252b5132 541{"dmtc1", "t,S", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I3 },
0808b8a9
NC
542{"dmtc1", "t,G", 0x44a00000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I3 },
543{"dmfc2", "t,G", 0x48200000, 0xffe007ff, LCD|WR_t|RD_C2, I3 },
544{"dmfc2", "t,G,H", 0x48200000, 0xffe007f8, LCD|WR_t|RD_C2, I64 },
545{"dmtc2", "t,G", 0x48a00000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, I3 },
546{"dmtc2", "t,G,H", 0x48a00000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, I64 },
547{"dmfc3", "t,G", 0x4c200000, 0xffe007ff, LCD|WR_t|RD_C3, I3 },
548{"dmfc3", "t,G,H", 0x4c200000, 0xffe007f8, LCD|WR_t|RD_C3, I64 },
549{"dmtc3", "t,G", 0x4ca00000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, I3 },
550{"dmtc3", "t,G,H", 0x4ca00000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC, I64 },
e70f2590
NC
551{"dmul", "d,v,t", 0, (int) M_DMUL, INSN_MACRO, I3 },
552{"dmul", "d,v,I", 0, (int) M_DMUL_I, INSN_MACRO, I3 },
553{"dmulo", "d,v,t", 0, (int) M_DMULO, INSN_MACRO, I3 },
554{"dmulo", "d,v,I", 0, (int) M_DMULO_I, INSN_MACRO, I3 },
555{"dmulou", "d,v,t", 0, (int) M_DMULOU, INSN_MACRO, I3 },
556{"dmulou", "d,v,I", 0, (int) M_DMULOU_I, INSN_MACRO, I3 },
08fe7a7e
NC
557{"dmult", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
558{"dmultu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
e70f2590
NC
559{"dneg", "d,w", 0x0000002e, 0xffe007ff, WR_d|RD_t, I3 }, /* dsub 0 */
560{"dnegu", "d,w", 0x0000002f, 0xffe007ff, WR_d|RD_t, I3 }, /* dsubu 0*/
08fe7a7e 561{"drem", "z,s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
e70f2590
NC
562{"drem", "d,v,t", 3, (int) M_DREM_3, INSN_MACRO, I3 },
563{"drem", "d,v,I", 3, (int) M_DREM_3I, INSN_MACRO, I3 },
08fe7a7e 564{"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, I3 },
e70f2590
NC
565{"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO, I3 },
566{"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO, I3 },
9752cf1b 567{"dret", "", 0x7000003e, 0xffffffff, 0, N5 },
771c7ce4
TS
568{"drol", "d,v,t", 0, (int) M_DROL, INSN_MACRO, I3 },
569{"drol", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, I3 },
570{"dror", "d,v,t", 0, (int) M_DROR, INSN_MACRO, I3 },
571{"dror", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, I3 },
5f74bc13
CD
572{"dror", "d,w,<", 0x0020003a, 0xffe0003f, WR_d|RD_t, N5|I65 },
573{"drorv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, N5|I65 },
574{"dror32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, N5|I65 },
575{"drotl", "d,v,t", 0, (int) M_DROL, INSN_MACRO, I65 },
576{"drotl", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, I65 },
577{"drotr", "d,v,t", 0, (int) M_DROR, INSN_MACRO, I65 },
578{"drotr", "d,v,I", 0, (int) M_DROR_I, INSN_MACRO, I65 },
579{"drotrv", "d,t,s", 0x00000056, 0xfc0007ff, RD_t|RD_s|WR_d, I65 },
580{"drotr32", "d,w,<", 0x0020003e, 0xffe0003f, WR_d|RD_t, I65 },
581{"dsbh", "d,w", 0x7c0000a4, 0xffe007ff, WR_d|RD_t, I65 },
582{"dshd", "d,w", 0x7c000164, 0xffe007ff, WR_d|RD_t, I65 },
e70f2590
NC
583{"dsllv", "d,t,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
584{"dsll32", "d,w,<", 0x0000003c, 0xffe0003f, WR_d|RD_t, I3 },
585{"dsll", "d,w,s", 0x00000014, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsllv */
586{"dsll", "d,w,>", 0x0000003c, 0xffe0003f, WR_d|RD_t, I3 }, /* dsll32 */
587{"dsll", "d,w,<", 0x00000038, 0xffe0003f, WR_d|RD_t, I3 },
588{"dsrav", "d,t,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
589{"dsra32", "d,w,<", 0x0000003f, 0xffe0003f, WR_d|RD_t, I3 },
590{"dsra", "d,w,s", 0x00000017, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsrav */
591{"dsra", "d,w,>", 0x0000003f, 0xffe0003f, WR_d|RD_t, I3 }, /* dsra32 */
592{"dsra", "d,w,<", 0x0000003b, 0xffe0003f, WR_d|RD_t, I3 },
593{"dsrlv", "d,t,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, I3 },
594{"dsrl32", "d,w,<", 0x0000003e, 0xffe0003f, WR_d|RD_t, I3 },
595{"dsrl", "d,w,s", 0x00000016, 0xfc0007ff, WR_d|RD_t|RD_s, I3 }, /* dsrlv */
596{"dsrl", "d,w,>", 0x0000003e, 0xffe0003f, WR_d|RD_t, I3 }, /* dsrl32 */
597{"dsrl", "d,w,<", 0x0000003a, 0xffe0003f, WR_d|RD_t, I3 },
598{"dsub", "d,v,t", 0x0000002e, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
599{"dsub", "d,v,I", 0, (int) M_DSUB_I, INSN_MACRO, I3 },
600{"dsubu", "d,v,t", 0x0000002f, 0xfc0007ff, WR_d|RD_s|RD_t, I3 },
601{"dsubu", "d,v,I", 0, (int) M_DSUBU_I, INSN_MACRO, I3 },
af7ee8bf
CD
602{"ei", "", 0x41606020, 0xffffffff, WR_t|WR_C0, I33 },
603{"ei", "t", 0x41606020, 0xffe0ffff, WR_t|WR_C0, I33 },
15305553 604{"eret", "", 0x42000018, 0xffffffff, 0, I3|I32 },
af7ee8bf 605{"ext", "t,r,+A,+C", 0x7c000000, 0xfc00003f, WR_t|RD_s, I33 },
e70f2590
NC
606{"floor.l.d", "D,S", 0x4620000b, 0xffff003f, WR_D|RD_S|FP_D, I3 },
607{"floor.l.s", "D,S", 0x4600000b, 0xffff003f, WR_D|RD_S|FP_S, I3 },
608{"floor.w.d", "D,S", 0x4620000f, 0xffff003f, WR_D|RD_S|FP_D, I2 },
609{"floor.w.s", "D,S", 0x4600000f, 0xffff003f, WR_D|RD_S|FP_S, I2 },
610{"flushi", "", 0xbc010000, 0xffffffff, 0, L1 },
611{"flushd", "", 0xbc020000, 0xffffffff, 0, L1 },
612{"flushid", "", 0xbc030000, 0xffffffff, 0, L1 },
613{"hibernate","", 0x42000023, 0xffffffff, 0, V1 },
af7ee8bf 614{"ins", "t,r,+A,+B", 0x7c000004, 0xfc00003f, WR_t|RD_s, I33 },
e70f2590 615{"jr", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, I1 },
af7ee8bf 616{"jr.hb", "s", 0x00000408, 0xfc1fffff, UBD|RD_s, I33 },
e70f2590 617{"j", "s", 0x00000008, 0xfc1fffff, UBD|RD_s, I1 }, /* jr */
252b5132
RH
618/* SVR4 PIC code requires special handling for j, so it must be a
619 macro. */
e70f2590 620{"j", "a", 0, (int) M_J_A, INSN_MACRO, I1 },
252b5132
RH
621/* This form of j is used by the disassembler and internally by the
622 assembler, but will never match user input (because the line above
623 will match first). */
e70f2590
NC
624{"j", "a", 0x08000000, 0xfc000000, UBD, I1 },
625{"jalr", "s", 0x0000f809, 0xfc1fffff, UBD|RD_s|WR_d, I1 },
626{"jalr", "d,s", 0x00000009, 0xfc1f07ff, UBD|RD_s|WR_d, I1 },
af7ee8bf
CD
627{"jalr.hb", "s", 0x0000fc09, 0xfc1fffff, UBD|RD_s|WR_d, I33 },
628{"jalr.hb", "d,s", 0x00000409, 0xfc1f07ff, UBD|RD_s|WR_d, I33 },
252b5132
RH
629/* SVR4 PIC code requires special handling for jal, so it must be a
630 macro. */
e70f2590
NC
631{"jal", "d,s", 0, (int) M_JAL_2, INSN_MACRO, I1 },
632{"jal", "s", 0, (int) M_JAL_1, INSN_MACRO, I1 },
633{"jal", "a", 0, (int) M_JAL_A, INSN_MACRO, I1 },
252b5132
RH
634/* This form of jal is used by the disassembler and internally by the
635 assembler, but will never match user input (because the line above
636 will match first). */
e70f2590 637{"jal", "a", 0x0c000000, 0xfc000000, UBD|WR_31, I1 },
aec421e0 638{"jalx", "a", 0x74000000, 0xfc000000, UBD|WR_31, I16 },
e70f2590
NC
639{"la", "t,A(b)", 0, (int) M_LA_AB, INSN_MACRO, I1 },
640{"lb", "t,o(b)", 0x80000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
641{"lb", "t,A(b)", 0, (int) M_LB_AB, INSN_MACRO, I1 },
642{"lbu", "t,o(b)", 0x90000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
643{"lbu", "t,A(b)", 0, (int) M_LBU_AB, INSN_MACRO, I1 },
1abe91b1 644{"lca", "t,A(b)", 0, (int) M_LCA_AB, INSN_MACRO, I1 },
e70f2590
NC
645{"ld", "t,o(b)", 0xdc000000, 0xfc000000, WR_t|RD_b, I3 },
646{"ld", "t,o(b)", 0, (int) M_LD_OB, INSN_MACRO, I1 },
647{"ld", "t,A(b)", 0, (int) M_LD_AB, INSN_MACRO, I1 },
252b5132
RH
648{"ldc1", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 },
649{"ldc1", "E,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 },
e70f2590
NC
650{"ldc1", "T,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, I2 },
651{"ldc1", "E,A(b)", 0, (int) M_LDC1_AB, INSN_MACRO, I2 },
252b5132 652{"l.d", "T,o(b)", 0xd4000000, 0xfc000000, CLD|RD_b|WR_T|FP_D, I2 }, /* ldc1 */
e70f2590
NC
653{"l.d", "T,o(b)", 0, (int) M_L_DOB, INSN_MACRO, I1 },
654{"l.d", "T,A(b)", 0, (int) M_L_DAB, INSN_MACRO, I1 },
655{"ldc2", "E,o(b)", 0xd8000000, 0xfc000000, CLD|RD_b|WR_CC, I2 },
656{"ldc2", "E,A(b)", 0, (int) M_LDC2_AB, INSN_MACRO, I2 },
657{"ldc3", "E,o(b)", 0xdc000000, 0xfc000000, CLD|RD_b|WR_CC, I2 },
658{"ldc3", "E,A(b)", 0, (int) M_LDC3_AB, INSN_MACRO, I2 },
659{"ldl", "t,o(b)", 0x68000000, 0xfc000000, LDD|WR_t|RD_b, I3 },
660{"ldl", "t,A(b)", 0, (int) M_LDL_AB, INSN_MACRO, I3 },
661{"ldr", "t,o(b)", 0x6c000000, 0xfc000000, LDD|WR_t|RD_b, I3 },
662{"ldr", "t,A(b)", 0, (int) M_LDR_AB, INSN_MACRO, I3 },
252b5132 663{"ldxc1", "D,t(b)", 0x4c000001, 0xfc00f83f, LDD|WR_D|RD_t|RD_b, I4 },
e70f2590
NC
664{"lh", "t,o(b)", 0x84000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
665{"lh", "t,A(b)", 0, (int) M_LH_AB, INSN_MACRO, I1 },
666{"lhu", "t,o(b)", 0x94000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
667{"lhu", "t,A(b)", 0, (int) M_LHU_AB, INSN_MACRO, I1 },
252b5132 668/* li is at the start of the table. */
e70f2590
NC
669{"li.d", "t,F", 0, (int) M_LI_D, INSN_MACRO, I1 },
670{"li.d", "T,L", 0, (int) M_LI_DD, INSN_MACRO, I1 },
671{"li.s", "t,f", 0, (int) M_LI_S, INSN_MACRO, I1 },
672{"li.s", "T,l", 0, (int) M_LI_SS, INSN_MACRO, I1 },
673{"ll", "t,o(b)", 0xc0000000, 0xfc000000, LDD|RD_b|WR_t, I2 },
674{"ll", "t,A(b)", 0, (int) M_LL_AB, INSN_MACRO, I2 },
675{"lld", "t,o(b)", 0xd0000000, 0xfc000000, LDD|RD_b|WR_t, I3 },
676{"lld", "t,A(b)", 0, (int) M_LLD_AB, INSN_MACRO, I3 },
677{"lui", "t,u", 0x3c000000, 0xffe00000, WR_t, I1 },
9752cf1b 678{"luxc1", "D,t(b)", 0x4c000005, 0xfc00f83f, LDD|WR_D|RD_t|RD_b, I5|N55 },
e70f2590
NC
679{"lw", "t,o(b)", 0x8c000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
680{"lw", "t,A(b)", 0, (int) M_LW_AB, INSN_MACRO, I1 },
681{"lwc0", "E,o(b)", 0xc0000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
682{"lwc0", "E,A(b)", 0, (int) M_LWC0_AB, INSN_MACRO, I1 },
252b5132
RH
683{"lwc1", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 },
684{"lwc1", "E,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 },
e70f2590
NC
685{"lwc1", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, I1 },
686{"lwc1", "E,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, I1 },
252b5132 687{"l.s", "T,o(b)", 0xc4000000, 0xfc000000, CLD|RD_b|WR_T|FP_S, I1 }, /* lwc1 */
e70f2590
NC
688{"l.s", "T,A(b)", 0, (int) M_LWC1_AB, INSN_MACRO, I1 },
689{"lwc2", "E,o(b)", 0xc8000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
690{"lwc2", "E,A(b)", 0, (int) M_LWC2_AB, INSN_MACRO, I1 },
691{"lwc3", "E,o(b)", 0xcc000000, 0xfc000000, CLD|RD_b|WR_CC, I1 },
692{"lwc3", "E,A(b)", 0, (int) M_LWC3_AB, INSN_MACRO, I1 },
693{"lwl", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
694{"lwl", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, I1 },
695{"lcache", "t,o(b)", 0x88000000, 0xfc000000, LDD|RD_b|WR_t, I2 }, /* same */
696{"lcache", "t,A(b)", 0, (int) M_LWL_AB, INSN_MACRO, I2 }, /* as lwl */
697{"lwr", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, I1 },
698{"lwr", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, I1 },
699{"flush", "t,o(b)", 0x98000000, 0xfc000000, LDD|RD_b|WR_t, I2 }, /* same */
700{"flush", "t,A(b)", 0, (int) M_LWR_AB, INSN_MACRO, I2 }, /* as lwr */
701{"lwu", "t,o(b)", 0x9c000000, 0xfc000000, LDD|RD_b|WR_t, I3 },
702{"lwu", "t,A(b)", 0, (int) M_LWU_AB, INSN_MACRO, I3 },
252b5132 703{"lwxc1", "D,t(b)", 0x4c000000, 0xfc00f83f, LDD|WR_D|RD_t|RD_b, I4 },
9752cf1b
RS
704{"macc", "d,s,t", 0x00000028, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
705{"macc", "d,s,t", 0x00000158, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
706{"maccs", "d,s,t", 0x00000428, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
707{"macchi", "d,s,t", 0x00000228, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
708{"macchi", "d,s,t", 0x00000358, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
709{"macchis", "d,s,t", 0x00000628, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
710{"macchiu", "d,s,t", 0x00000268, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
711{"macchiu", "d,s,t", 0x00000359, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
712{"macchius","d,s,t", 0x00000668, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
713{"maccu", "d,s,t", 0x00000068, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
714{"maccu", "d,s,t", 0x00000159, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
715{"maccus", "d,s,t", 0x00000468, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N412 },
08fe7a7e
NC
716{"mad", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, P3 },
717{"madu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, P3 },
15305553
NC
718{"madd.d", "D,R,S,T", 0x4c000021, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
719{"madd.s", "D,R,S,T", 0x4c000020, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
720{"madd.ps", "D,R,S,T", 0x4c000026, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I5 },
721{"madd", "s,t", 0x0000001c, 0xfc00ffff, RD_s|RD_t|WR_HILO, L1 },
9752cf1b 722{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|MOD_HILO, I32|N55},
15305553
NC
723{"madd", "s,t", 0x70000000, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, G1 },
724{"madd", "d,s,t", 0x70000000, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1 },
725{"maddu", "s,t", 0x0000001d, 0xfc00ffff, RD_s|RD_t|WR_HILO, L1 },
9752cf1b 726{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, I32|N55},
15305553
NC
727{"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, G1 },
728{"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1 },
9752cf1b 729{"madd16", "s,t", 0x00000028, 0xfc00ffff, RD_s|RD_t|MOD_HILO, N411 },
107c6e1a 730{"max.ob", "X,Y,Q", 0x78000007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
731{"max.ob", "D,S,T", 0x4ac00007, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
732{"max.ob", "D,S,T[e]", 0x48000007, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
733{"max.ob", "D,S,k", 0x4bc00007, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 734{"max.qh", "X,Y,Q", 0x78200007, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
9752cf1b
RS
735{"mfpc", "t,P", 0x4000c801, 0xffe0ffc1, LCD|WR_t|RD_C0, M1|N5 },
736{"mfps", "t,P", 0x4000c800, 0xffe0ffc1, LCD|WR_t|RD_C0, M1|N5 },
e70f2590 737{"mfc0", "t,G", 0x40000000, 0xffe007ff, LCD|WR_t|RD_C0, I1 },
bbcc0807 738{"mfc0", "t,+D", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, I32 },
e70f2590
NC
739{"mfc0", "t,G,H", 0x40000000, 0xffe007f8, LCD|WR_t|RD_C0, I32 },
740{"mfc1", "t,S", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
741{"mfc1", "t,G", 0x44000000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I1 },
af7ee8bf
CD
742{"mfhc1", "t,S", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I33 },
743{"mfhc1", "t,G", 0x44600000, 0xffe007ff, LCD|WR_t|RD_S|FP_S, I33 },
e70f2590
NC
744{"mfc2", "t,G", 0x48000000, 0xffe007ff, LCD|WR_t|RD_C2, I1 },
745{"mfc2", "t,G,H", 0x48000000, 0xffe007f8, LCD|WR_t|RD_C2, I32 },
af7ee8bf 746{"mfhc2", "t,i", 0x48600000, 0xffe00000, LCD|WR_t|RD_C2, I33 },
e70f2590
NC
747{"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, I1 },
748{"mfc3", "t,G,H", 0x4c000000, 0xffe007f8, LCD|WR_t|RD_C3, I32 },
9752cf1b 749{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, N5 },
e70f2590
NC
750{"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, I1 },
751{"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO, I1 },
107c6e1a 752{"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
753{"min.ob", "D,S,T", 0x4ac00006, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
754{"min.ob", "D,S,T[e]", 0x48000006, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
755{"min.ob", "D,S,k", 0x4bc00006, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 756{"min.qh", "X,Y,Q", 0x78200006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
e70f2590
NC
757{"mov.d", "D,S", 0x46200006, 0xffff003f, WR_D|RD_S|FP_D, I1 },
758{"mov.s", "D,S", 0x46000006, 0xffff003f, WR_D|RD_S|FP_S, I1 },
759{"mov.ps", "D,S", 0x46c00006, 0xffff003f, WR_D|RD_S|FP_D, I5 },
15305553
NC
760{"movf", "d,s,N", 0x00000001, 0xfc0307ff, WR_d|RD_s|RD_CC|FP_D|FP_S, I4|I32},
761{"movf.d", "D,S,N", 0x46200011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I4|I32 },
107c6e1a
CD
762{"movf.l", "D,S,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, MX|SB1 },
763{"movf.l", "X,Y,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, MX|SB1 },
15305553 764{"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, I4|I32 },
5fce5ddf 765{"movf.ps", "D,S,N", 0x46c00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I5 },
15305553 766{"movn", "d,v,t", 0x0000000b, 0xfc0007ff, WR_d|RD_s|RD_t, I4|I32 },
e70f2590 767{"ffc", "d,v", 0x0000000b, 0xfc1f07ff, WR_d|RD_s, L1 },
15305553 768{"movn.d", "D,S,t", 0x46200013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I4|I32 },
107c6e1a
CD
769{"movn.l", "D,S,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, MX|SB1 },
770{"movn.l", "X,Y,t", 0x46a00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, MX|SB1 },
15305553 771{"movn.s", "D,S,t", 0x46000013, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, I4|I32 },
aa084229 772{"movn.ps", "D,S,t", 0x46c00013, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I5 },
15305553
NC
773{"movt", "d,s,N", 0x00010001, 0xfc0307ff, WR_d|RD_s|RD_CC, I4|I32 },
774{"movt.d", "D,S,N", 0x46210011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I4|I32 },
107c6e1a
CD
775{"movt.l", "D,S,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, MX|SB1 },
776{"movt.l", "X,Y,N", 0x46a10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, MX|SB1 },
15305553 777{"movt.s", "D,S,N", 0x46010011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, I4|I32 },
e70f2590 778{"movt.ps", "D,S,N", 0x46c10011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, I5 },
15305553 779{"movz", "d,v,t", 0x0000000a, 0xfc0007ff, WR_d|RD_s|RD_t, I4|I32 },
e70f2590 780{"ffs", "d,v", 0x0000000a, 0xfc1f07ff, WR_d|RD_s, L1 },
15305553 781{"movz.d", "D,S,t", 0x46200012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I4|I32 },
107c6e1a
CD
782{"movz.l", "D,S,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, MX|SB1 },
783{"movz.l", "X,Y,t", 0x46a00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, MX|SB1 },
15305553 784{"movz.s", "D,S,t", 0x46000012, 0xffe0003f, WR_D|RD_S|RD_t|FP_S, I4|I32 },
aa084229 785{"movz.ps", "D,S,t", 0x46c00012, 0xffe0003f, WR_D|RD_S|RD_t|FP_D, I5 },
9752cf1b
RS
786{"msac", "d,s,t", 0x000001d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
787{"msacu", "d,s,t", 0x000001d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
788{"msachi", "d,s,t", 0x000003d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
789{"msachiu", "d,s,t", 0x000003d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
252b5132 790/* move is at the top of the table. */
deec1734 791{"msgn.qh", "X,Y,Q", 0x78200000, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
15305553
NC
792{"msub.d", "D,R,S,T", 0x4c000029, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
793{"msub.s", "D,R,S,T", 0x4c000028, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
794{"msub.ps", "D,R,S,T", 0x4c00002e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I5 },
08fe7a7e 795{"msub", "s,t", 0x0000001e, 0xfc00ffff, RD_s|RD_t|WR_HILO, L1 },
9752cf1b 796{"msub", "s,t", 0x70000004, 0xfc00ffff, RD_s|RD_t|MOD_HILO, I32|N55 },
08fe7a7e 797{"msubu", "s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, L1 },
9752cf1b
RS
798{"msubu", "s,t", 0x70000005, 0xfc00ffff, RD_s|RD_t|MOD_HILO, I32|N55 },
799{"mtpc", "t,P", 0x4080c801, 0xffe0ffc1, COD|RD_t|WR_C0, M1|N5 },
800{"mtps", "t,P", 0x4080c800, 0xffe0ffc1, COD|RD_t|WR_C0, M1|N5 },
252b5132 801{"mtc0", "t,G", 0x40800000, 0xffe007ff, COD|RD_t|WR_C0|WR_CC, I1 },
bbcc0807 802{"mtc0", "t,+D", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, I32 },
e7af610e 803{"mtc0", "t,G,H", 0x40800000, 0xffe007f8, COD|RD_t|WR_C0|WR_CC, I32 },
252b5132
RH
804{"mtc1", "t,S", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I1 },
805{"mtc1", "t,G", 0x44800000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I1 },
af7ee8bf
CD
806{"mthc1", "t,S", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I33 },
807{"mthc1", "t,G", 0x44e00000, 0xffe007ff, COD|RD_t|WR_S|FP_S, I33 },
252b5132 808{"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, I1 },
e7af610e 809{"mtc2", "t,G,H", 0x48800000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, I32 },
af7ee8bf 810{"mthc2", "t,i", 0x48e00000, 0xffe00000, COD|RD_t|WR_C2|WR_CC, I33 },
252b5132 811{"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, I1 },
e7af610e 812{"mtc3", "t,G,H", 0x4c800000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC, I32 },
9752cf1b 813{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, N5 },
e70f2590
NC
814{"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI, I1 },
815{"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO, I1 },
252b5132
RH
816{"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
817{"mul.s", "D,V,T", 0x46000002, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
107c6e1a 818{"mul.ob", "X,Y,Q", 0x78000030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
819{"mul.ob", "D,S,T", 0x4ac00030, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
820{"mul.ob", "D,S,T[e]", 0x48000030, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
821{"mul.ob", "D,S,k", 0x4bc00030, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
5fce5ddf 822{"mul.ps", "D,V,T", 0x46c00002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
deec1734 823{"mul.qh", "X,Y,Q", 0x78200030, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
9752cf1b
RS
824{"mul", "d,v,t", 0x70000002, 0xfc0007ff, WR_d|RD_s|RD_t|WR_HILO, I32|P3|N55},
825{"mul", "d,s,t", 0x00000058, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N54 },
e70f2590
NC
826{"mul", "d,v,t", 0, (int) M_MUL, INSN_MACRO, I1 },
827{"mul", "d,v,I", 0, (int) M_MUL_I, INSN_MACRO, I1 },
107c6e1a 828{"mula.ob", "Y,Q", 0x78000033, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
829{"mula.ob", "S,T", 0x4ac00033, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
830{"mula.ob", "S,T[e]", 0x48000033, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
831{"mula.ob", "S,k", 0x4bc00033, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
deec1734 832{"mula.qh", "Y,Q", 0x78200033, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
9752cf1b
RS
833{"mulhi", "d,s,t", 0x00000258, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
834{"mulhiu", "d,s,t", 0x00000259, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
107c6e1a 835{"mull.ob", "Y,Q", 0x78000433, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
836{"mull.ob", "S,T", 0x4ac00433, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
837{"mull.ob", "S,T[e]", 0x48000433, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
838{"mull.ob", "S,k", 0x4bc00433, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
deec1734 839{"mull.qh", "Y,Q", 0x78200433, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
e70f2590
NC
840{"mulo", "d,v,t", 0, (int) M_MULO, INSN_MACRO, I1 },
841{"mulo", "d,v,I", 0, (int) M_MULO_I, INSN_MACRO, I1 },
842{"mulou", "d,v,t", 0, (int) M_MULOU, INSN_MACRO, I1 },
843{"mulou", "d,v,I", 0, (int) M_MULOU_I, INSN_MACRO, I1 },
1f25f5d3 844{"mulr.ps", "D,S,T", 0x46c0001a, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, M3D },
9752cf1b
RS
845{"muls", "d,s,t", 0x000000d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
846{"mulsu", "d,s,t", 0x000000d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
847{"mulshi", "d,s,t", 0x000002d8, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
848{"mulshiu", "d,s,t", 0x000002d9, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
107c6e1a 849{"muls.ob", "Y,Q", 0x78000032, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
850{"muls.ob", "S,T", 0x4ac00032, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
851{"muls.ob", "S,T[e]", 0x48000032, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
852{"muls.ob", "S,k", 0x4bc00032, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
deec1734 853{"muls.qh", "Y,Q", 0x78200032, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
107c6e1a 854{"mulsl.ob", "Y,Q", 0x78000432, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
855{"mulsl.ob", "S,T", 0x4ac00432, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
856{"mulsl.ob", "S,T[e]", 0x48000432, 0xfe2007ff, WR_CC|RD_S|RD_T, N54 },
857{"mulsl.ob", "S,k", 0x4bc00432, 0xffe007ff, WR_CC|RD_S|RD_T, N54 },
deec1734 858{"mulsl.qh", "Y,Q", 0x78200432, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
08fe7a7e
NC
859{"mult", "s,t", 0x00000018, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1 },
860{"mult", "d,s,t", 0x00000018, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1 },
861{"multu", "s,t", 0x00000019, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, I1 },
862{"multu", "d,s,t", 0x00000019, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, G1 },
9752cf1b 863{"mulu", "d,s,t", 0x00000059, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d, N5 },
e70f2590
NC
864{"neg", "d,w", 0x00000022, 0xffe007ff, WR_d|RD_t, I1 }, /* sub 0 */
865{"negu", "d,w", 0x00000023, 0xffe007ff, WR_d|RD_t, I1 }, /* subu 0 */
866{"neg.d", "D,V", 0x46200007, 0xffff003f, WR_D|RD_S|FP_D, I1 },
867{"neg.s", "D,V", 0x46000007, 0xffff003f, WR_D|RD_S|FP_S, I1 },
868{"neg.ps", "D,V", 0x46c00007, 0xffff003f, WR_D|RD_S|FP_D, I5 },
15305553
NC
869{"nmadd.d", "D,R,S,T", 0x4c000031, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
870{"nmadd.s", "D,R,S,T", 0x4c000030, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
871{"nmadd.ps","D,R,S,T", 0x4c000036, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I5 },
872{"nmsub.d", "D,R,S,T", 0x4c000039, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I4 },
873{"nmsub.s", "D,R,S,T", 0x4c000038, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_S, I4 },
874{"nmsub.ps","D,R,S,T", 0x4c00003e, 0xfc00003f, RD_R|RD_S|RD_T|WR_D|FP_D, I5 },
252b5132 875/* nop is at the start of the table. */
08fe7a7e
NC
876{"nor", "d,v,t", 0x00000027, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
877{"nor", "t,r,I", 0, (int) M_NOR_I, INSN_MACRO, I1 },
107c6e1a 878{"nor.ob", "X,Y,Q", 0x7800000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
879{"nor.ob", "D,S,T", 0x4ac0000f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
880{"nor.ob", "D,S,T[e]", 0x4800000f, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
881{"nor.ob", "D,S,k", 0x4bc0000f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 882{"nor.qh", "X,Y,Q", 0x7820000f, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
08fe7a7e
NC
883{"not", "d,v", 0x00000027, 0xfc1f07ff, WR_d|RD_s|RD_t, I1 },/*nor d,s,0*/
884{"or", "d,v,t", 0x00000025, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
885{"or", "t,r,I", 0, (int) M_OR_I, INSN_MACRO, I1 },
107c6e1a 886{"or.ob", "X,Y,Q", 0x7800000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
887{"or.ob", "D,S,T", 0x4ac0000e, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
888{"or.ob", "D,S,T[e]", 0x4800000e, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
889{"or.ob", "D,S,k", 0x4bc0000e, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 890{"or.qh", "X,Y,Q", 0x7820000e, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
08fe7a7e 891{"ori", "t,r,i", 0x34000000, 0xfc000000, WR_t|RD_s, I1 },
107c6e1a
CD
892{"pabsdiff.ob", "X,Y,Q",0x78000009, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, SB1 },
893{"pabsdiffc.ob", "Y,Q", 0x78000035, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, SB1 },
894{"pavg.ob", "X,Y,Q", 0x78000008, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, SB1 },
895{"pickf.ob", "X,Y,Q", 0x78000002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
896{"pickf.ob", "D,S,T", 0x4ac00002, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
897{"pickf.ob", "D,S,T[e]",0x48000002, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
898{"pickf.ob", "D,S,k", 0x4bc00002, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 899{"pickf.qh", "X,Y,Q", 0x78200002, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 900{"pickt.ob", "X,Y,Q", 0x78000003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
901{"pickt.ob", "D,S,T", 0x4ac00003, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
902{"pickt.ob", "D,S,T[e]",0x48000003, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
903{"pickt.ob", "D,S,k", 0x4bc00003, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 904{"pickt.qh", "X,Y,Q", 0x78200003, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
e70f2590
NC
905{"pll.ps", "D,V,T", 0x46c0002c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
906{"plu.ps", "D,V,T", 0x46c0002d, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
564e8ad9 907 /* pref and prefx are at the start of the table. */
e70f2590
NC
908{"pul.ps", "D,V,T", 0x46c0002e, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
909{"puu.ps", "D,V,T", 0x46c0002f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
107c6e1a 910{"rach.ob", "X", 0x7a00003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX|SB1 },
9752cf1b 911{"rach.ob", "D", 0x4a00003f, 0xfffff83f, WR_D, N54 },
deec1734 912{"rach.qh", "X", 0x7a20003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX },
107c6e1a 913{"racl.ob", "X", 0x7800003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX|SB1 },
9752cf1b 914{"racl.ob", "D", 0x4800003f, 0xfffff83f, WR_D, N54 },
deec1734 915{"racl.qh", "X", 0x7820003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX },
107c6e1a 916{"racm.ob", "X", 0x7900003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX|SB1 },
9752cf1b 917{"racm.ob", "D", 0x4900003f, 0xfffff83f, WR_D, N54 },
deec1734 918{"racm.qh", "X", 0x7920003f, 0xfffff83f, WR_D|RD_MACC|FP_D, MX },
08fe7a7e 919{"recip.d", "D,S", 0x46200015, 0xffff003f, WR_D|RD_S|FP_D, I4 },
2228315b 920{"recip.ps","D,S", 0x46c00015, 0xffff003f, WR_D|RD_S|FP_D, SB1 },
44426910 921{"recip.s", "D,S", 0x46000015, 0xffff003f, WR_D|RD_S|FP_S, I4 },
1f25f5d3 922{"recip1.d", "D,S", 0x4620001d, 0xffff003f, WR_D|RD_S|FP_D, M3D },
1f25f5d3 923{"recip1.ps", "D,S", 0x46c0001d, 0xffff003f, WR_D|RD_S|FP_S, M3D },
44426910 924{"recip1.s", "D,S", 0x4600001d, 0xffff003f, WR_D|RD_S|FP_S, M3D },
1f25f5d3 925{"recip2.d", "D,S,T", 0x4620001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, M3D },
1f25f5d3 926{"recip2.ps", "D,S,T", 0x46c0001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, M3D },
44426910 927{"recip2.s", "D,S,T", 0x4600001c, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, M3D },
08fe7a7e
NC
928{"rem", "z,s,t", 0x0000001a, 0xfc00ffff, RD_s|RD_t|WR_HILO, I1 },
929{"rem", "d,v,t", 0, (int) M_REM_3, INSN_MACRO, I1 },
930{"rem", "d,v,I", 0, (int) M_REM_3I, INSN_MACRO, I1 },
931{"remu", "z,s,t", 0x0000001b, 0xfc00ffff, RD_s|RD_t|WR_HILO, I1 },
932{"remu", "d,v,t", 0, (int) M_REMU_3, INSN_MACRO, I1 },
933{"remu", "d,v,I", 0, (int) M_REMU_3I, INSN_MACRO, I1 },
af7ee8bf
CD
934{"rdhwr", "t,K", 0x7c00003b, 0xffe007ff, WR_t, I33 },
935{"rdpgpr", "d,w", 0x41400000, 0xffe007ff, WR_d, I33 },
08fe7a7e 936{"rfe", "", 0x42000010, 0xffffffff, 0, I1|T3 },
deec1734 937{"rnas.qh", "X,Q", 0x78200025, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
107c6e1a 938{"rnau.ob", "X,Q", 0x78000021, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX|SB1 },
deec1734
CD
939{"rnau.qh", "X,Q", 0x78200021, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
940{"rnes.qh", "X,Q", 0x78200026, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
107c6e1a 941{"rneu.ob", "X,Q", 0x78000022, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX|SB1 },
deec1734 942{"rneu.qh", "X,Q", 0x78200022, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
08fe7a7e
NC
943{"rol", "d,v,t", 0, (int) M_ROL, INSN_MACRO, I1 },
944{"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, I1 },
945{"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO, I1 },
946{"ror", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, I1 },
af7ee8bf
CD
947{"ror", "d,w,<", 0x00200002, 0xffe0003f, WR_d|RD_t, N5|I33 },
948{"rorv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, N5|I33 },
949{"rotl", "d,v,t", 0, (int) M_ROL, INSN_MACRO, I33 },
950{"rotl", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, I33 },
951{"rotr", "d,v,t", 0, (int) M_ROR, INSN_MACRO, I33 },
952{"rotr", "d,v,I", 0, (int) M_ROR_I, INSN_MACRO, I33 },
953{"rotrv", "d,t,s", 0x00000046, 0xfc0007ff, RD_t|RD_s|WR_d, I33 },
08fe7a7e
NC
954{"round.l.d", "D,S", 0x46200008, 0xffff003f, WR_D|RD_S|FP_D, I3 },
955{"round.l.s", "D,S", 0x46000008, 0xffff003f, WR_D|RD_S|FP_S, I3 },
956{"round.w.d", "D,S", 0x4620000c, 0xffff003f, WR_D|RD_S|FP_D, I2 },
957{"round.w.s", "D,S", 0x4600000c, 0xffff003f, WR_D|RD_S|FP_S, I2 },
958{"rsqrt.d", "D,S", 0x46200016, 0xffff003f, WR_D|RD_S|FP_D, I4 },
2228315b 959{"rsqrt.ps","D,S", 0x46c00016, 0xffff003f, WR_D|RD_S|FP_D, SB1 },
44426910
CD
960{"rsqrt.s", "D,S", 0x46000016, 0xffff003f, WR_D|RD_S|FP_S, I4 },
961{"rsqrt1.d", "D,S", 0x4620001e, 0xffff003f, WR_D|RD_S|FP_D, M3D },
1f25f5d3 962{"rsqrt1.ps", "D,S", 0x46c0001e, 0xffff003f, WR_D|RD_S|FP_S, M3D },
44426910 963{"rsqrt1.s", "D,S", 0x4600001e, 0xffff003f, WR_D|RD_S|FP_S, M3D },
1f25f5d3 964{"rsqrt2.d", "D,S,T", 0x4620001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, M3D },
1f25f5d3 965{"rsqrt2.ps", "D,S,T", 0x46c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, M3D },
44426910 966{"rsqrt2.s", "D,S,T", 0x4600001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, M3D },
deec1734 967{"rzs.qh", "X,Q", 0x78200024, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
107c6e1a 968{"rzu.ob", "X,Q", 0x78000020, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX|SB1 },
9752cf1b 969{"rzu.ob", "D,k", 0x4bc00020, 0xffe0f83f, WR_D|RD_S|RD_T, N54 },
deec1734 970{"rzu.qh", "X,Q", 0x78200020, 0xfc20f83f, WR_D|RD_MACC|RD_T|FP_D, MX },
08fe7a7e
NC
971{"sb", "t,o(b)", 0xa0000000, 0xfc000000, SM|RD_t|RD_b, I1 },
972{"sb", "t,A(b)", 0, (int) M_SB_AB, INSN_MACRO, I1 },
252b5132 973{"sc", "t,o(b)", 0xe0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, I2 },
08fe7a7e 974{"sc", "t,A(b)", 0, (int) M_SC_AB, INSN_MACRO, I2 },
252b5132 975{"scd", "t,o(b)", 0xf0000000, 0xfc000000, SM|RD_t|WR_t|RD_b, I3 },
08fe7a7e
NC
976{"scd", "t,A(b)", 0, (int) M_SCD_AB, INSN_MACRO, I3 },
977{"sd", "t,o(b)", 0xfc000000, 0xfc000000, SM|RD_t|RD_b, I3 },
978{"sd", "t,o(b)", 0, (int) M_SD_OB, INSN_MACRO, I1 },
979{"sd", "t,A(b)", 0, (int) M_SD_AB, INSN_MACRO, I1 },
15305553
NC
980{"sdbbp", "", 0x0000000e, 0xffffffff, TRAP, G2 },
981{"sdbbp", "c", 0x0000000e, 0xfc00ffff, TRAP, G2 },
982{"sdbbp", "c,q", 0x0000000e, 0xfc00003f, TRAP, G2 },
08fe7a7e
NC
983{"sdbbp", "", 0x7000003f, 0xffffffff, TRAP, I32 },
984{"sdbbp", "B", 0x7000003f, 0xfc00003f, TRAP, I32 },
252b5132
RH
985{"sdc1", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, I2 },
986{"sdc1", "E,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, I2 },
08fe7a7e
NC
987{"sdc1", "T,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, I2 },
988{"sdc1", "E,A(b)", 0, (int) M_SDC1_AB, INSN_MACRO, I2 },
989{"sdc2", "E,o(b)", 0xf8000000, 0xfc000000, SM|RD_C2|RD_b, I2 },
990{"sdc2", "E,A(b)", 0, (int) M_SDC2_AB, INSN_MACRO, I2 },
991{"sdc3", "E,o(b)", 0xfc000000, 0xfc000000, SM|RD_C3|RD_b, I2 },
992{"sdc3", "E,A(b)", 0, (int) M_SDC3_AB, INSN_MACRO, I2 },
252b5132 993{"s.d", "T,o(b)", 0xf4000000, 0xfc000000, SM|RD_T|RD_b|FP_D, I2 },
08fe7a7e
NC
994{"s.d", "T,o(b)", 0, (int) M_S_DOB, INSN_MACRO, I1 },
995{"s.d", "T,A(b)", 0, (int) M_S_DAB, INSN_MACRO, I1 },
996{"sdl", "t,o(b)", 0xb0000000, 0xfc000000, SM|RD_t|RD_b, I3 },
997{"sdl", "t,A(b)", 0, (int) M_SDL_AB, INSN_MACRO, I3 },
998{"sdr", "t,o(b)", 0xb4000000, 0xfc000000, SM|RD_t|RD_b, I3 },
999{"sdr", "t,A(b)", 0, (int) M_SDR_AB, INSN_MACRO, I3 },
252b5132 1000{"sdxc1", "S,t(b)", 0x4c000009, 0xfc0007ff, SM|RD_S|RD_t|RD_b, I4 },
3cf6d008
CD
1001{"seb", "d,w", 0x7c000420, 0xffe007ff, WR_d|RD_t, I33 },
1002{"seh", "d,w", 0x7c000620, 0xffe007ff, WR_d|RD_t, I33 },
08fe7a7e
NC
1003{"selsl", "d,v,t", 0x00000005, 0xfc0007ff, WR_d|RD_s|RD_t, L1 },
1004{"selsr", "d,v,t", 0x00000001, 0xfc0007ff, WR_d|RD_s|RD_t, L1 },
1005{"seq", "d,v,t", 0, (int) M_SEQ, INSN_MACRO, I1 },
1006{"seq", "d,v,I", 0, (int) M_SEQ_I, INSN_MACRO, I1 },
1007{"sge", "d,v,t", 0, (int) M_SGE, INSN_MACRO, I1 },
1008{"sge", "d,v,I", 0, (int) M_SGE_I, INSN_MACRO, I1 },
1009{"sgeu", "d,v,t", 0, (int) M_SGEU, INSN_MACRO, I1 },
1010{"sgeu", "d,v,I", 0, (int) M_SGEU_I, INSN_MACRO, I1 },
1011{"sgt", "d,v,t", 0, (int) M_SGT, INSN_MACRO, I1 },
1012{"sgt", "d,v,I", 0, (int) M_SGT_I, INSN_MACRO, I1 },
1013{"sgtu", "d,v,t", 0, (int) M_SGTU, INSN_MACRO, I1 },
1014{"sgtu", "d,v,I", 0, (int) M_SGTU_I, INSN_MACRO, I1 },
1015{"sh", "t,o(b)", 0xa4000000, 0xfc000000, SM|RD_t|RD_b, I1 },
1016{"sh", "t,A(b)", 0, (int) M_SH_AB, INSN_MACRO, I1 },
deec1734 1017{"shfl.bfla.qh", "X,Y,Z", 0x7a20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 1018{"shfl.mixh.ob", "X,Y,Z", 0x7980001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b 1019{"shfl.mixh.ob", "D,S,T", 0x4980001f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 1020{"shfl.mixh.qh", "X,Y,Z", 0x7820001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 1021{"shfl.mixl.ob", "X,Y,Z", 0x79c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b 1022{"shfl.mixl.ob", "D,S,T", 0x49c0001f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 1023{"shfl.mixl.qh", "X,Y,Z", 0x78a0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 1024{"shfl.pach.ob", "X,Y,Z", 0x7900001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b 1025{"shfl.pach.ob", "D,S,T", 0x4900001f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 1026{"shfl.pach.qh", "X,Y,Z", 0x7920001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
9752cf1b 1027{"shfl.pacl.ob", "D,S,T", 0x4940001f, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734
CD
1028{"shfl.repa.qh", "X,Y,Z", 0x7b20001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
1029{"shfl.repb.qh", "X,Y,Z", 0x7ba0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 1030{"shfl.upsl.ob", "X,Y,Z", 0x78c0001f, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
08fe7a7e
NC
1031{"sle", "d,v,t", 0, (int) M_SLE, INSN_MACRO, I1 },
1032{"sle", "d,v,I", 0, (int) M_SLE_I, INSN_MACRO, I1 },
1033{"sleu", "d,v,t", 0, (int) M_SLEU, INSN_MACRO, I1 },
1034{"sleu", "d,v,I", 0, (int) M_SLEU_I, INSN_MACRO, I1 },
1035{"sllv", "d,t,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
1036{"sll", "d,w,s", 0x00000004, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* sllv */
1037{"sll", "d,w,<", 0x00000000, 0xffe0003f, WR_d|RD_t, I1 },
107c6e1a 1038{"sll.ob", "X,Y,Q", 0x78000010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
1039{"sll.ob", "D,S,T[e]", 0x48000010, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
1040{"sll.ob", "D,S,k", 0x4bc00010, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 1041{"sll.qh", "X,Y,Q", 0x78200010, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
08fe7a7e
NC
1042{"slt", "d,v,t", 0x0000002a, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
1043{"slt", "d,v,I", 0, (int) M_SLT_I, INSN_MACRO, I1 },
1044{"slti", "t,r,j", 0x28000000, 0xfc000000, WR_t|RD_s, I1 },
1045{"sltiu", "t,r,j", 0x2c000000, 0xfc000000, WR_t|RD_s, I1 },
1046{"sltu", "d,v,t", 0x0000002b, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
1047{"sltu", "d,v,I", 0, (int) M_SLTU_I, INSN_MACRO, I1 },
1048{"sne", "d,v,t", 0, (int) M_SNE, INSN_MACRO, I1 },
1049{"sne", "d,v,I", 0, (int) M_SNE_I, INSN_MACRO, I1 },
1050{"sqrt.d", "D,S", 0x46200004, 0xffff003f, WR_D|RD_S|FP_D, I2 },
1051{"sqrt.s", "D,S", 0x46000004, 0xffff003f, WR_D|RD_S|FP_S, I2 },
2228315b 1052{"sqrt.ps", "D,S", 0x46c00004, 0xffff003f, WR_D|RD_S|FP_D, SB1 },
08fe7a7e
NC
1053{"srav", "d,t,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
1054{"sra", "d,w,s", 0x00000007, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* srav */
1055{"sra", "d,w,<", 0x00000003, 0xffe0003f, WR_d|RD_t, I1 },
deec1734 1056{"sra.qh", "X,Y,Q", 0x78200013, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
08fe7a7e
NC
1057{"srlv", "d,t,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, I1 },
1058{"srl", "d,w,s", 0x00000006, 0xfc0007ff, WR_d|RD_t|RD_s, I1 }, /* srlv */
1059{"srl", "d,w,<", 0x00000002, 0xffe0003f, WR_d|RD_t, I1 },
107c6e1a 1060{"srl.ob", "X,Y,Q", 0x78000012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
1061{"srl.ob", "D,S,T[e]", 0x48000012, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
1062{"srl.ob", "D,S,k", 0x4bc00012, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
deec1734 1063{"srl.qh", "X,Y,Q", 0x78200012, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
4372b673 1064/* ssnop is at the start of the table. */
08fe7a7e
NC
1065{"standby", "", 0x42000021, 0xffffffff, 0, V1 },
1066{"sub", "d,v,t", 0x00000022, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
1067{"sub", "d,v,I", 0, (int) M_SUB_I, INSN_MACRO, I1 },
564e8ad9 1068{"sub.d", "D,V,T", 0x46200001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I1 },
252b5132 1069{"sub.s", "D,V,T", 0x46000001, 0xffe0003f, WR_D|RD_S|RD_T|FP_S, I1 },
107c6e1a 1070{"sub.ob", "X,Y,Q", 0x7800000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
1071{"sub.ob", "D,S,T", 0x4ac0000a, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
1072{"sub.ob", "D,S,T[e]", 0x4800000a, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
1073{"sub.ob", "D,S,k", 0x4bc0000a, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
5fce5ddf 1074{"sub.ps", "D,V,T", 0x46c00001, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, I5 },
deec1734 1075{"sub.qh", "X,Y,Q", 0x7820000a, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
107c6e1a 1076{"suba.ob", "Y,Q", 0x78000036, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
deec1734 1077{"suba.qh", "Y,Q", 0x78200036, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
107c6e1a 1078{"subl.ob", "Y,Q", 0x78000436, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
deec1734 1079{"subl.qh", "Y,Q", 0x78200436, 0xfc2007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
08fe7a7e
NC
1080{"subu", "d,v,t", 0x00000023, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
1081{"subu", "d,v,I", 0, (int) M_SUBU_I, INSN_MACRO, I1 },
1082{"suspend", "", 0x42000022, 0xffffffff, 0, V1 },
9752cf1b 1083{"suxc1", "S,t(b)", 0x4c00000d, 0xfc0007ff, SM|RD_S|RD_t|RD_b, I5|N55 },
08fe7a7e
NC
1084{"sw", "t,o(b)", 0xac000000, 0xfc000000, SM|RD_t|RD_b, I1 },
1085{"sw", "t,A(b)", 0, (int) M_SW_AB, INSN_MACRO, I1 },
1086{"swc0", "E,o(b)", 0xe0000000, 0xfc000000, SM|RD_C0|RD_b, I1 },
1087{"swc0", "E,A(b)", 0, (int) M_SWC0_AB, INSN_MACRO, I1 },
252b5132
RH
1088{"swc1", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 },
1089{"swc1", "E,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 },
08fe7a7e
NC
1090{"swc1", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, I1 },
1091{"swc1", "E,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, I1 },
252b5132 1092{"s.s", "T,o(b)", 0xe4000000, 0xfc000000, SM|RD_T|RD_b|FP_S, I1 }, /* swc1 */
08fe7a7e
NC
1093{"s.s", "T,A(b)", 0, (int) M_SWC1_AB, INSN_MACRO, I1 },
1094{"swc2", "E,o(b)", 0xe8000000, 0xfc000000, SM|RD_C2|RD_b, I1 },
1095{"swc2", "E,A(b)", 0, (int) M_SWC2_AB, INSN_MACRO, I1 },
1096{"swc3", "E,o(b)", 0xec000000, 0xfc000000, SM|RD_C3|RD_b, I1 },
1097{"swc3", "E,A(b)", 0, (int) M_SWC3_AB, INSN_MACRO, I1 },
1098{"swl", "t,o(b)", 0xa8000000, 0xfc000000, SM|RD_t|RD_b, I1 },
1099{"swl", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, I1 },
1100{"scache", "t,o(b)", 0xa8000000, 0xfc000000, RD_t|RD_b, I2 }, /* same */
1101{"scache", "t,A(b)", 0, (int) M_SWL_AB, INSN_MACRO, I2 }, /* as swl */
1102{"swr", "t,o(b)", 0xb8000000, 0xfc000000, SM|RD_t|RD_b, I1 },
1103{"swr", "t,A(b)", 0, (int) M_SWR_AB, INSN_MACRO, I1 },
1104{"invalidate", "t,o(b)",0xb8000000, 0xfc000000, RD_t|RD_b, I2 }, /* same */
1105{"invalidate", "t,A(b)",0, (int) M_SWR_AB, INSN_MACRO, I2 }, /* as swr */
252b5132 1106{"swxc1", "S,t(b)", 0x4c000008, 0xfc0007ff, SM|RD_S|RD_t|RD_b, I4 },
08fe7a7e
NC
1107{"sync", "", 0x0000000f, 0xffffffff, INSN_SYNC, I2|G1 },
1108{"sync.p", "", 0x0000040f, 0xffffffff, INSN_SYNC, I2 },
1109{"sync.l", "", 0x0000000f, 0xffffffff, INSN_SYNC, I2 },
af7ee8bf 1110{"synci", "o(b)", 0x041f0000, 0xfc1f0000, SM|RD_b, I33 },
08fe7a7e
NC
1111{"syscall", "", 0x0000000c, 0xffffffff, TRAP, I1 },
1112{"syscall", "B", 0x0000000c, 0xfc00003f, TRAP, I1 },
1113{"teqi", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, I2 },
1114{"teq", "s,t", 0x00000034, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1115{"teq", "s,t,q", 0x00000034, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1116{"teq", "s,j", 0x040c0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* teqi */
1117{"teq", "s,I", 0, (int) M_TEQ_I, INSN_MACRO, I2 },
1118{"tgei", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, I2 },
1119{"tge", "s,t", 0x00000030, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1120{"tge", "s,t,q", 0x00000030, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1121{"tge", "s,j", 0x04080000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tgei */
1122{"tge", "s,I", 0, (int) M_TGE_I, INSN_MACRO, I2 },
1123{"tgeiu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, I2 },
1124{"tgeu", "s,t", 0x00000031, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1125{"tgeu", "s,t,q", 0x00000031, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1126{"tgeu", "s,j", 0x04090000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tgeiu */
1127{"tgeu", "s,I", 0, (int) M_TGEU_I, INSN_MACRO, I2 },
15305553
NC
1128{"tlbp", "", 0x42000008, 0xffffffff, INSN_TLB, I1 },
1129{"tlbr", "", 0x42000001, 0xffffffff, INSN_TLB, I1 },
1130{"tlbwi", "", 0x42000002, 0xffffffff, INSN_TLB, I1 },
1131{"tlbwr", "", 0x42000006, 0xffffffff, INSN_TLB, I1 },
08fe7a7e
NC
1132{"tlti", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, I2 },
1133{"tlt", "s,t", 0x00000032, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1134{"tlt", "s,t,q", 0x00000032, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1135{"tlt", "s,j", 0x040a0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tlti */
1136{"tlt", "s,I", 0, (int) M_TLT_I, INSN_MACRO, I2 },
1137{"tltiu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, I2 },
1138{"tltu", "s,t", 0x00000033, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1139{"tltu", "s,t,q", 0x00000033, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1140{"tltu", "s,j", 0x040b0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tltiu */
1141{"tltu", "s,I", 0, (int) M_TLTU_I, INSN_MACRO, I2 },
1142{"tnei", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, I2 },
1143{"tne", "s,t", 0x00000036, 0xfc00ffff, RD_s|RD_t|TRAP, I2 },
1144{"tne", "s,t,q", 0x00000036, 0xfc00003f, RD_s|RD_t|TRAP, I2 },
1145{"tne", "s,j", 0x040e0000, 0xfc1f0000, RD_s|TRAP, I2 }, /* tnei */
1146{"tne", "s,I", 0, (int) M_TNE_I, INSN_MACRO, I2 },
1147{"trunc.l.d", "D,S", 0x46200009, 0xffff003f, WR_D|RD_S|FP_D, I3 },
1148{"trunc.l.s", "D,S", 0x46000009, 0xffff003f, WR_D|RD_S|FP_S, I3 },
1149{"trunc.w.d", "D,S", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_D, I2 },
1150{"trunc.w.d", "D,S,x", 0x4620000d, 0xffff003f, WR_D|RD_S|FP_D, I2 },
1151{"trunc.w.d", "D,S,t", 0, (int) M_TRUNCWD, INSN_MACRO, I1 },
1152{"trunc.w.s", "D,S", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, I2 },
1153{"trunc.w.s", "D,S,x", 0x4600000d, 0xffff003f, WR_D|RD_S|FP_S, I2 },
1154{"trunc.w.s", "D,S,t", 0, (int) M_TRUNCWS, INSN_MACRO, I1 },
1155{"uld", "t,o(b)", 0, (int) M_ULD, INSN_MACRO, I3 },
1156{"uld", "t,A(b)", 0, (int) M_ULD_A, INSN_MACRO, I3 },
1157{"ulh", "t,o(b)", 0, (int) M_ULH, INSN_MACRO, I1 },
1158{"ulh", "t,A(b)", 0, (int) M_ULH_A, INSN_MACRO, I1 },
1159{"ulhu", "t,o(b)", 0, (int) M_ULHU, INSN_MACRO, I1 },
1160{"ulhu", "t,A(b)", 0, (int) M_ULHU_A, INSN_MACRO, I1 },
1161{"ulw", "t,o(b)", 0, (int) M_ULW, INSN_MACRO, I1 },
1162{"ulw", "t,A(b)", 0, (int) M_ULW_A, INSN_MACRO, I1 },
1163{"usd", "t,o(b)", 0, (int) M_USD, INSN_MACRO, I3 },
1164{"usd", "t,A(b)", 0, (int) M_USD_A, INSN_MACRO, I3 },
1165{"ush", "t,o(b)", 0, (int) M_USH, INSN_MACRO, I1 },
1166{"ush", "t,A(b)", 0, (int) M_USH_A, INSN_MACRO, I1 },
1167{"usw", "t,o(b)", 0, (int) M_USW, INSN_MACRO, I1 },
1168{"usw", "t,A(b)", 0, (int) M_USW_A, INSN_MACRO, I1 },
107c6e1a 1169{"wach.ob", "Y", 0x7a00003e, 0xffff07ff, WR_MACC|RD_S|FP_D, MX|SB1 },
9752cf1b 1170{"wach.ob", "S", 0x4a00003e, 0xffff07ff, RD_S, N54 },
deec1734 1171{"wach.qh", "Y", 0x7a20003e, 0xffff07ff, WR_MACC|RD_S|FP_D, MX },
107c6e1a 1172{"wacl.ob", "Y,Z", 0x7800003e, 0xffe007ff, WR_MACC|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b 1173{"wacl.ob", "S,T", 0x4800003e, 0xffe007ff, RD_S|RD_T, N54 },
deec1734 1174{"wacl.qh", "Y,Z", 0x7820003e, 0xffe007ff, WR_MACC|RD_S|RD_T|FP_D, MX },
15305553 1175{"wait", "", 0x42000020, 0xffffffff, TRAP, I3|I32 },
9752cf1b 1176{"wait", "J", 0x42000020, 0xfe00003f, TRAP, I32|N55 },
08fe7a7e
NC
1177{"waiti", "", 0x42000020, 0xffffffff, TRAP, L1 },
1178{"wb", "o(b)", 0xbc040000, 0xfc1f0000, SM|RD_b, L1 },
af7ee8bf 1179{"wrpgpr", "d,w", 0x41c00000, 0xffe007ff, RD_t, I33 },
3cf6d008 1180{"wsbh", "d,w", 0x7c0000a0, 0xffe007ff, WR_d|RD_t, I33 },
154bce22
CD
1181{"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t, I1 },
1182{"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO, I1 },
1183{"xor.ob", "X,Y,Q", 0x7800000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX|SB1 },
9752cf1b
RS
1184{"xor.ob", "D,S,T", 0x4ac0000d, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
1185{"xor.ob", "D,S,T[e]", 0x4800000d, 0xfe20003f, WR_D|RD_S|RD_T, N54 },
1186{"xor.ob", "D,S,k", 0x4bc0000d, 0xffe0003f, WR_D|RD_S|RD_T, N54 },
154bce22
CD
1187{"xor.qh", "X,Y,Q", 0x7820000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, MX },
1188{"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s, I1 },
deec1734 1189
252b5132
RH
1190/* No hazard protection on coprocessor instructions--they shouldn't
1191 change the state of the processor and if they do it's up to the
1192 user to put in nops as necessary. These are at the end so that the
99c14723 1193 disassembler recognizes more specific versions first. */
08fe7a7e
NC
1194{"c0", "C", 0x42000000, 0xfe000000, 0, I1 },
1195{"c1", "C", 0x46000000, 0xfe000000, 0, I1 },
1196{"c2", "C", 0x4a000000, 0xfe000000, 0, I1 },
1197{"c3", "C", 0x4e000000, 0xfe000000, 0, I1 },
1198{"cop0", "C", 0, (int) M_COP0, INSN_MACRO, I1 },
1199{"cop1", "C", 0, (int) M_COP1, INSN_MACRO, I1 },
1200{"cop2", "C", 0, (int) M_COP2, INSN_MACRO, I1 },
1201{"cop3", "C", 0, (int) M_COP3, INSN_MACRO, I1 },
252b5132
RH
1202
1203 /* Conflicts with the 4650's "mul" instruction. Nobody's using the
1204 4010 any more, so move this insn out of the way. If the object
1205 format gave us more info, we could do this right. */
08fe7a7e 1206{"addciu", "t,r,j", 0x70000000, 0xfc000000, WR_t|RD_s, L1 },
252b5132
RH
1207};
1208
1209#define MIPS_NUM_OPCODES \
1210 ((sizeof mips_builtin_opcodes) / (sizeof (mips_builtin_opcodes[0])))
1211const int bfd_mips_num_builtin_opcodes = MIPS_NUM_OPCODES;
1212
564e8ad9 1213/* const removed from the following to allow for dynamic extensions to the
252b5132
RH
1214 * built-in instruction set. */
1215struct mips_opcode *mips_opcodes =
1216 (struct mips_opcode *) mips_builtin_opcodes;
1217int bfd_mips_num_opcodes = MIPS_NUM_OPCODES;
1218#undef MIPS_NUM_OPCODES
This page took 0.284956 seconds and 4 git commands to generate.