Back to index

cell-binutils  2.17cvs20070401
iq2000-opc.c
Go to the documentation of this file.
00001 /* Instruction opcode table for iq2000.
00002 
00003 THIS FILE IS MACHINE GENERATED WITH CGEN.
00004 
00005 Copyright 1996-2005 Free Software Foundation, Inc.
00006 
00007 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
00008 
00009 This program is free software; you can redistribute it and/or modify
00010 it under the terms of the GNU General Public License as published by
00011 the Free Software Foundation; either version 2, or (at your option)
00012 any later version.
00013 
00014 This program is distributed in the hope that it will be useful,
00015 but WITHOUT ANY WARRANTY; without even the implied warranty of
00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017 GNU General Public License for more details.
00018 
00019 You should have received a copy of the GNU General Public License along
00020 with this program; if not, write to the Free Software Foundation, Inc.,
00021 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
00022 
00023 */
00024 
00025 #include "sysdep.h"
00026 #include "ansidecl.h"
00027 #include "bfd.h"
00028 #include "symcat.h"
00029 #include "iq2000-desc.h"
00030 #include "iq2000-opc.h"
00031 #include "libiberty.h"
00032 
00033 /* The hash functions are recorded here to help keep assembler code out of
00034    the disassembler and vice versa.  */
00035 
00036 static int asm_hash_insn_p        (const CGEN_INSN *);
00037 static unsigned int asm_hash_insn (const char *);
00038 static int dis_hash_insn_p        (const CGEN_INSN *);
00039 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
00040 
00041 /* Instruction formats.  */
00042 
00043 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
00044 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
00045 #else
00046 #define F(f) & iq2000_cgen_ifld_table[IQ2000_f]
00047 #endif
00048 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
00049   0, 0, 0x0, { { 0 } }
00050 };
00051 
00052 static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
00053   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00054 };
00055 
00056 static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = {
00057   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00058 };
00059 
00060 static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = {
00061   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
00062 };
00063 
00064 static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = {
00065   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
00066 };
00067 
00068 static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = {
00069   32, 32, 0xfc000020, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_5) }, { F (F_MASKL) }, { 0 } }
00070 };
00071 
00072 static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = {
00073   32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00074 };
00075 
00076 static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = {
00077   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00078 };
00079 
00080 static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = {
00081   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00082 };
00083 
00084 static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = {
00085   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00086 };
00087 
00088 static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = {
00089   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
00090 };
00091 
00092 static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = {
00093   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
00094 };
00095 
00096 static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = {
00097   32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00098 };
00099 
00100 static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = {
00101   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
00102 };
00103 
00104 static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = {
00105   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
00106 };
00107 
00108 static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = {
00109   32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
00110 };
00111 
00112 static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = {
00113   32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00114 };
00115 
00116 static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = {
00117   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00118 };
00119 
00120 static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = {
00121   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
00122 };
00123 
00124 static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = {
00125   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
00126 };
00127 
00128 static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = {
00129   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00130 };
00131 
00132 static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = {
00133   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
00134 };
00135 
00136 static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = {
00137   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
00138 };
00139 
00140 static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = {
00141   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
00142 };
00143 
00144 static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = {
00145   32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
00146 };
00147 
00148 static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = {
00149   32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
00150 };
00151 
00152 static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = {
00153   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
00154 };
00155 
00156 static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = {
00157   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
00158 };
00159 
00160 static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = {
00161   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00162 };
00163 
00164 static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = {
00165   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00166 };
00167 
00168 static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = {
00169   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } }
00170 };
00171 
00172 static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = {
00173   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
00174 };
00175 
00176 static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = {
00177   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
00178 };
00179 
00180 static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = {
00181   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
00182 };
00183 
00184 static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = {
00185   32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
00186 };
00187 
00188 static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = {
00189   32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
00190 };
00191 
00192 static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = {
00193   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
00194 };
00195 
00196 static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = {
00197   32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00198 };
00199 
00200 static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = {
00201   32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
00202 };
00203 
00204 static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = {
00205   32, 32, 0xffe007c0, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
00206 };
00207 
00208 static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = {
00209   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
00210 };
00211 
00212 static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = {
00213   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
00214 };
00215 
00216 static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = {
00217   32, 32, 0xfc0007fc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
00218 };
00219 
00220 static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = {
00221   32, 32, 0xfc0007f8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
00222 };
00223 
00224 static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = {
00225   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
00226 };
00227 
00228 #undef F
00229 
00230 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
00231 #define A(a) (1 << CGEN_INSN_##a)
00232 #else
00233 #define A(a) (1 << CGEN_INSN_a)
00234 #endif
00235 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
00236 #define OPERAND(op) IQ2000_OPERAND_##op
00237 #else
00238 #define OPERAND(op) IQ2000_OPERAND_op
00239 #endif
00240 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
00241 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
00242 
00243 /* The instruction table.  */
00244 
00245 static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
00246 {
00247   /* Special null first entry.
00248      A `num' value of zero is thus invalid.
00249      Also, the special `invalid' insn resides here.  */
00250   { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
00251 /* add ${rd-rs},$rt */
00252   {
00253     { 0, 0, 0, 0 },
00254     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00255     & ifmt_add2, { 0x20 }
00256   },
00257 /* add $rd,$rs,$rt */
00258   {
00259     { 0, 0, 0, 0 },
00260     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00261     & ifmt_add, { 0x20 }
00262   },
00263 /* addi ${rt-rs},$lo16 */
00264   {
00265     { 0, 0, 0, 0 },
00266     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00267     & ifmt_addi2, { 0x20000000 }
00268   },
00269 /* addi $rt,$rs,$lo16 */
00270   {
00271     { 0, 0, 0, 0 },
00272     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00273     & ifmt_addi, { 0x20000000 }
00274   },
00275 /* addiu ${rt-rs},$lo16 */
00276   {
00277     { 0, 0, 0, 0 },
00278     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00279     & ifmt_addi2, { 0x24000000 }
00280   },
00281 /* addiu $rt,$rs,$lo16 */
00282   {
00283     { 0, 0, 0, 0 },
00284     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00285     & ifmt_addi, { 0x24000000 }
00286   },
00287 /* addu ${rd-rs},$rt */
00288   {
00289     { 0, 0, 0, 0 },
00290     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00291     & ifmt_add2, { 0x21 }
00292   },
00293 /* addu $rd,$rs,$rt */
00294   {
00295     { 0, 0, 0, 0 },
00296     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00297     & ifmt_add, { 0x21 }
00298   },
00299 /* ado16 ${rd-rs},$rt */
00300   {
00301     { 0, 0, 0, 0 },
00302     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00303     & ifmt_add2, { 0x29 }
00304   },
00305 /* ado16 $rd,$rs,$rt */
00306   {
00307     { 0, 0, 0, 0 },
00308     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00309     & ifmt_add, { 0x29 }
00310   },
00311 /* and ${rd-rs},$rt */
00312   {
00313     { 0, 0, 0, 0 },
00314     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00315     & ifmt_add2, { 0x24 }
00316   },
00317 /* and $rd,$rs,$rt */
00318   {
00319     { 0, 0, 0, 0 },
00320     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00321     & ifmt_add, { 0x24 }
00322   },
00323 /* andi ${rt-rs},$lo16 */
00324   {
00325     { 0, 0, 0, 0 },
00326     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00327     & ifmt_addi2, { 0x30000000 }
00328   },
00329 /* andi $rt,$rs,$lo16 */
00330   {
00331     { 0, 0, 0, 0 },
00332     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00333     & ifmt_addi, { 0x30000000 }
00334   },
00335 /* andoi ${rt-rs},$lo16 */
00336   {
00337     { 0, 0, 0, 0 },
00338     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00339     & ifmt_addi2, { 0xb0000000 }
00340   },
00341 /* andoi $rt,$rs,$lo16 */
00342   {
00343     { 0, 0, 0, 0 },
00344     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00345     & ifmt_addi, { 0xb0000000 }
00346   },
00347 /* nor ${rd-rs},$rt */
00348   {
00349     { 0, 0, 0, 0 },
00350     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00351     & ifmt_add2, { 0x27 }
00352   },
00353 /* nor $rd,$rs,$rt */
00354   {
00355     { 0, 0, 0, 0 },
00356     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00357     & ifmt_add, { 0x27 }
00358   },
00359 /* or ${rd-rs},$rt */
00360   {
00361     { 0, 0, 0, 0 },
00362     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00363     & ifmt_add2, { 0x25 }
00364   },
00365 /* or $rd,$rs,$rt */
00366   {
00367     { 0, 0, 0, 0 },
00368     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00369     & ifmt_add, { 0x25 }
00370   },
00371 /* ori ${rt-rs},$lo16 */
00372   {
00373     { 0, 0, 0, 0 },
00374     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00375     & ifmt_addi2, { 0x34000000 }
00376   },
00377 /* ori $rt,$rs,$lo16 */
00378   {
00379     { 0, 0, 0, 0 },
00380     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00381     & ifmt_addi, { 0x34000000 }
00382   },
00383 /* ram $rd,$rt,$shamt,$maskl,$maskr */
00384   {
00385     { 0, 0, 0, 0 },
00386     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
00387     & ifmt_ram, { 0x9c000000 }
00388   },
00389 /* sll $rd,$rt,$shamt */
00390   {
00391     { 0, 0, 0, 0 },
00392     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
00393     & ifmt_sll, { 0x0 }
00394   },
00395 /* sllv ${rd-rt},$rs */
00396   {
00397     { 0, 0, 0, 0 },
00398     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
00399     & ifmt_sllv2, { 0x4 }
00400   },
00401 /* sllv $rd,$rt,$rs */
00402   {
00403     { 0, 0, 0, 0 },
00404     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
00405     & ifmt_add, { 0x4 }
00406   },
00407 /* slmv ${rd-rt},$rs,$shamt */
00408   {
00409     { 0, 0, 0, 0 },
00410     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
00411     & ifmt_slmv2, { 0x1 }
00412   },
00413 /* slmv $rd,$rt,$rs,$shamt */
00414   {
00415     { 0, 0, 0, 0 },
00416     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
00417     & ifmt_slmv, { 0x1 }
00418   },
00419 /* slt ${rd-rs},$rt */
00420   {
00421     { 0, 0, 0, 0 },
00422     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00423     & ifmt_add2, { 0x2a }
00424   },
00425 /* slt $rd,$rs,$rt */
00426   {
00427     { 0, 0, 0, 0 },
00428     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00429     & ifmt_add, { 0x2a }
00430   },
00431 /* slti ${rt-rs},$imm */
00432   {
00433     { 0, 0, 0, 0 },
00434     { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
00435     & ifmt_slti2, { 0x28000000 }
00436   },
00437 /* slti $rt,$rs,$imm */
00438   {
00439     { 0, 0, 0, 0 },
00440     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
00441     & ifmt_slti, { 0x28000000 }
00442   },
00443 /* sltiu ${rt-rs},$imm */
00444   {
00445     { 0, 0, 0, 0 },
00446     { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
00447     & ifmt_slti2, { 0x2c000000 }
00448   },
00449 /* sltiu $rt,$rs,$imm */
00450   {
00451     { 0, 0, 0, 0 },
00452     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
00453     & ifmt_slti, { 0x2c000000 }
00454   },
00455 /* sltu ${rd-rs},$rt */
00456   {
00457     { 0, 0, 0, 0 },
00458     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00459     & ifmt_add2, { 0x2b }
00460   },
00461 /* sltu $rd,$rs,$rt */
00462   {
00463     { 0, 0, 0, 0 },
00464     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00465     & ifmt_add, { 0x2b }
00466   },
00467 /* sra ${rd-rt},$shamt */
00468   {
00469     { 0, 0, 0, 0 },
00470     { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
00471     & ifmt_sra2, { 0x3 }
00472   },
00473 /* sra $rd,$rt,$shamt */
00474   {
00475     { 0, 0, 0, 0 },
00476     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
00477     & ifmt_sll, { 0x3 }
00478   },
00479 /* srav ${rd-rt},$rs */
00480   {
00481     { 0, 0, 0, 0 },
00482     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
00483     & ifmt_sllv2, { 0x7 }
00484   },
00485 /* srav $rd,$rt,$rs */
00486   {
00487     { 0, 0, 0, 0 },
00488     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
00489     & ifmt_add, { 0x7 }
00490   },
00491 /* srl $rd,$rt,$shamt */
00492   {
00493     { 0, 0, 0, 0 },
00494     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
00495     & ifmt_sll, { 0x2 }
00496   },
00497 /* srlv ${rd-rt},$rs */
00498   {
00499     { 0, 0, 0, 0 },
00500     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
00501     & ifmt_sllv2, { 0x6 }
00502   },
00503 /* srlv $rd,$rt,$rs */
00504   {
00505     { 0, 0, 0, 0 },
00506     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
00507     & ifmt_add, { 0x6 }
00508   },
00509 /* srmv ${rd-rt},$rs,$shamt */
00510   {
00511     { 0, 0, 0, 0 },
00512     { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
00513     & ifmt_slmv2, { 0x5 }
00514   },
00515 /* srmv $rd,$rt,$rs,$shamt */
00516   {
00517     { 0, 0, 0, 0 },
00518     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
00519     & ifmt_slmv, { 0x5 }
00520   },
00521 /* sub ${rd-rs},$rt */
00522   {
00523     { 0, 0, 0, 0 },
00524     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00525     & ifmt_add2, { 0x22 }
00526   },
00527 /* sub $rd,$rs,$rt */
00528   {
00529     { 0, 0, 0, 0 },
00530     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00531     & ifmt_add, { 0x22 }
00532   },
00533 /* subu ${rd-rs},$rt */
00534   {
00535     { 0, 0, 0, 0 },
00536     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00537     & ifmt_add2, { 0x23 }
00538   },
00539 /* subu $rd,$rs,$rt */
00540   {
00541     { 0, 0, 0, 0 },
00542     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00543     & ifmt_add, { 0x23 }
00544   },
00545 /* xor ${rd-rs},$rt */
00546   {
00547     { 0, 0, 0, 0 },
00548     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
00549     & ifmt_add2, { 0x26 }
00550   },
00551 /* xor $rd,$rs,$rt */
00552   {
00553     { 0, 0, 0, 0 },
00554     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
00555     & ifmt_add, { 0x26 }
00556   },
00557 /* xori ${rt-rs},$lo16 */
00558   {
00559     { 0, 0, 0, 0 },
00560     { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
00561     & ifmt_addi2, { 0x38000000 }
00562   },
00563 /* xori $rt,$rs,$lo16 */
00564   {
00565     { 0, 0, 0, 0 },
00566     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
00567     & ifmt_addi, { 0x38000000 }
00568   },
00569 /* bbi $rs($bitnum),$offset */
00570   {
00571     { 0, 0, 0, 0 },
00572     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
00573     & ifmt_bbi, { 0x70000000 }
00574   },
00575 /* bbin $rs($bitnum),$offset */
00576   {
00577     { 0, 0, 0, 0 },
00578     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
00579     & ifmt_bbi, { 0x78000000 }
00580   },
00581 /* bbv $rs,$rt,$offset */
00582   {
00583     { 0, 0, 0, 0 },
00584     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00585     & ifmt_bbv, { 0x74000000 }
00586   },
00587 /* bbvn $rs,$rt,$offset */
00588   {
00589     { 0, 0, 0, 0 },
00590     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00591     & ifmt_bbv, { 0x7c000000 }
00592   },
00593 /* beq $rs,$rt,$offset */
00594   {
00595     { 0, 0, 0, 0 },
00596     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00597     & ifmt_bbv, { 0x10000000 }
00598   },
00599 /* beql $rs,$rt,$offset */
00600   {
00601     { 0, 0, 0, 0 },
00602     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00603     & ifmt_bbv, { 0x50000000 }
00604   },
00605 /* bgez $rs,$offset */
00606   {
00607     { 0, 0, 0, 0 },
00608     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00609     & ifmt_bgez, { 0x4010000 }
00610   },
00611 /* bgezal $rs,$offset */
00612   {
00613     { 0, 0, 0, 0 },
00614     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00615     & ifmt_bgez, { 0x4110000 }
00616   },
00617 /* bgezall $rs,$offset */
00618   {
00619     { 0, 0, 0, 0 },
00620     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00621     & ifmt_bgez, { 0x4130000 }
00622   },
00623 /* bgezl $rs,$offset */
00624   {
00625     { 0, 0, 0, 0 },
00626     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00627     & ifmt_bgez, { 0x4030000 }
00628   },
00629 /* bltz $rs,$offset */
00630   {
00631     { 0, 0, 0, 0 },
00632     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00633     & ifmt_bgez, { 0x4000000 }
00634   },
00635 /* bltzl $rs,$offset */
00636   {
00637     { 0, 0, 0, 0 },
00638     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00639     & ifmt_bgez, { 0x4020000 }
00640   },
00641 /* bltzal $rs,$offset */
00642   {
00643     { 0, 0, 0, 0 },
00644     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00645     & ifmt_bgez, { 0x4100000 }
00646   },
00647 /* bltzall $rs,$offset */
00648   {
00649     { 0, 0, 0, 0 },
00650     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00651     & ifmt_bgez, { 0x4120000 }
00652   },
00653 /* bmb0 $rs,$rt,$offset */
00654   {
00655     { 0, 0, 0, 0 },
00656     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00657     & ifmt_bbv, { 0x60000000 }
00658   },
00659 /* bmb1 $rs,$rt,$offset */
00660   {
00661     { 0, 0, 0, 0 },
00662     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00663     & ifmt_bbv, { 0x64000000 }
00664   },
00665 /* bmb2 $rs,$rt,$offset */
00666   {
00667     { 0, 0, 0, 0 },
00668     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00669     & ifmt_bbv, { 0x68000000 }
00670   },
00671 /* bmb3 $rs,$rt,$offset */
00672   {
00673     { 0, 0, 0, 0 },
00674     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00675     & ifmt_bbv, { 0x6c000000 }
00676   },
00677 /* bne $rs,$rt,$offset */
00678   {
00679     { 0, 0, 0, 0 },
00680     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00681     & ifmt_bbv, { 0x14000000 }
00682   },
00683 /* bnel $rs,$rt,$offset */
00684   {
00685     { 0, 0, 0, 0 },
00686     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
00687     & ifmt_bbv, { 0x54000000 }
00688   },
00689 /* jalr $rd,$rs */
00690   {
00691     { 0, 0, 0, 0 },
00692     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
00693     & ifmt_jalr, { 0x9 }
00694   },
00695 /* jr $rs */
00696   {
00697     { 0, 0, 0, 0 },
00698     { { MNEM, ' ', OP (RS), 0 } },
00699     & ifmt_jr, { 0x8 }
00700   },
00701 /* lb $rt,$lo16($base) */
00702   {
00703     { 0, 0, 0, 0 },
00704     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00705     & ifmt_lb, { 0x80000000 }
00706   },
00707 /* lbu $rt,$lo16($base) */
00708   {
00709     { 0, 0, 0, 0 },
00710     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00711     & ifmt_lb, { 0x90000000 }
00712   },
00713 /* lh $rt,$lo16($base) */
00714   {
00715     { 0, 0, 0, 0 },
00716     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00717     & ifmt_lb, { 0x84000000 }
00718   },
00719 /* lhu $rt,$lo16($base) */
00720   {
00721     { 0, 0, 0, 0 },
00722     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00723     & ifmt_lb, { 0x94000000 }
00724   },
00725 /* lui $rt,$hi16 */
00726   {
00727     { 0, 0, 0, 0 },
00728     { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
00729     & ifmt_lui, { 0x3c000000 }
00730   },
00731 /* lw $rt,$lo16($base) */
00732   {
00733     { 0, 0, 0, 0 },
00734     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00735     & ifmt_lb, { 0x8c000000 }
00736   },
00737 /* sb $rt,$lo16($base) */
00738   {
00739     { 0, 0, 0, 0 },
00740     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00741     & ifmt_lb, { 0xa0000000 }
00742   },
00743 /* sh $rt,$lo16($base) */
00744   {
00745     { 0, 0, 0, 0 },
00746     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00747     & ifmt_lb, { 0xa4000000 }
00748   },
00749 /* sw $rt,$lo16($base) */
00750   {
00751     { 0, 0, 0, 0 },
00752     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
00753     & ifmt_lb, { 0xac000000 }
00754   },
00755 /* break */
00756   {
00757     { 0, 0, 0, 0 },
00758     { { MNEM, 0 } },
00759     & ifmt_break, { 0xd }
00760   },
00761 /* syscall */
00762   {
00763     { 0, 0, 0, 0 },
00764     { { MNEM, 0 } },
00765     & ifmt_syscall, { 0xc }
00766   },
00767 /* andoui $rt,$rs,$hi16 */
00768   {
00769     { 0, 0, 0, 0 },
00770     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
00771     & ifmt_andoui, { 0xfc000000 }
00772   },
00773 /* andoui ${rt-rs},$hi16 */
00774   {
00775     { 0, 0, 0, 0 },
00776     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
00777     & ifmt_andoui2, { 0xfc000000 }
00778   },
00779 /* orui ${rt-rs},$hi16 */
00780   {
00781     { 0, 0, 0, 0 },
00782     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
00783     & ifmt_andoui2, { 0xbc000000 }
00784   },
00785 /* orui $rt,$rs,$hi16 */
00786   {
00787     { 0, 0, 0, 0 },
00788     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
00789     & ifmt_andoui, { 0xbc000000 }
00790   },
00791 /* bgtz $rs,$offset */
00792   {
00793     { 0, 0, 0, 0 },
00794     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00795     & ifmt_bgez, { 0x1c000000 }
00796   },
00797 /* bgtzl $rs,$offset */
00798   {
00799     { 0, 0, 0, 0 },
00800     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00801     & ifmt_bgez, { 0x5c000000 }
00802   },
00803 /* blez $rs,$offset */
00804   {
00805     { 0, 0, 0, 0 },
00806     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00807     & ifmt_bgez, { 0x18000000 }
00808   },
00809 /* blezl $rs,$offset */
00810   {
00811     { 0, 0, 0, 0 },
00812     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00813     & ifmt_bgez, { 0x58000000 }
00814   },
00815 /* mrgb $rd,$rs,$rt,$mask */
00816   {
00817     { 0, 0, 0, 0 },
00818     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
00819     & ifmt_mrgb, { 0x2d }
00820   },
00821 /* mrgb ${rd-rs},$rt,$mask */
00822   {
00823     { 0, 0, 0, 0 },
00824     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
00825     & ifmt_mrgb2, { 0x2d }
00826   },
00827 /* bctxt $rs,$offset */
00828   {
00829     { 0, 0, 0, 0 },
00830     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
00831     & ifmt_bgez, { 0x4060000 }
00832   },
00833 /* bc0f $offset */
00834   {
00835     { 0, 0, 0, 0 },
00836     { { MNEM, ' ', OP (OFFSET), 0 } },
00837     & ifmt_bc0f, { 0x41000000 }
00838   },
00839 /* bc0fl $offset */
00840   {
00841     { 0, 0, 0, 0 },
00842     { { MNEM, ' ', OP (OFFSET), 0 } },
00843     & ifmt_bc0f, { 0x41020000 }
00844   },
00845 /* bc3f $offset */
00846   {
00847     { 0, 0, 0, 0 },
00848     { { MNEM, ' ', OP (OFFSET), 0 } },
00849     & ifmt_bc0f, { 0x4d000000 }
00850   },
00851 /* bc3fl $offset */
00852   {
00853     { 0, 0, 0, 0 },
00854     { { MNEM, ' ', OP (OFFSET), 0 } },
00855     & ifmt_bc0f, { 0x4d020000 }
00856   },
00857 /* bc0t $offset */
00858   {
00859     { 0, 0, 0, 0 },
00860     { { MNEM, ' ', OP (OFFSET), 0 } },
00861     & ifmt_bc0f, { 0x41010000 }
00862   },
00863 /* bc0tl $offset */
00864   {
00865     { 0, 0, 0, 0 },
00866     { { MNEM, ' ', OP (OFFSET), 0 } },
00867     & ifmt_bc0f, { 0x41030000 }
00868   },
00869 /* bc3t $offset */
00870   {
00871     { 0, 0, 0, 0 },
00872     { { MNEM, ' ', OP (OFFSET), 0 } },
00873     & ifmt_bc0f, { 0x4d010000 }
00874   },
00875 /* bc3tl $offset */
00876   {
00877     { 0, 0, 0, 0 },
00878     { { MNEM, ' ', OP (OFFSET), 0 } },
00879     & ifmt_bc0f, { 0x4d030000 }
00880   },
00881 /* cfc0 $rt,$rd */
00882   {
00883     { 0, 0, 0, 0 },
00884     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00885     & ifmt_cfc0, { 0x40400000 }
00886   },
00887 /* cfc1 $rt,$rd */
00888   {
00889     { 0, 0, 0, 0 },
00890     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00891     & ifmt_cfc0, { 0x44400000 }
00892   },
00893 /* cfc2 $rt,$rd */
00894   {
00895     { 0, 0, 0, 0 },
00896     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00897     & ifmt_cfc0, { 0x48400000 }
00898   },
00899 /* cfc3 $rt,$rd */
00900   {
00901     { 0, 0, 0, 0 },
00902     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00903     & ifmt_cfc0, { 0x4c400000 }
00904   },
00905 /* chkhdr $rd,$rt */
00906   {
00907     { 0, 0, 0, 0 },
00908     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
00909     & ifmt_chkhdr, { 0x4d200000 }
00910   },
00911 /* ctc0 $rt,$rd */
00912   {
00913     { 0, 0, 0, 0 },
00914     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00915     & ifmt_cfc0, { 0x40c00000 }
00916   },
00917 /* ctc1 $rt,$rd */
00918   {
00919     { 0, 0, 0, 0 },
00920     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00921     & ifmt_cfc0, { 0x44c00000 }
00922   },
00923 /* ctc2 $rt,$rd */
00924   {
00925     { 0, 0, 0, 0 },
00926     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00927     & ifmt_cfc0, { 0x48c00000 }
00928   },
00929 /* ctc3 $rt,$rd */
00930   {
00931     { 0, 0, 0, 0 },
00932     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00933     & ifmt_cfc0, { 0x4cc00000 }
00934   },
00935 /* jcr $rs */
00936   {
00937     { 0, 0, 0, 0 },
00938     { { MNEM, ' ', OP (RS), 0 } },
00939     & ifmt_jr, { 0xa }
00940   },
00941 /* luc32 $rt,$rd */
00942   {
00943     { 0, 0, 0, 0 },
00944     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00945     & ifmt_chkhdr, { 0x48200003 }
00946   },
00947 /* luc32l $rt,$rd */
00948   {
00949     { 0, 0, 0, 0 },
00950     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00951     & ifmt_chkhdr, { 0x48200007 }
00952   },
00953 /* luc64 $rt,$rd */
00954   {
00955     { 0, 0, 0, 0 },
00956     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00957     & ifmt_chkhdr, { 0x4820000b }
00958   },
00959 /* luc64l $rt,$rd */
00960   {
00961     { 0, 0, 0, 0 },
00962     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00963     & ifmt_chkhdr, { 0x4820000f }
00964   },
00965 /* luk $rt,$rd */
00966   {
00967     { 0, 0, 0, 0 },
00968     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00969     & ifmt_chkhdr, { 0x48200008 }
00970   },
00971 /* lulck $rt */
00972   {
00973     { 0, 0, 0, 0 },
00974     { { MNEM, ' ', OP (RT), 0 } },
00975     & ifmt_lulck, { 0x48200004 }
00976   },
00977 /* lum32 $rt,$rd */
00978   {
00979     { 0, 0, 0, 0 },
00980     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00981     & ifmt_chkhdr, { 0x48200002 }
00982   },
00983 /* lum32l $rt,$rd */
00984   {
00985     { 0, 0, 0, 0 },
00986     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00987     & ifmt_chkhdr, { 0x48200006 }
00988   },
00989 /* lum64 $rt,$rd */
00990   {
00991     { 0, 0, 0, 0 },
00992     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00993     & ifmt_chkhdr, { 0x4820000a }
00994   },
00995 /* lum64l $rt,$rd */
00996   {
00997     { 0, 0, 0, 0 },
00998     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
00999     & ifmt_chkhdr, { 0x4820000e }
01000   },
01001 /* lur $rt,$rd */
01002   {
01003     { 0, 0, 0, 0 },
01004     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01005     & ifmt_chkhdr, { 0x48200001 }
01006   },
01007 /* lurl $rt,$rd */
01008   {
01009     { 0, 0, 0, 0 },
01010     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01011     & ifmt_chkhdr, { 0x48200005 }
01012   },
01013 /* luulck $rt */
01014   {
01015     { 0, 0, 0, 0 },
01016     { { MNEM, ' ', OP (RT), 0 } },
01017     & ifmt_lulck, { 0x48200000 }
01018   },
01019 /* mfc0 $rt,$rd */
01020   {
01021     { 0, 0, 0, 0 },
01022     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01023     & ifmt_cfc0, { 0x40000000 }
01024   },
01025 /* mfc1 $rt,$rd */
01026   {
01027     { 0, 0, 0, 0 },
01028     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01029     & ifmt_cfc0, { 0x44000000 }
01030   },
01031 /* mfc2 $rt,$rd */
01032   {
01033     { 0, 0, 0, 0 },
01034     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01035     & ifmt_cfc0, { 0x48000000 }
01036   },
01037 /* mfc3 $rt,$rd */
01038   {
01039     { 0, 0, 0, 0 },
01040     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01041     & ifmt_cfc0, { 0x4c000000 }
01042   },
01043 /* mtc0 $rt,$rd */
01044   {
01045     { 0, 0, 0, 0 },
01046     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01047     & ifmt_cfc0, { 0x40800000 }
01048   },
01049 /* mtc1 $rt,$rd */
01050   {
01051     { 0, 0, 0, 0 },
01052     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01053     & ifmt_cfc0, { 0x44800000 }
01054   },
01055 /* mtc2 $rt,$rd */
01056   {
01057     { 0, 0, 0, 0 },
01058     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01059     & ifmt_cfc0, { 0x48800000 }
01060   },
01061 /* mtc3 $rt,$rd */
01062   {
01063     { 0, 0, 0, 0 },
01064     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01065     & ifmt_cfc0, { 0x4c800000 }
01066   },
01067 /* pkrl $rd,$rt */
01068   {
01069     { 0, 0, 0, 0 },
01070     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01071     & ifmt_chkhdr, { 0x4c200007 }
01072   },
01073 /* pkrlr1 $rt,$_index,$count */
01074   {
01075     { 0, 0, 0, 0 },
01076     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01077     & ifmt_pkrlr1, { 0x4fa00000 }
01078   },
01079 /* pkrlr30 $rt,$_index,$count */
01080   {
01081     { 0, 0, 0, 0 },
01082     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01083     & ifmt_pkrlr1, { 0x4fe00000 }
01084   },
01085 /* rb $rd,$rt */
01086   {
01087     { 0, 0, 0, 0 },
01088     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01089     & ifmt_chkhdr, { 0x4c200004 }
01090   },
01091 /* rbr1 $rt,$_index,$count */
01092   {
01093     { 0, 0, 0, 0 },
01094     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01095     & ifmt_pkrlr1, { 0x4f000000 }
01096   },
01097 /* rbr30 $rt,$_index,$count */
01098   {
01099     { 0, 0, 0, 0 },
01100     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01101     & ifmt_pkrlr1, { 0x4f400000 }
01102   },
01103 /* rfe */
01104   {
01105     { 0, 0, 0, 0 },
01106     { { MNEM, 0 } },
01107     & ifmt_rfe, { 0x42000010 }
01108   },
01109 /* rx $rd,$rt */
01110   {
01111     { 0, 0, 0, 0 },
01112     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01113     & ifmt_chkhdr, { 0x4c200006 }
01114   },
01115 /* rxr1 $rt,$_index,$count */
01116   {
01117     { 0, 0, 0, 0 },
01118     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01119     & ifmt_pkrlr1, { 0x4f800000 }
01120   },
01121 /* rxr30 $rt,$_index,$count */
01122   {
01123     { 0, 0, 0, 0 },
01124     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01125     & ifmt_pkrlr1, { 0x4fc00000 }
01126   },
01127 /* sleep */
01128   {
01129     { 0, 0, 0, 0 },
01130     { { MNEM, 0 } },
01131     & ifmt_syscall, { 0xe }
01132   },
01133 /* srrd $rt */
01134   {
01135     { 0, 0, 0, 0 },
01136     { { MNEM, ' ', OP (RT), 0 } },
01137     & ifmt_lulck, { 0x48200010 }
01138   },
01139 /* srrdl $rt */
01140   {
01141     { 0, 0, 0, 0 },
01142     { { MNEM, ' ', OP (RT), 0 } },
01143     & ifmt_lulck, { 0x48200014 }
01144   },
01145 /* srulck $rt */
01146   {
01147     { 0, 0, 0, 0 },
01148     { { MNEM, ' ', OP (RT), 0 } },
01149     & ifmt_lulck, { 0x48200016 }
01150   },
01151 /* srwr $rt,$rd */
01152   {
01153     { 0, 0, 0, 0 },
01154     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01155     & ifmt_chkhdr, { 0x48200011 }
01156   },
01157 /* srwru $rt,$rd */
01158   {
01159     { 0, 0, 0, 0 },
01160     { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
01161     & ifmt_chkhdr, { 0x48200015 }
01162   },
01163 /* trapqfl */
01164   {
01165     { 0, 0, 0, 0 },
01166     { { MNEM, 0 } },
01167     & ifmt_break, { 0x4c200008 }
01168   },
01169 /* trapqne */
01170   {
01171     { 0, 0, 0, 0 },
01172     { { MNEM, 0 } },
01173     & ifmt_break, { 0x4c200009 }
01174   },
01175 /* traprel $rt */
01176   {
01177     { 0, 0, 0, 0 },
01178     { { MNEM, ' ', OP (RT), 0 } },
01179     & ifmt_lulck, { 0x4c20000a }
01180   },
01181 /* wb $rd,$rt */
01182   {
01183     { 0, 0, 0, 0 },
01184     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01185     & ifmt_chkhdr, { 0x4c200000 }
01186   },
01187 /* wbu $rd,$rt */
01188   {
01189     { 0, 0, 0, 0 },
01190     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01191     & ifmt_chkhdr, { 0x4c200001 }
01192   },
01193 /* wbr1 $rt,$_index,$count */
01194   {
01195     { 0, 0, 0, 0 },
01196     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01197     & ifmt_pkrlr1, { 0x4e000000 }
01198   },
01199 /* wbr1u $rt,$_index,$count */
01200   {
01201     { 0, 0, 0, 0 },
01202     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01203     & ifmt_pkrlr1, { 0x4e200000 }
01204   },
01205 /* wbr30 $rt,$_index,$count */
01206   {
01207     { 0, 0, 0, 0 },
01208     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01209     & ifmt_pkrlr1, { 0x4e400000 }
01210   },
01211 /* wbr30u $rt,$_index,$count */
01212   {
01213     { 0, 0, 0, 0 },
01214     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01215     & ifmt_pkrlr1, { 0x4e600000 }
01216   },
01217 /* wx $rd,$rt */
01218   {
01219     { 0, 0, 0, 0 },
01220     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01221     & ifmt_chkhdr, { 0x4c200002 }
01222   },
01223 /* wxu $rd,$rt */
01224   {
01225     { 0, 0, 0, 0 },
01226     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01227     & ifmt_chkhdr, { 0x4c200003 }
01228   },
01229 /* wxr1 $rt,$_index,$count */
01230   {
01231     { 0, 0, 0, 0 },
01232     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01233     & ifmt_pkrlr1, { 0x4e800000 }
01234   },
01235 /* wxr1u $rt,$_index,$count */
01236   {
01237     { 0, 0, 0, 0 },
01238     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01239     & ifmt_pkrlr1, { 0x4ea00000 }
01240   },
01241 /* wxr30 $rt,$_index,$count */
01242   {
01243     { 0, 0, 0, 0 },
01244     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01245     & ifmt_pkrlr1, { 0x4ec00000 }
01246   },
01247 /* wxr30u $rt,$_index,$count */
01248   {
01249     { 0, 0, 0, 0 },
01250     { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } },
01251     & ifmt_pkrlr1, { 0x4ee00000 }
01252   },
01253 /* ldw $rt,$lo16($base) */
01254   {
01255     { 0, 0, 0, 0 },
01256     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
01257     & ifmt_lb, { 0xc0000000 }
01258   },
01259 /* sdw $rt,$lo16($base) */
01260   {
01261     { 0, 0, 0, 0 },
01262     { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
01263     & ifmt_lb, { 0xe0000000 }
01264   },
01265 /* j $jmptarg */
01266   {
01267     { 0, 0, 0, 0 },
01268     { { MNEM, ' ', OP (JMPTARG), 0 } },
01269     & ifmt_j, { 0x8000000 }
01270   },
01271 /* jal $jmptarg */
01272   {
01273     { 0, 0, 0, 0 },
01274     { { MNEM, ' ', OP (JMPTARG), 0 } },
01275     & ifmt_j, { 0xc000000 }
01276   },
01277 /* bmb $rs,$rt,$offset */
01278   {
01279     { 0, 0, 0, 0 },
01280     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
01281     & ifmt_bbv, { 0xb4000000 }
01282   },
01283 /* andoui $rt,$rs,$hi16 */
01284   {
01285     { 0, 0, 0, 0 },
01286     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
01287     & ifmt_andoui, { 0xbc000000 }
01288   },
01289 /* andoui ${rt-rs},$hi16 */
01290   {
01291     { 0, 0, 0, 0 },
01292     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
01293     & ifmt_andoui2, { 0xbc000000 }
01294   },
01295 /* orui $rt,$rs,$hi16 */
01296   {
01297     { 0, 0, 0, 0 },
01298     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
01299     & ifmt_andoui, { 0x3c000000 }
01300   },
01301 /* orui ${rt-rs},$hi16 */
01302   {
01303     { 0, 0, 0, 0 },
01304     { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
01305     & ifmt_andoui2, { 0x3c000000 }
01306   },
01307 /* mrgb $rd,$rs,$rt,$maskq10 */
01308   {
01309     { 0, 0, 0, 0 },
01310     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
01311     & ifmt_mrgbq10, { 0x2d }
01312   },
01313 /* mrgb ${rd-rs},$rt,$maskq10 */
01314   {
01315     { 0, 0, 0, 0 },
01316     { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
01317     & ifmt_mrgbq102, { 0x2d }
01318   },
01319 /* j $jmptarg */
01320   {
01321     { 0, 0, 0, 0 },
01322     { { MNEM, ' ', OP (JMPTARG), 0 } },
01323     & ifmt_jq10, { 0x8000000 }
01324   },
01325 /* jal $rt,$jmptarg */
01326   {
01327     { 0, 0, 0, 0 },
01328     { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
01329     & ifmt_jalq10, { 0xc000000 }
01330   },
01331 /* jal $jmptarg */
01332   {
01333     { 0, 0, 0, 0 },
01334     { { MNEM, ' ', OP (JMPTARG), 0 } },
01335     & ifmt_jq10, { 0xc1f0000 }
01336   },
01337 /* bbil $rs($bitnum),$offset */
01338   {
01339     { 0, 0, 0, 0 },
01340     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
01341     & ifmt_bbi, { 0xf0000000 }
01342   },
01343 /* bbinl $rs($bitnum),$offset */
01344   {
01345     { 0, 0, 0, 0 },
01346     { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
01347     & ifmt_bbi, { 0xf8000000 }
01348   },
01349 /* bbvl $rs,$rt,$offset */
01350   {
01351     { 0, 0, 0, 0 },
01352     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
01353     & ifmt_bbv, { 0xf4000000 }
01354   },
01355 /* bbvnl $rs,$rt,$offset */
01356   {
01357     { 0, 0, 0, 0 },
01358     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
01359     & ifmt_bbv, { 0xfc000000 }
01360   },
01361 /* bgtzal $rs,$offset */
01362   {
01363     { 0, 0, 0, 0 },
01364     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01365     & ifmt_bgez, { 0x4150000 }
01366   },
01367 /* bgtzall $rs,$offset */
01368   {
01369     { 0, 0, 0, 0 },
01370     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01371     & ifmt_bgez, { 0x4170000 }
01372   },
01373 /* blezal $rs,$offset */
01374   {
01375     { 0, 0, 0, 0 },
01376     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01377     & ifmt_bgez, { 0x4140000 }
01378   },
01379 /* blezall $rs,$offset */
01380   {
01381     { 0, 0, 0, 0 },
01382     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01383     & ifmt_bgez, { 0x4160000 }
01384   },
01385 /* bgtz $rs,$offset */
01386   {
01387     { 0, 0, 0, 0 },
01388     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01389     & ifmt_bgez, { 0x4050000 }
01390   },
01391 /* bgtzl $rs,$offset */
01392   {
01393     { 0, 0, 0, 0 },
01394     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01395     & ifmt_bgez, { 0x4070000 }
01396   },
01397 /* blez $rs,$offset */
01398   {
01399     { 0, 0, 0, 0 },
01400     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01401     & ifmt_bgez, { 0x4040000 }
01402   },
01403 /* blezl $rs,$offset */
01404   {
01405     { 0, 0, 0, 0 },
01406     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01407     & ifmt_bgez, { 0x4060000 }
01408   },
01409 /* bmb $rs,$rt,$offset */
01410   {
01411     { 0, 0, 0, 0 },
01412     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
01413     & ifmt_bbv, { 0x18000000 }
01414   },
01415 /* bmbl $rs,$rt,$offset */
01416   {
01417     { 0, 0, 0, 0 },
01418     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
01419     & ifmt_bbv, { 0x58000000 }
01420   },
01421 /* bri $rs,$offset */
01422   {
01423     { 0, 0, 0, 0 },
01424     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01425     & ifmt_bgez, { 0x4080000 }
01426   },
01427 /* brv $rs,$offset */
01428   {
01429     { 0, 0, 0, 0 },
01430     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01431     & ifmt_bgez, { 0x4090000 }
01432   },
01433 /* bctx $rs,$offset */
01434   {
01435     { 0, 0, 0, 0 },
01436     { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
01437     & ifmt_bgez, { 0x40c0000 }
01438   },
01439 /* yield */
01440   {
01441     { 0, 0, 0, 0 },
01442     { { MNEM, 0 } },
01443     & ifmt_break, { 0xe }
01444   },
01445 /* crc32 $rd,$rs,$rt */
01446   {
01447     { 0, 0, 0, 0 },
01448     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01449     & ifmt_add, { 0x4c000014 }
01450   },
01451 /* crc32b $rd,$rs,$rt */
01452   {
01453     { 0, 0, 0, 0 },
01454     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01455     & ifmt_add, { 0x4c000015 }
01456   },
01457 /* cnt1s $rd,$rs */
01458   {
01459     { 0, 0, 0, 0 },
01460     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
01461     & ifmt_add, { 0x2e }
01462   },
01463 /* avail $rd */
01464   {
01465     { 0, 0, 0, 0 },
01466     { { MNEM, ' ', OP (RD), 0 } },
01467     & ifmt_avail, { 0x4c000024 }
01468   },
01469 /* free $rd,$rs */
01470   {
01471     { 0, 0, 0, 0 },
01472     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
01473     & ifmt_jalr, { 0x4c000025 }
01474   },
01475 /* tstod $rd,$rs */
01476   {
01477     { 0, 0, 0, 0 },
01478     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
01479     & ifmt_jalr, { 0x4c000027 }
01480   },
01481 /* cmphdr $rd */
01482   {
01483     { 0, 0, 0, 0 },
01484     { { MNEM, ' ', OP (RD), 0 } },
01485     & ifmt_avail, { 0x4c00002c }
01486   },
01487 /* mcid $rd,$rt */
01488   {
01489     { 0, 0, 0, 0 },
01490     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01491     & ifmt_chkhdr, { 0x4c000020 }
01492   },
01493 /* dba $rd */
01494   {
01495     { 0, 0, 0, 0 },
01496     { { MNEM, ' ', OP (RD), 0 } },
01497     & ifmt_avail, { 0x4c000022 }
01498   },
01499 /* dbd $rd,$rs,$rt */
01500   {
01501     { 0, 0, 0, 0 },
01502     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01503     & ifmt_add, { 0x4c000021 }
01504   },
01505 /* dpwt $rd,$rs */
01506   {
01507     { 0, 0, 0, 0 },
01508     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
01509     & ifmt_jalr, { 0x4c000023 }
01510   },
01511 /* chkhdr $rd,$rs */
01512   {
01513     { 0, 0, 0, 0 },
01514     { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
01515     & ifmt_jalr, { 0x4c000026 }
01516   },
01517 /* rba $rd,$rs,$rt */
01518   {
01519     { 0, 0, 0, 0 },
01520     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01521     & ifmt_add, { 0x4c000008 }
01522   },
01523 /* rbal $rd,$rs,$rt */
01524   {
01525     { 0, 0, 0, 0 },
01526     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01527     & ifmt_add, { 0x4c000009 }
01528   },
01529 /* rbar $rd,$rs,$rt */
01530   {
01531     { 0, 0, 0, 0 },
01532     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01533     & ifmt_add, { 0x4c00000a }
01534   },
01535 /* wba $rd,$rs,$rt */
01536   {
01537     { 0, 0, 0, 0 },
01538     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01539     & ifmt_add, { 0x4c000010 }
01540   },
01541 /* wbau $rd,$rs,$rt */
01542   {
01543     { 0, 0, 0, 0 },
01544     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01545     & ifmt_add, { 0x4c000011 }
01546   },
01547 /* wbac $rd,$rs,$rt */
01548   {
01549     { 0, 0, 0, 0 },
01550     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01551     & ifmt_add, { 0x4c000012 }
01552   },
01553 /* rbi $rd,$rs,$rt,$bytecount */
01554   {
01555     { 0, 0, 0, 0 },
01556     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01557     & ifmt_rbi, { 0x4c000200 }
01558   },
01559 /* rbil $rd,$rs,$rt,$bytecount */
01560   {
01561     { 0, 0, 0, 0 },
01562     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01563     & ifmt_rbi, { 0x4c000300 }
01564   },
01565 /* rbir $rd,$rs,$rt,$bytecount */
01566   {
01567     { 0, 0, 0, 0 },
01568     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01569     & ifmt_rbi, { 0x4c000100 }
01570   },
01571 /* wbi $rd,$rs,$rt,$bytecount */
01572   {
01573     { 0, 0, 0, 0 },
01574     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01575     & ifmt_rbi, { 0x4c000600 }
01576   },
01577 /* wbic $rd,$rs,$rt,$bytecount */
01578   {
01579     { 0, 0, 0, 0 },
01580     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01581     & ifmt_rbi, { 0x4c000500 }
01582   },
01583 /* wbiu $rd,$rs,$rt,$bytecount */
01584   {
01585     { 0, 0, 0, 0 },
01586     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01587     & ifmt_rbi, { 0x4c000700 }
01588   },
01589 /* pkrli $rd,$rs,$rt,$bytecount */
01590   {
01591     { 0, 0, 0, 0 },
01592     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01593     & ifmt_rbi, { 0x48000000 }
01594   },
01595 /* pkrlih $rd,$rs,$rt,$bytecount */
01596   {
01597     { 0, 0, 0, 0 },
01598     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01599     & ifmt_rbi, { 0x48000200 }
01600   },
01601 /* pkrliu $rd,$rs,$rt,$bytecount */
01602   {
01603     { 0, 0, 0, 0 },
01604     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01605     & ifmt_rbi, { 0x48000100 }
01606   },
01607 /* pkrlic $rd,$rs,$rt,$bytecount */
01608   {
01609     { 0, 0, 0, 0 },
01610     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
01611     & ifmt_rbi, { 0x48000300 }
01612   },
01613 /* pkrla $rd,$rs,$rt */
01614   {
01615     { 0, 0, 0, 0 },
01616     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01617     & ifmt_add, { 0x4c000028 }
01618   },
01619 /* pkrlau $rd,$rs,$rt */
01620   {
01621     { 0, 0, 0, 0 },
01622     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01623     & ifmt_add, { 0x4c000029 }
01624   },
01625 /* pkrlah $rd,$rs,$rt */
01626   {
01627     { 0, 0, 0, 0 },
01628     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01629     & ifmt_add, { 0x4c00002a }
01630   },
01631 /* pkrlac $rd,$rs,$rt */
01632   {
01633     { 0, 0, 0, 0 },
01634     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01635     & ifmt_add, { 0x4c00002b }
01636   },
01637 /* lock $rd,$rt */
01638   {
01639     { 0, 0, 0, 0 },
01640     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01641     & ifmt_chkhdr, { 0x4c000001 }
01642   },
01643 /* unlk $rd,$rt */
01644   {
01645     { 0, 0, 0, 0 },
01646     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01647     & ifmt_chkhdr, { 0x4c000003 }
01648   },
01649 /* swrd $rd,$rt */
01650   {
01651     { 0, 0, 0, 0 },
01652     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01653     & ifmt_chkhdr, { 0x4c000004 }
01654   },
01655 /* swrdl $rd,$rt */
01656   {
01657     { 0, 0, 0, 0 },
01658     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01659     & ifmt_chkhdr, { 0x4c000005 }
01660   },
01661 /* swwr $rd,$rs,$rt */
01662   {
01663     { 0, 0, 0, 0 },
01664     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01665     & ifmt_add, { 0x4c000006 }
01666   },
01667 /* swwru $rd,$rs,$rt */
01668   {
01669     { 0, 0, 0, 0 },
01670     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01671     & ifmt_add, { 0x4c000007 }
01672   },
01673 /* dwrd $rd,$rt */
01674   {
01675     { 0, 0, 0, 0 },
01676     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01677     & ifmt_chkhdr, { 0x4c00000c }
01678   },
01679 /* dwrdl $rd,$rt */
01680   {
01681     { 0, 0, 0, 0 },
01682     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01683     & ifmt_chkhdr, { 0x4c00000d }
01684   },
01685 /* cam36 $rd,$rt,${cam-z},${cam-y} */
01686   {
01687     { 0, 0, 0, 0 },
01688     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
01689     & ifmt_cam36, { 0x4c000400 }
01690   },
01691 /* cam72 $rd,$rt,${cam-y},${cam-z} */
01692   {
01693     { 0, 0, 0, 0 },
01694     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
01695     & ifmt_cam36, { 0x4c000440 }
01696   },
01697 /* cam144 $rd,$rt,${cam-y},${cam-z} */
01698   {
01699     { 0, 0, 0, 0 },
01700     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
01701     & ifmt_cam36, { 0x4c000480 }
01702   },
01703 /* cam288 $rd,$rt,${cam-y},${cam-z} */
01704   {
01705     { 0, 0, 0, 0 },
01706     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
01707     & ifmt_cam36, { 0x4c0004c0 }
01708   },
01709 /* cm32and $rd,$rs,$rt */
01710   {
01711     { 0, 0, 0, 0 },
01712     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01713     & ifmt_cm32and, { 0x4c0000ab }
01714   },
01715 /* cm32andn $rd,$rs,$rt */
01716   {
01717     { 0, 0, 0, 0 },
01718     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01719     & ifmt_cm32and, { 0x4c0000a3 }
01720   },
01721 /* cm32or $rd,$rs,$rt */
01722   {
01723     { 0, 0, 0, 0 },
01724     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01725     & ifmt_cm32and, { 0x4c0000aa }
01726   },
01727 /* cm32ra $rd,$rs,$rt */
01728   {
01729     { 0, 0, 0, 0 },
01730     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01731     & ifmt_add, { 0x4c0000b0 }
01732   },
01733 /* cm32rd $rd,$rt */
01734   {
01735     { 0, 0, 0, 0 },
01736     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01737     & ifmt_cm32rd, { 0x4c0000a1 }
01738   },
01739 /* cm32ri $rd,$rt */
01740   {
01741     { 0, 0, 0, 0 },
01742     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01743     & ifmt_cm32rd, { 0x4c0000a4 }
01744   },
01745 /* cm32rs $rd,$rs,$rt */
01746   {
01747     { 0, 0, 0, 0 },
01748     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01749     & ifmt_add, { 0x4c0000a0 }
01750   },
01751 /* cm32sa $rd,$rs,$rt */
01752   {
01753     { 0, 0, 0, 0 },
01754     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01755     & ifmt_cm32and, { 0x4c0000b8 }
01756   },
01757 /* cm32sd $rd,$rt */
01758   {
01759     { 0, 0, 0, 0 },
01760     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01761     & ifmt_cm32rd, { 0x4c0000a9 }
01762   },
01763 /* cm32si $rd,$rt */
01764   {
01765     { 0, 0, 0, 0 },
01766     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01767     & ifmt_cm32rd, { 0x4c0000ac }
01768   },
01769 /* cm32ss $rd,$rs,$rt */
01770   {
01771     { 0, 0, 0, 0 },
01772     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01773     & ifmt_cm32and, { 0x4c0000a8 }
01774   },
01775 /* cm32xor $rd,$rs,$rt */
01776   {
01777     { 0, 0, 0, 0 },
01778     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01779     & ifmt_cm32and, { 0x4c0000a2 }
01780   },
01781 /* cm64clr $rd,$rt */
01782   {
01783     { 0, 0, 0, 0 },
01784     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01785     & ifmt_cm32rd, { 0x4c000085 }
01786   },
01787 /* cm64ra $rd,$rs,$rt */
01788   {
01789     { 0, 0, 0, 0 },
01790     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01791     & ifmt_cm32and, { 0x4c000090 }
01792   },
01793 /* cm64rd $rd,$rt */
01794   {
01795     { 0, 0, 0, 0 },
01796     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01797     & ifmt_cm32rd, { 0x4c000081 }
01798   },
01799 /* cm64ri $rd,$rt */
01800   {
01801     { 0, 0, 0, 0 },
01802     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01803     & ifmt_cm32rd, { 0x4c000084 }
01804   },
01805 /* cm64ria2 $rd,$rs,$rt */
01806   {
01807     { 0, 0, 0, 0 },
01808     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01809     & ifmt_cm32and, { 0x4c000094 }
01810   },
01811 /* cm64rs $rd,$rs,$rt */
01812   {
01813     { 0, 0, 0, 0 },
01814     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01815     & ifmt_cm32and, { 0x4c000080 }
01816   },
01817 /* cm64sa $rd,$rs,$rt */
01818   {
01819     { 0, 0, 0, 0 },
01820     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01821     & ifmt_cm32and, { 0x4c000098 }
01822   },
01823 /* cm64sd $rd,$rt */
01824   {
01825     { 0, 0, 0, 0 },
01826     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01827     & ifmt_cm32rd, { 0x4c000089 }
01828   },
01829 /* cm64si $rd,$rt */
01830   {
01831     { 0, 0, 0, 0 },
01832     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01833     & ifmt_cm32rd, { 0x4c00008c }
01834   },
01835 /* cm64sia2 $rd,$rs,$rt */
01836   {
01837     { 0, 0, 0, 0 },
01838     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01839     & ifmt_cm32and, { 0x4c00009c }
01840   },
01841 /* cm64ss $rd,$rs,$rt */
01842   {
01843     { 0, 0, 0, 0 },
01844     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01845     & ifmt_cm32and, { 0x4c000088 }
01846   },
01847 /* cm128ria2 $rd,$rs,$rt */
01848   {
01849     { 0, 0, 0, 0 },
01850     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01851     & ifmt_cm32and, { 0x4c000095 }
01852   },
01853 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
01854   {
01855     { 0, 0, 0, 0 },
01856     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
01857     & ifmt_cm128ria3, { 0x4c000090 }
01858   },
01859 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
01860   {
01861     { 0, 0, 0, 0 },
01862     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
01863     & ifmt_cm128ria4, { 0x4c0000b0 }
01864   },
01865 /* cm128sia2 $rd,$rs,$rt */
01866   {
01867     { 0, 0, 0, 0 },
01868     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01869     & ifmt_cm32and, { 0x4c00009d }
01870   },
01871 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
01872   {
01873     { 0, 0, 0, 0 },
01874     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
01875     & ifmt_cm128ria3, { 0x4c000098 }
01876   },
01877 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
01878   {
01879     { 0, 0, 0, 0 },
01880     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
01881     & ifmt_cm128ria4, { 0x4c0000b8 }
01882   },
01883 /* cm128vsa $rd,$rs,$rt */
01884   {
01885     { 0, 0, 0, 0 },
01886     { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
01887     & ifmt_cm32and, { 0x4c0000a6 }
01888   },
01889 /* cfc $rd,$rt */
01890   {
01891     { 0, 0, 0, 0 },
01892     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
01893     & ifmt_chkhdr, { 0x4c000000 }
01894   },
01895 /* ctc $rs,$rt */
01896   {
01897     { 0, 0, 0, 0 },
01898     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
01899     & ifmt_ctc, { 0x4c000002 }
01900   },
01901 };
01902 
01903 #undef A
01904 #undef OPERAND
01905 #undef MNEM
01906 #undef OP
01907 
01908 /* Formats for ALIAS macro-insns.  */
01909 
01910 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
01911 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
01912 #else
01913 #define F(f) & iq2000_cgen_ifld_table[IQ2000_f]
01914 #endif
01915 static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = {
01916   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01917 };
01918 
01919 static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = {
01920   32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01921 };
01922 
01923 static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = {
01924   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01925 };
01926 
01927 static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = {
01928   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01929 };
01930 
01931 static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = {
01932   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01933 };
01934 
01935 static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = {
01936   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01937 };
01938 
01939 static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = {
01940   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01941 };
01942 
01943 static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = {
01944   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01945 };
01946 
01947 static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = {
01948   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01949 };
01950 
01951 static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = {
01952   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01953 };
01954 
01955 static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = {
01956   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01957 };
01958 
01959 static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = {
01960   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01961 };
01962 
01963 static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = {
01964   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01965 };
01966 
01967 static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = {
01968   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01969 };
01970 
01971 static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = {
01972   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01973 };
01974 
01975 static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = {
01976   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01977 };
01978 
01979 static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = {
01980   32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01981 };
01982 
01983 static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = {
01984   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
01985 };
01986 
01987 static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = {
01988   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01989 };
01990 
01991 static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = {
01992   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01993 };
01994 
01995 static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = {
01996   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
01997 };
01998 
01999 static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = {
02000   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02001 };
02002 
02003 static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = {
02004   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02005 };
02006 
02007 static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = {
02008   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02009 };
02010 
02011 static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = {
02012   32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02013 };
02014 
02015 static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = {
02016   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02017 };
02018 
02019 static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = {
02020   32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
02021 };
02022 
02023 static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = {
02024   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02025 };
02026 
02027 static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = {
02028   32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
02029 };
02030 
02031 static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = {
02032   32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
02033 };
02034 
02035 static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = {
02036   32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
02037 };
02038 
02039 static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = {
02040   32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } }
02041 };
02042 
02043 static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = {
02044   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02045 };
02046 
02047 static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = {
02048   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02049 };
02050 
02051 static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = {
02052   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02053 };
02054 
02055 static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = {
02056   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02057 };
02058 
02059 static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = {
02060   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02061 };
02062 
02063 static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = {
02064   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02065 };
02066 
02067 static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = {
02068   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02069 };
02070 
02071 static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = {
02072   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02073 };
02074 
02075 static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = {
02076   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02077 };
02078 
02079 static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = {
02080   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02081 };
02082 
02083 static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = {
02084   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02085 };
02086 
02087 static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = {
02088   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02089 };
02090 
02091 static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = {
02092   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02093 };
02094 
02095 static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = {
02096   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02097 };
02098 
02099 static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = {
02100   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02101 };
02102 
02103 static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = {
02104   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02105 };
02106 
02107 static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = {
02108   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02109 };
02110 
02111 static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = {
02112   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02113 };
02114 
02115 static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = {
02116   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02117 };
02118 
02119 static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = {
02120   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02121 };
02122 
02123 static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = {
02124   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02125 };
02126 
02127 static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = {
02128   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02129 };
02130 
02131 static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = {
02132   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02133 };
02134 
02135 static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = {
02136   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02137 };
02138 
02139 static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = {
02140   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02141 };
02142 
02143 static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = {
02144   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02145 };
02146 
02147 static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = {
02148   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02149 };
02150 
02151 static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = {
02152   32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
02153 };
02154 
02155 static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = {
02156   32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
02157 };
02158 
02159 static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = {
02160   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
02161 };
02162 
02163 static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = {
02164   32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } }
02165 };
02166 
02167 static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = {
02168   32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } }
02169 };
02170 
02171 static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = {
02172   32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02173 };
02174 
02175 static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = {
02176   32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02177 };
02178 
02179 static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = {
02180   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02181 };
02182 
02183 static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = {
02184   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02185 };
02186 
02187 static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = {
02188   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02189 };
02190 
02191 static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = {
02192   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02193 };
02194 
02195 static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = {
02196   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02197 };
02198 
02199 static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = {
02200   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02201 };
02202 
02203 static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = {
02204   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02205 };
02206 
02207 static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = {
02208   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02209 };
02210 
02211 static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = {
02212   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02213 };
02214 
02215 static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = {
02216   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02217 };
02218 
02219 static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = {
02220   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02221 };
02222 
02223 static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = {
02224   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02225 };
02226 
02227 static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = {
02228   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02229 };
02230 
02231 static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = {
02232   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02233 };
02234 
02235 static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = {
02236   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02237 };
02238 
02239 static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = {
02240   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02241 };
02242 
02243 static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = {
02244   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02245 };
02246 
02247 static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = {
02248   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02249 };
02250 
02251 static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = {
02252   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02253 };
02254 
02255 static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = {
02256   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02257 };
02258 
02259 static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = {
02260   32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02261 };
02262 
02263 static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = {
02264   32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02265 };
02266 
02267 static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = {
02268   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02269 };
02270 
02271 static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = {
02272   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02273 };
02274 
02275 static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = {
02276   32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
02277 };
02278 
02279 static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = {
02280   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02281 };
02282 
02283 static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = {
02284   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02285 };
02286 
02287 static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = {
02288   32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
02289 };
02290 
02291 #undef F
02292 
02293 /* Each non-simple macro entry points to an array of expansion possibilities.  */
02294 
02295 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
02296 #define A(a) (1 << CGEN_INSN_##a)
02297 #else
02298 #define A(a) (1 << CGEN_INSN_a)
02299 #endif
02300 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
02301 #define OPERAND(op) IQ2000_OPERAND_##op
02302 #else
02303 #define OPERAND(op) IQ2000_OPERAND_op
02304 #endif
02305 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
02306 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
02307 
02308 /* The macro instruction table.  */
02309 
02310 static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
02311 {
02312 /* nop */
02313   {
02314     -1, "nop", "nop", 32,
02315     { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02316   },
02317 /* li $rs,$imm */
02318   {
02319     -1, "li", "li", 32,
02320     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02321   },
02322 /* move $rd,$rt */
02323   {
02324     -1, "move", "move", 32,
02325     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02326   },
02327 /* lb $rt,$lo16 */
02328   {
02329     -1, "lb-base-0", "lb", 32,
02330     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02331   },
02332 /* lbu $rt,$lo16 */
02333   {
02334     -1, "lbu-base-0", "lbu", 32,
02335     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02336   },
02337 /* lh $rt,$lo16 */
02338   {
02339     -1, "lh-base-0", "lh", 32,
02340     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02341   },
02342 /* lw $rt,$lo16 */
02343   {
02344     -1, "lw-base-0", "lw", 32,
02345     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02346   },
02347 /* add $rt,$rs,$lo16 */
02348   {
02349     -1, "m-add", "add", 32,
02350     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02351   },
02352 /* addu $rt,$rs,$lo16 */
02353   {
02354     -1, "m-addu", "addu", 32,
02355     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02356   },
02357 /* and $rt,$rs,$lo16 */
02358   {
02359     -1, "m-and", "and", 32,
02360     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02361   },
02362 /* j $rs */
02363   {
02364     -1, "m-j", "j", 32,
02365     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02366   },
02367 /* or $rt,$rs,$lo16 */
02368   {
02369     -1, "m-or", "or", 32,
02370     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02371   },
02372 /* sll $rd,$rt,$rs */
02373   {
02374     -1, "m-sll", "sll", 32,
02375     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02376   },
02377 /* slt $rt,$rs,$imm */
02378   {
02379     -1, "m-slt", "slt", 32,
02380     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02381   },
02382 /* sltu $rt,$rs,$imm */
02383   {
02384     -1, "m-sltu", "sltu", 32,
02385     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02386   },
02387 /* sra $rd,$rt,$rs */
02388   {
02389     -1, "m-sra", "sra", 32,
02390     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02391   },
02392 /* srl $rd,$rt,$rs */
02393   {
02394     -1, "m-srl", "srl", 32,
02395     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02396   },
02397 /* not $rd,$rt */
02398   {
02399     -1, "not", "not", 32,
02400     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02401   },
02402 /* subi $rt,$rs,$mlo16 */
02403   {
02404     -1, "subi", "subi", 32,
02405     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02406   },
02407 /* sub $rt,$rs,$mlo16 */
02408   {
02409     -1, "m-sub", "sub", 32,
02410     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02411   },
02412 /* subu $rt,$rs,$mlo16 */
02413   {
02414     -1, "m-subu", "subu", 32,
02415     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02416   },
02417 /* sb $rt,$lo16 */
02418   {
02419     -1, "sb-base-0", "sb", 32,
02420     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02421   },
02422 /* sh $rt,$lo16 */
02423   {
02424     -1, "sh-base-0", "sh", 32,
02425     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02426   },
02427 /* sw $rt,$lo16 */
02428   {
02429     -1, "sw-base-0", "sw", 32,
02430     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02431   },
02432 /* xor $rt,$rs,$lo16 */
02433   {
02434     -1, "m-xor", "xor", 32,
02435     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
02436   },
02437 /* ldw $rt,$lo16 */
02438   {
02439     -1, "ldw-base-0", "ldw", 32,
02440     { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
02441   },
02442 /* sdw $rt,$lo16 */
02443   {
02444     -1, "sdw-base-0", "sdw", 32,
02445     { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
02446   },
02447 /* avail */
02448   {
02449     -1, "m-avail", "avail", 32,
02450     { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02451   },
02452 /* cam36 $rd,$rt,${cam-z} */
02453   {
02454     -1, "m-cam36", "cam36", 32,
02455     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02456   },
02457 /* cam72 $rd,$rt,${cam-z} */
02458   {
02459     -1, "m-cam72", "cam72", 32,
02460     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02461   },
02462 /* cam144 $rd,$rt,${cam-z} */
02463   {
02464     -1, "m-cam144", "cam144", 32,
02465     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02466   },
02467 /* cam288 $rd,$rt,${cam-z} */
02468   {
02469     -1, "m-cam288", "cam288", 32,
02470     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02471   },
02472 /* cm32read $rd,$rt */
02473   {
02474     -1, "m-cm32read", "cm32read", 32,
02475     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02476   },
02477 /* cm64read $rd,$rt */
02478   {
02479     -1, "m-cm64read", "cm64read", 32,
02480     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02481   },
02482 /* cm32mlog $rs,$rt */
02483   {
02484     -1, "m-cm32mlog", "cm32mlog", 32,
02485     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02486   },
02487 /* cm32and $rs,$rt */
02488   {
02489     -1, "m-cm32and", "cm32and", 32,
02490     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02491   },
02492 /* cm32andn $rs,$rt */
02493   {
02494     -1, "m-cm32andn", "cm32andn", 32,
02495     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02496   },
02497 /* cm32or $rs,$rt */
02498   {
02499     -1, "m-cm32or", "cm32or", 32,
02500     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02501   },
02502 /* cm32ra $rs,$rt */
02503   {
02504     -1, "m-cm32ra", "cm32ra", 32,
02505     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02506   },
02507 /* cm32rd $rt */
02508   {
02509     -1, "m-cm32rd", "cm32rd", 32,
02510     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02511   },
02512 /* cm32ri $rt */
02513   {
02514     -1, "m-cm32ri", "cm32ri", 32,
02515     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02516   },
02517 /* cm32rs $rs,$rt */
02518   {
02519     -1, "m-cm32rs", "cm32rs", 32,
02520     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02521   },
02522 /* cm32sa $rs,$rt */
02523   {
02524     -1, "m-cm32sa", "cm32sa", 32,
02525     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02526   },
02527 /* cm32sd $rt */
02528   {
02529     -1, "m-cm32sd", "cm32sd", 32,
02530     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02531   },
02532 /* cm32si $rt */
02533   {
02534     -1, "m-cm32si", "cm32si", 32,
02535     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02536   },
02537 /* cm32ss $rs,$rt */
02538   {
02539     -1, "m-cm32ss", "cm32ss", 32,
02540     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02541   },
02542 /* cm32xor $rs,$rt */
02543   {
02544     -1, "m-cm32xor", "cm32xor", 32,
02545     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02546   },
02547 /* cm64clr $rt */
02548   {
02549     -1, "m-cm64clr", "cm64clr", 32,
02550     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02551   },
02552 /* cm64ra $rs,$rt */
02553   {
02554     -1, "m-cm64ra", "cm64ra", 32,
02555     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02556   },
02557 /* cm64rd $rt */
02558   {
02559     -1, "m-cm64rd", "cm64rd", 32,
02560     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02561   },
02562 /* cm64ri $rt */
02563   {
02564     -1, "m-cm64ri", "cm64ri", 32,
02565     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02566   },
02567 /* cm64ria2 $rs,$rt */
02568   {
02569     -1, "m-cm64ria2", "cm64ria2", 32,
02570     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02571   },
02572 /* cm64rs $rs,$rt */
02573   {
02574     -1, "m-cm64rs", "cm64rs", 32,
02575     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02576   },
02577 /* cm64sa $rs,$rt */
02578   {
02579     -1, "m-cm64sa", "cm64sa", 32,
02580     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02581   },
02582 /* cm64sd $rt */
02583   {
02584     -1, "m-cm64sd", "cm64sd", 32,
02585     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02586   },
02587 /* cm64si $rt */
02588   {
02589     -1, "m-cm64si", "cm64si", 32,
02590     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02591   },
02592 /* cm64sia2 $rs,$rt */
02593   {
02594     -1, "m-cm64sia2", "cm64sia2", 32,
02595     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02596   },
02597 /* cm64ss $rs,$rt */
02598   {
02599     -1, "m-cm64ss", "cm64ss", 32,
02600     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02601   },
02602 /* cm128ria2 $rs,$rt */
02603   {
02604     -1, "m-cm128ria2", "cm128ria2", 32,
02605     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02606   },
02607 /* cm128ria3 $rs,$rt,${cm-3z} */
02608   {
02609     -1, "m-cm128ria3", "cm128ria3", 32,
02610     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02611   },
02612 /* cm128ria4 $rs,$rt,${cm-4z} */
02613   {
02614     -1, "m-cm128ria4", "cm128ria4", 32,
02615     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02616   },
02617 /* cm128sia2 $rs,$rt */
02618   {
02619     -1, "m-cm128sia2", "cm128sia2", 32,
02620     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02621   },
02622 /* cm128sia3 $rs,$rt,${cm-3z} */
02623   {
02624     -1, "m-cm128sia3", "cm128sia3", 32,
02625     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02626   },
02627 /* cm128sia4 $rs,$rt,${cm-4z} */
02628   {
02629     -1, "m-cm128sia4", "cm128sia4", 32,
02630     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02631   },
02632 /* cmphdr */
02633   {
02634     -1, "m-cmphdr", "cmphdr", 32,
02635     { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02636   },
02637 /* dbd $rd,$rt */
02638   {
02639     -1, "m-dbd", "dbd", 32,
02640     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02641   },
02642 /* dbd $rt */
02643   {
02644     -1, "m2-dbd", "dbd", 32,
02645     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02646   },
02647 /* dpwt $rs */
02648   {
02649     -1, "m-dpwt", "dpwt", 32,
02650     { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02651   },
02652 /* free $rs */
02653   {
02654     -1, "m-free", "free", 32,
02655     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02656   },
02657 /* lock $rt */
02658   {
02659     -1, "m-lock", "lock", 32,
02660     { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02661   },
02662 /* pkrla $rs,$rt */
02663   {
02664     -1, "m-pkrla", "pkrla", 32,
02665     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02666   },
02667 /* pkrlac $rs,$rt */
02668   {
02669     -1, "m-pkrlac", "pkrlac", 32,
02670     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02671   },
02672 /* pkrlah $rs,$rt */
02673   {
02674     -1, "m-pkrlah", "pkrlah", 32,
02675     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02676   },
02677 /* pkrlau $rs,$rt */
02678   {
02679     -1, "m-pkrlau", "pkrlau", 32,
02680     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02681   },
02682 /* pkrli $rs,$rt,$bytecount */
02683   {
02684     -1, "m-pkrli", "pkrli", 32,
02685     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02686   },
02687 /* pkrlic $rs,$rt,$bytecount */
02688   {
02689     -1, "m-pkrlic", "pkrlic", 32,
02690     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02691   },
02692 /* pkrlih $rs,$rt,$bytecount */
02693   {
02694     -1, "m-pkrlih", "pkrlih", 32,
02695     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02696   },
02697 /* pkrliu $rs,$rt,$bytecount */
02698   {
02699     -1, "m-pkrliu", "pkrliu", 32,
02700     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02701   },
02702 /* rba $rs,$rt */
02703   {
02704     -1, "m-rba", "rba", 32,
02705     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02706   },
02707 /* rbal $rs,$rt */
02708   {
02709     -1, "m-rbal", "rbal", 32,
02710     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02711   },
02712 /* rbar $rs,$rt */
02713   {
02714     -1, "m-rbar", "rbar", 32,
02715     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02716   },
02717 /* rbi $rs,$rt,$bytecount */
02718   {
02719     -1, "m-rbi", "rbi", 32,
02720     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02721   },
02722 /* rbil $rs,$rt,$bytecount */
02723   {
02724     -1, "m-rbil", "rbil", 32,
02725     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02726   },
02727 /* rbir $rs,$rt,$bytecount */
02728   {
02729     -1, "m-rbir", "rbir", 32,
02730     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02731   },
02732 /* swwr $rs,$rt */
02733   {
02734     -1, "m-swwr", "swwr", 32,
02735     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02736   },
02737 /* swwru $rs,$rt */
02738   {
02739     -1, "m-swwru", "swwru", 32,
02740     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02741   },
02742 /* tstod $rs */
02743   {
02744     -1, "m-tstod", "tstod", 32,
02745     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02746   },
02747 /* unlk $rt */
02748   {
02749     -1, "m-unlk", "unlk", 32,
02750     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02751   },
02752 /* wba $rs,$rt */
02753   {
02754     -1, "m-wba", "wba", 32,
02755     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02756   },
02757 /* wbac $rs,$rt */
02758   {
02759     -1, "m-wbac", "wbac", 32,
02760     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02761   },
02762 /* wbau $rs,$rt */
02763   {
02764     -1, "m-wbau", "wbau", 32,
02765     { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02766   },
02767 /* wbi $rs,$rt,$bytecount */
02768   {
02769     -1, "m-wbi", "wbi", 32,
02770     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02771   },
02772 /* wbic $rs,$rt,$bytecount */
02773   {
02774     -1, "m-wbic", "wbic", 32,
02775     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02776   },
02777 /* wbiu $rs,$rt,$bytecount */
02778   {
02779     -1, "m-wbiu", "wbiu", 32,
02780     { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
02781   },
02782 };
02783 
02784 /* The macro instruction opcode table.  */
02785 
02786 static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
02787 {
02788 /* nop */
02789   {
02790     { 0, 0, 0, 0 },
02791     { { MNEM, 0 } },
02792     & ifmt_nop, { 0x0 }
02793   },
02794 /* li $rs,$imm */
02795   {
02796     { 0, 0, 0, 0 },
02797     { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
02798     & ifmt_li, { 0x34000000 }
02799   },
02800 /* move $rd,$rt */
02801   {
02802     { 0, 0, 0, 0 },
02803     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
02804     & ifmt_move, { 0x25 }
02805   },
02806 /* lb $rt,$lo16 */
02807   {
02808     { 0, 0, 0, 0 },
02809     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02810     & ifmt_lb_base_0, { 0x80000000 }
02811   },
02812 /* lbu $rt,$lo16 */
02813   {
02814     { 0, 0, 0, 0 },
02815     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02816     & ifmt_lbu_base_0, { 0x90000000 }
02817   },
02818 /* lh $rt,$lo16 */
02819   {
02820     { 0, 0, 0, 0 },
02821     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02822     & ifmt_lh_base_0, { 0x84000000 }
02823   },
02824 /* lw $rt,$lo16 */
02825   {
02826     { 0, 0, 0, 0 },
02827     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02828     & ifmt_lw_base_0, { 0x8c000000 }
02829   },
02830 /* add $rt,$rs,$lo16 */
02831   {
02832     { 0, 0, 0, 0 },
02833     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
02834     & ifmt_m_add, { 0x20000000 }
02835   },
02836 /* addu $rt,$rs,$lo16 */
02837   {
02838     { 0, 0, 0, 0 },
02839     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
02840     & ifmt_m_addu, { 0x24000000 }
02841   },
02842 /* and $rt,$rs,$lo16 */
02843   {
02844     { 0, 0, 0, 0 },
02845     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
02846     & ifmt_m_and, { 0x30000000 }
02847   },
02848 /* j $rs */
02849   {
02850     { 0, 0, 0, 0 },
02851     { { MNEM, ' ', OP (RS), 0 } },
02852     & ifmt_m_j, { 0x8 }
02853   },
02854 /* or $rt,$rs,$lo16 */
02855   {
02856     { 0, 0, 0, 0 },
02857     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
02858     & ifmt_m_or, { 0x34000000 }
02859   },
02860 /* sll $rd,$rt,$rs */
02861   {
02862     { 0, 0, 0, 0 },
02863     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
02864     & ifmt_m_sll, { 0x4 }
02865   },
02866 /* slt $rt,$rs,$imm */
02867   {
02868     { 0, 0, 0, 0 },
02869     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
02870     & ifmt_m_slt, { 0x28000000 }
02871   },
02872 /* sltu $rt,$rs,$imm */
02873   {
02874     { 0, 0, 0, 0 },
02875     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
02876     & ifmt_m_sltu, { 0x2c000000 }
02877   },
02878 /* sra $rd,$rt,$rs */
02879   {
02880     { 0, 0, 0, 0 },
02881     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
02882     & ifmt_m_sra, { 0x7 }
02883   },
02884 /* srl $rd,$rt,$rs */
02885   {
02886     { 0, 0, 0, 0 },
02887     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
02888     & ifmt_m_srl, { 0x6 }
02889   },
02890 /* not $rd,$rt */
02891   {
02892     { 0, 0, 0, 0 },
02893     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
02894     & ifmt_not, { 0x27 }
02895   },
02896 /* subi $rt,$rs,$mlo16 */
02897   {
02898     { 0, 0, 0, 0 },
02899     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
02900     & ifmt_subi, { 0x24000000 }
02901   },
02902 /* sub $rt,$rs,$mlo16 */
02903   {
02904     { 0, 0, 0, 0 },
02905     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
02906     & ifmt_m_sub, { 0x24000000 }
02907   },
02908 /* subu $rt,$rs,$mlo16 */
02909   {
02910     { 0, 0, 0, 0 },
02911     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
02912     & ifmt_m_subu, { 0x24000000 }
02913   },
02914 /* sb $rt,$lo16 */
02915   {
02916     { 0, 0, 0, 0 },
02917     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02918     & ifmt_sb_base_0, { 0xa0000000 }
02919   },
02920 /* sh $rt,$lo16 */
02921   {
02922     { 0, 0, 0, 0 },
02923     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02924     & ifmt_sh_base_0, { 0xa4000000 }
02925   },
02926 /* sw $rt,$lo16 */
02927   {
02928     { 0, 0, 0, 0 },
02929     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02930     & ifmt_sw_base_0, { 0xac000000 }
02931   },
02932 /* xor $rt,$rs,$lo16 */
02933   {
02934     { 0, 0, 0, 0 },
02935     { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
02936     & ifmt_m_xor, { 0x38000000 }
02937   },
02938 /* ldw $rt,$lo16 */
02939   {
02940     { 0, 0, 0, 0 },
02941     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02942     & ifmt_ldw_base_0, { 0xc0000000 }
02943   },
02944 /* sdw $rt,$lo16 */
02945   {
02946     { 0, 0, 0, 0 },
02947     { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
02948     & ifmt_sdw_base_0, { 0xe0000000 }
02949   },
02950 /* avail */
02951   {
02952     { 0, 0, 0, 0 },
02953     { { MNEM, 0 } },
02954     & ifmt_m_avail, { 0x4c000024 }
02955   },
02956 /* cam36 $rd,$rt,${cam-z} */
02957   {
02958     { 0, 0, 0, 0 },
02959     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
02960     & ifmt_m_cam36, { 0x4c000400 }
02961   },
02962 /* cam72 $rd,$rt,${cam-z} */
02963   {
02964     { 0, 0, 0, 0 },
02965     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
02966     & ifmt_m_cam72, { 0x4c000440 }
02967   },
02968 /* cam144 $rd,$rt,${cam-z} */
02969   {
02970     { 0, 0, 0, 0 },
02971     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
02972     & ifmt_m_cam144, { 0x4c000480 }
02973   },
02974 /* cam288 $rd,$rt,${cam-z} */
02975   {
02976     { 0, 0, 0, 0 },
02977     { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
02978     & ifmt_m_cam288, { 0x4c0004c0 }
02979   },
02980 /* cm32read $rd,$rt */
02981   {
02982     { 0, 0, 0, 0 },
02983     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
02984     & ifmt_m_cm32read, { 0x4c0000b0 }
02985   },
02986 /* cm64read $rd,$rt */
02987   {
02988     { 0, 0, 0, 0 },
02989     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
02990     & ifmt_m_cm64read, { 0x4c000090 }
02991   },
02992 /* cm32mlog $rs,$rt */
02993   {
02994     { 0, 0, 0, 0 },
02995     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
02996     & ifmt_m_cm32mlog, { 0x4c0000aa }
02997   },
02998 /* cm32and $rs,$rt */
02999   {
03000     { 0, 0, 0, 0 },
03001     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03002     & ifmt_m_cm32and, { 0x4c0000ab }
03003   },
03004 /* cm32andn $rs,$rt */
03005   {
03006     { 0, 0, 0, 0 },
03007     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03008     & ifmt_m_cm32andn, { 0x4c0000a3 }
03009   },
03010 /* cm32or $rs,$rt */
03011   {
03012     { 0, 0, 0, 0 },
03013     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03014     & ifmt_m_cm32or, { 0x4c0000aa }
03015   },
03016 /* cm32ra $rs,$rt */
03017   {
03018     { 0, 0, 0, 0 },
03019     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03020     & ifmt_m_cm32ra, { 0x4c0000b0 }
03021   },
03022 /* cm32rd $rt */
03023   {
03024     { 0, 0, 0, 0 },
03025     { { MNEM, ' ', OP (RT), 0 } },
03026     & ifmt_m_cm32rd, { 0x4c0000a1 }
03027   },
03028 /* cm32ri $rt */
03029   {
03030     { 0, 0, 0, 0 },
03031     { { MNEM, ' ', OP (RT), 0 } },
03032     & ifmt_m_cm32ri, { 0x4c0000a4 }
03033   },
03034 /* cm32rs $rs,$rt */
03035   {
03036     { 0, 0, 0, 0 },
03037     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03038     & ifmt_m_cm32rs, { 0x4c0000a0 }
03039   },
03040 /* cm32sa $rs,$rt */
03041   {
03042     { 0, 0, 0, 0 },
03043     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03044     & ifmt_m_cm32sa, { 0x4c0000b8 }
03045   },
03046 /* cm32sd $rt */
03047   {
03048     { 0, 0, 0, 0 },
03049     { { MNEM, ' ', OP (RT), 0 } },
03050     & ifmt_m_cm32sd, { 0x4c0000a9 }
03051   },
03052 /* cm32si $rt */
03053   {
03054     { 0, 0, 0, 0 },
03055     { { MNEM, ' ', OP (RT), 0 } },
03056     & ifmt_m_cm32si, { 0x4c0000ac }
03057   },
03058 /* cm32ss $rs,$rt */
03059   {
03060     { 0, 0, 0, 0 },
03061     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03062     & ifmt_m_cm32ss, { 0x4c0000a8 }
03063   },
03064 /* cm32xor $rs,$rt */
03065   {
03066     { 0, 0, 0, 0 },
03067     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03068     & ifmt_m_cm32xor, { 0x4c0000a2 }
03069   },
03070 /* cm64clr $rt */
03071   {
03072     { 0, 0, 0, 0 },
03073     { { MNEM, ' ', OP (RT), 0 } },
03074     & ifmt_m_cm64clr, { 0x4c000085 }
03075   },
03076 /* cm64ra $rs,$rt */
03077   {
03078     { 0, 0, 0, 0 },
03079     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03080     & ifmt_m_cm64ra, { 0x4c000090 }
03081   },
03082 /* cm64rd $rt */
03083   {
03084     { 0, 0, 0, 0 },
03085     { { MNEM, ' ', OP (RT), 0 } },
03086     & ifmt_m_cm64rd, { 0x4c000081 }
03087   },
03088 /* cm64ri $rt */
03089   {
03090     { 0, 0, 0, 0 },
03091     { { MNEM, ' ', OP (RT), 0 } },
03092     & ifmt_m_cm64ri, { 0x4c000084 }
03093   },
03094 /* cm64ria2 $rs,$rt */
03095   {
03096     { 0, 0, 0, 0 },
03097     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03098     & ifmt_m_cm64ria2, { 0x4c000094 }
03099   },
03100 /* cm64rs $rs,$rt */
03101   {
03102     { 0, 0, 0, 0 },
03103     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03104     & ifmt_m_cm64rs, { 0x4c000080 }
03105   },
03106 /* cm64sa $rs,$rt */
03107   {
03108     { 0, 0, 0, 0 },
03109     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03110     & ifmt_m_cm64sa, { 0x4c000098 }
03111   },
03112 /* cm64sd $rt */
03113   {
03114     { 0, 0, 0, 0 },
03115     { { MNEM, ' ', OP (RT), 0 } },
03116     & ifmt_m_cm64sd, { 0x4c000089 }
03117   },
03118 /* cm64si $rt */
03119   {
03120     { 0, 0, 0, 0 },
03121     { { MNEM, ' ', OP (RT), 0 } },
03122     & ifmt_m_cm64si, { 0x4c00008c }
03123   },
03124 /* cm64sia2 $rs,$rt */
03125   {
03126     { 0, 0, 0, 0 },
03127     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03128     & ifmt_m_cm64sia2, { 0x4c00009c }
03129   },
03130 /* cm64ss $rs,$rt */
03131   {
03132     { 0, 0, 0, 0 },
03133     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03134     & ifmt_m_cm64ss, { 0x4c000088 }
03135   },
03136 /* cm128ria2 $rs,$rt */
03137   {
03138     { 0, 0, 0, 0 },
03139     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03140     & ifmt_m_cm128ria2, { 0x4c000095 }
03141   },
03142 /* cm128ria3 $rs,$rt,${cm-3z} */
03143   {
03144     { 0, 0, 0, 0 },
03145     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
03146     & ifmt_m_cm128ria3, { 0x4c000090 }
03147   },
03148 /* cm128ria4 $rs,$rt,${cm-4z} */
03149   {
03150     { 0, 0, 0, 0 },
03151     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
03152     & ifmt_m_cm128ria4, { 0x4c0000b0 }
03153   },
03154 /* cm128sia2 $rs,$rt */
03155   {
03156     { 0, 0, 0, 0 },
03157     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03158     & ifmt_m_cm128sia2, { 0x4c00009d }
03159   },
03160 /* cm128sia3 $rs,$rt,${cm-3z} */
03161   {
03162     { 0, 0, 0, 0 },
03163     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
03164     & ifmt_m_cm128sia3, { 0x4c000098 }
03165   },
03166 /* cm128sia4 $rs,$rt,${cm-4z} */
03167   {
03168     { 0, 0, 0, 0 },
03169     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
03170     & ifmt_m_cm128sia4, { 0x4c0000b8 }
03171   },
03172 /* cmphdr */
03173   {
03174     { 0, 0, 0, 0 },
03175     { { MNEM, 0 } },
03176     & ifmt_m_cmphdr, { 0x4c00002c }
03177   },
03178 /* dbd $rd,$rt */
03179   {
03180     { 0, 0, 0, 0 },
03181     { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
03182     & ifmt_m_dbd, { 0x4c000021 }
03183   },
03184 /* dbd $rt */
03185   {
03186     { 0, 0, 0, 0 },
03187     { { MNEM, ' ', OP (RT), 0 } },
03188     & ifmt_m2_dbd, { 0x4c000021 }
03189   },
03190 /* dpwt $rs */
03191   {
03192     { 0, 0, 0, 0 },
03193     { { MNEM, ' ', OP (RS), 0 } },
03194     & ifmt_m_dpwt, { 0x4c000023 }
03195   },
03196 /* free $rs */
03197   {
03198     { 0, 0, 0, 0 },
03199     { { MNEM, ' ', OP (RS), 0 } },
03200     & ifmt_m_free, { 0x4c000025 }
03201   },
03202 /* lock $rt */
03203   {
03204     { 0, 0, 0, 0 },
03205     { { MNEM, ' ', OP (RT), 0 } },
03206     & ifmt_m_lock, { 0x4c000001 }
03207   },
03208 /* pkrla $rs,$rt */
03209   {
03210     { 0, 0, 0, 0 },
03211     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03212     & ifmt_m_pkrla, { 0x4c000028 }
03213   },
03214 /* pkrlac $rs,$rt */
03215   {
03216     { 0, 0, 0, 0 },
03217     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03218     & ifmt_m_pkrlac, { 0x4c00002b }
03219   },
03220 /* pkrlah $rs,$rt */
03221   {
03222     { 0, 0, 0, 0 },
03223     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03224     & ifmt_m_pkrlah, { 0x4c00002a }
03225   },
03226 /* pkrlau $rs,$rt */
03227   {
03228     { 0, 0, 0, 0 },
03229     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03230     & ifmt_m_pkrlau, { 0x4c000029 }
03231   },
03232 /* pkrli $rs,$rt,$bytecount */
03233   {
03234     { 0, 0, 0, 0 },
03235     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03236     & ifmt_m_pkrli, { 0x48000000 }
03237   },
03238 /* pkrlic $rs,$rt,$bytecount */
03239   {
03240     { 0, 0, 0, 0 },
03241     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03242     & ifmt_m_pkrlic, { 0x48000300 }
03243   },
03244 /* pkrlih $rs,$rt,$bytecount */
03245   {
03246     { 0, 0, 0, 0 },
03247     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03248     & ifmt_m_pkrlih, { 0x48000200 }
03249   },
03250 /* pkrliu $rs,$rt,$bytecount */
03251   {
03252     { 0, 0, 0, 0 },
03253     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03254     & ifmt_m_pkrliu, { 0x48000100 }
03255   },
03256 /* rba $rs,$rt */
03257   {
03258     { 0, 0, 0, 0 },
03259     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03260     & ifmt_m_rba, { 0x4c000008 }
03261   },
03262 /* rbal $rs,$rt */
03263   {
03264     { 0, 0, 0, 0 },
03265     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03266     & ifmt_m_rbal, { 0x4c000009 }
03267   },
03268 /* rbar $rs,$rt */
03269   {
03270     { 0, 0, 0, 0 },
03271     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03272     & ifmt_m_rbar, { 0x4c00000a }
03273   },
03274 /* rbi $rs,$rt,$bytecount */
03275   {
03276     { 0, 0, 0, 0 },
03277     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03278     & ifmt_m_rbi, { 0x4c000200 }
03279   },
03280 /* rbil $rs,$rt,$bytecount */
03281   {
03282     { 0, 0, 0, 0 },
03283     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03284     & ifmt_m_rbil, { 0x4c000300 }
03285   },
03286 /* rbir $rs,$rt,$bytecount */
03287   {
03288     { 0, 0, 0, 0 },
03289     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03290     & ifmt_m_rbir, { 0x4c000100 }
03291   },
03292 /* swwr $rs,$rt */
03293   {
03294     { 0, 0, 0, 0 },
03295     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03296     & ifmt_m_swwr, { 0x4c000006 }
03297   },
03298 /* swwru $rs,$rt */
03299   {
03300     { 0, 0, 0, 0 },
03301     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03302     & ifmt_m_swwru, { 0x4c000007 }
03303   },
03304 /* tstod $rs */
03305   {
03306     { 0, 0, 0, 0 },
03307     { { MNEM, ' ', OP (RS), 0 } },
03308     & ifmt_m_tstod, { 0x4c000027 }
03309   },
03310 /* unlk $rt */
03311   {
03312     { 0, 0, 0, 0 },
03313     { { MNEM, ' ', OP (RT), 0 } },
03314     & ifmt_m_unlk, { 0x4c000003 }
03315   },
03316 /* wba $rs,$rt */
03317   {
03318     { 0, 0, 0, 0 },
03319     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03320     & ifmt_m_wba, { 0x4c000010 }
03321   },
03322 /* wbac $rs,$rt */
03323   {
03324     { 0, 0, 0, 0 },
03325     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03326     & ifmt_m_wbac, { 0x4c000012 }
03327   },
03328 /* wbau $rs,$rt */
03329   {
03330     { 0, 0, 0, 0 },
03331     { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
03332     & ifmt_m_wbau, { 0x4c000011 }
03333   },
03334 /* wbi $rs,$rt,$bytecount */
03335   {
03336     { 0, 0, 0, 0 },
03337     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03338     & ifmt_m_wbi, { 0x4c000600 }
03339   },
03340 /* wbic $rs,$rt,$bytecount */
03341   {
03342     { 0, 0, 0, 0 },
03343     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03344     & ifmt_m_wbic, { 0x4c000500 }
03345   },
03346 /* wbiu $rs,$rt,$bytecount */
03347   {
03348     { 0, 0, 0, 0 },
03349     { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
03350     & ifmt_m_wbiu, { 0x4c000700 }
03351   },
03352 };
03353 
03354 #undef A
03355 #undef OPERAND
03356 #undef MNEM
03357 #undef OP
03358 
03359 #ifndef CGEN_ASM_HASH_P
03360 #define CGEN_ASM_HASH_P(insn) 1
03361 #endif
03362 
03363 #ifndef CGEN_DIS_HASH_P
03364 #define CGEN_DIS_HASH_P(insn) 1
03365 #endif
03366 
03367 /* Return non-zero if INSN is to be added to the hash table.
03368    Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
03369 
03370 static int
03371 asm_hash_insn_p (insn)
03372      const CGEN_INSN *insn ATTRIBUTE_UNUSED;
03373 {
03374   return CGEN_ASM_HASH_P (insn);
03375 }
03376 
03377 static int
03378 dis_hash_insn_p (insn)
03379      const CGEN_INSN *insn;
03380 {
03381   /* If building the hash table and the NO-DIS attribute is present,
03382      ignore.  */
03383   if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
03384     return 0;
03385   return CGEN_DIS_HASH_P (insn);
03386 }
03387 
03388 #ifndef CGEN_ASM_HASH
03389 #define CGEN_ASM_HASH_SIZE 127
03390 #ifdef CGEN_MNEMONIC_OPERANDS
03391 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
03392 #else
03393 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
03394 #endif
03395 #endif
03396 
03397 /* It doesn't make much sense to provide a default here,
03398    but while this is under development we do.
03399    BUFFER is a pointer to the bytes of the insn, target order.
03400    VALUE is the first base_insn_bitsize bits as an int in host order.  */
03401 
03402 #ifndef CGEN_DIS_HASH
03403 #define CGEN_DIS_HASH_SIZE 256
03404 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
03405 #endif
03406 
03407 /* The result is the hash value of the insn.
03408    Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
03409 
03410 static unsigned int
03411 asm_hash_insn (mnem)
03412      const char * mnem;
03413 {
03414   return CGEN_ASM_HASH (mnem);
03415 }
03416 
03417 /* BUF is a pointer to the bytes of the insn, target order.
03418    VALUE is the first base_insn_bitsize bits as an int in host order.  */
03419 
03420 static unsigned int
03421 dis_hash_insn (buf, value)
03422      const char * buf ATTRIBUTE_UNUSED;
03423      CGEN_INSN_INT value ATTRIBUTE_UNUSED;
03424 {
03425   return CGEN_DIS_HASH (buf, value);
03426 }
03427 
03428 /* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
03429 
03430 static void
03431 set_fields_bitsize (CGEN_FIELDS *fields, int size)
03432 {
03433   CGEN_FIELDS_BITSIZE (fields) = size;
03434 }
03435 
03436 /* Function to call before using the operand instance table.
03437    This plugs the opcode entries and macro instructions into the cpu table.  */
03438 
03439 void
03440 iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd)
03441 {
03442   int i;
03443   int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
03444                   sizeof (iq2000_cgen_macro_insn_table[0]));
03445   const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
03446   const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
03447   CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
03448 
03449   memset (insns, 0, num_macros * sizeof (CGEN_INSN));
03450   for (i = 0; i < num_macros; ++i)
03451     {
03452       insns[i].base = &ib[i];
03453       insns[i].opcode = &oc[i];
03454       iq2000_cgen_build_insn_regex (& insns[i]);
03455     }
03456   cd->macro_insn_table.init_entries = insns;
03457   cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
03458   cd->macro_insn_table.num_init_entries = num_macros;
03459 
03460   oc = & iq2000_cgen_insn_opcode_table[0];
03461   insns = (CGEN_INSN *) cd->insn_table.init_entries;
03462   for (i = 0; i < MAX_INSNS; ++i)
03463     {
03464       insns[i].opcode = &oc[i];
03465       iq2000_cgen_build_insn_regex (& insns[i]);
03466     }
03467 
03468   cd->sizeof_fields = sizeof (CGEN_FIELDS);
03469   cd->set_fields_bitsize = set_fields_bitsize;
03470 
03471   cd->asm_hash_p = asm_hash_insn_p;
03472   cd->asm_hash = asm_hash_insn;
03473   cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
03474 
03475   cd->dis_hash_p = dis_hash_insn_p;
03476   cd->dis_hash = dis_hash_insn;
03477   cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
03478 }